diff --git a/ui/v2.5/src/components/Tagger/context.tsx b/ui/v2.5/src/components/Tagger/context.tsx index c572ec10c..cdbb5902f 100644 --- a/ui/v2.5/src/components/Tagger/context.tsx +++ b/ui/v2.5/src/components/Tagger/context.tsx @@ -24,6 +24,7 @@ import { useLocalForage } from "src/hooks/LocalForage"; import { useToast } from "src/hooks/Toast"; import { ConfigurationContext } from "src/hooks/Config"; import { ITaggerSource, SCRAPER_PREFIX, STASH_BOX_PREFIX } from "./constants"; +import { errorToString } from "src/utils"; export interface ITaggerContextState { config: ITaggerConfig; @@ -293,21 +294,29 @@ export const TaggerContext: React.FC = ({ children }) => { return; } - const results = await queryScrapeScene(currentSource.sourceInput, sceneID); let newResult: ISceneQueryResult; - if (results.error) { - newResult = { error: results.error.message }; - } else if (results.errors) { - newResult = { error: results.errors.toString() }; - } else { - newResult = { - results: results.data.scrapeSingleScene.map((r) => ({ - ...r, - // scenes are already resolved if they are scraped via fragment - resolved: true, - })), - }; + try { + const results = await queryScrapeScene( + currentSource.sourceInput, + sceneID + ); + + if (results.error) { + newResult = { error: results.error.message }; + } else if (results.errors) { + newResult = { error: results.errors.toString() }; + } else { + newResult = { + results: results.data.scrapeSingleScene.map((r) => ({ + ...r, + // scenes are already resolved if they are scraped via fragment + resolved: true, + })), + }; + } + } catch (err: unknown) { + newResult = { error: errorToString(err) }; } setSearchResults((current) => { diff --git a/ui/v2.5/src/hooks/Toast.tsx b/ui/v2.5/src/hooks/Toast.tsx index d8571067c..0868ac9fd 100644 --- a/ui/v2.5/src/hooks/Toast.tsx +++ b/ui/v2.5/src/hooks/Toast.tsx @@ -6,6 +6,7 @@ import React, { useMemo, } from "react"; import { Toast } from "react-bootstrap"; +import { errorToString } from "src/utils"; interface IToast { header?: string; @@ -67,16 +68,7 @@ export const useToast = () => { }); }, error(error: unknown) { - let message; - if (error instanceof Error) { - message = error.message; - } - if (!message) { - message = String(error); - } - if (!message) { - message = "Unknown error"; - } + const message = errorToString(error); console.error(error); addToast({ diff --git a/ui/v2.5/src/utils/errors.ts b/ui/v2.5/src/utils/errors.ts index 18c5eb259..f9dfef9dc 100644 --- a/ui/v2.5/src/utils/errors.ts +++ b/ui/v2.5/src/utils/errors.ts @@ -2,3 +2,18 @@ import { ApolloError } from "@apollo/client"; export const apolloError = (error: unknown) => error instanceof ApolloError ? error.message : ""; + +export function errorToString(error: unknown) { + let message; + if (error instanceof Error) { + message = error.message; + } + if (!message) { + message = String(error); + } + if (!message) { + message = "Unknown error"; + } + + return message; +}