diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 16318bc..3d2418d 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -57,7 +57,8 @@ fn main() { downloader::download_file, downloader::stop_download, lang::get_lang, - lang::get_languages + lang::get_languages, + web::valid_url ]) .run(tauri::generate_context!()) .expect("error while running tauri application"); diff --git a/src-tauri/src/web.rs b/src-tauri/src/web.rs index 420a05b..c155f86 100644 --- a/src-tauri/src/web.rs +++ b/src-tauri/src/web.rs @@ -5,4 +5,14 @@ pub(crate) async fn query(site: &str) -> String { let response = client.get(site).header(USER_AGENT, "cultivation").send().await.unwrap(); return response.text().await.unwrap(); +} + +#[tauri::command] +pub(crate) async fn valid_url(url: String) -> bool { + // Check if we get a 200 response + let client = reqwest::Client::new(); + + let response = client.get(url).header(USER_AGENT, "cultivation").send().await.unwrap(); + + return response.status().as_str() == "200"; } \ No newline at end of file diff --git a/src/ui/App.tsx b/src/ui/App.tsx index 5b8dce1..4822a5e 100644 --- a/src/ui/App.tsx +++ b/src/ui/App.tsx @@ -35,6 +35,8 @@ interface IState { bgFile: string; } +const DEFAULT_BG = 'https://webstatic.hoyoverse.com/upload/event/2020/11/04/7fd661b5184e1734f91f628b6f89a31f_7367318474207189623.png' + const downloadHandler = new DownloadHandler() class App extends React.Component { @@ -46,7 +48,7 @@ class App extends React.Component { miniDownloadsOpen: false, downloadsOpen: false, gameDownloadsOpen: false, - bgFile: 'https://webstatic.hoyoverse.com/upload/event/2020/11/04/7fd661b5184e1734f91f628b6f89a31f_7367318474207189623.png', + bgFile: DEFAULT_BG, } listen('lang_error', (payload) => { @@ -100,8 +102,13 @@ class App extends React.Component { bgFile: convertFileSrc(custom_bg) }, this.forceUpdate) } else { + // Check if URL returns a valid image. + const isValid = await invoke('valid_url', { + url: custom_bg + }) + this.setState({ - bgFile: custom_bg + bgFile: isValid ? custom_bg : DEFAULT_BG }, this.forceUpdate) } }