Don't bail on error when scraping all (#4442)

This commit is contained in:
WithoutPants
2024-01-09 11:39:00 +11:00
committed by GitHub
parent 9859ec61fb
commit ca976a0994
3 changed files with 39 additions and 23 deletions

View File

@@ -24,6 +24,7 @@ import { useLocalForage } from "src/hooks/LocalForage";
import { useToast } from "src/hooks/Toast"; import { useToast } from "src/hooks/Toast";
import { ConfigurationContext } from "src/hooks/Config"; import { ConfigurationContext } from "src/hooks/Config";
import { ITaggerSource, SCRAPER_PREFIX, STASH_BOX_PREFIX } from "./constants"; import { ITaggerSource, SCRAPER_PREFIX, STASH_BOX_PREFIX } from "./constants";
import { errorToString } from "src/utils";
export interface ITaggerContextState { export interface ITaggerContextState {
config: ITaggerConfig; config: ITaggerConfig;
@@ -293,21 +294,29 @@ export const TaggerContext: React.FC = ({ children }) => {
return; return;
} }
const results = await queryScrapeScene(currentSource.sourceInput, sceneID);
let newResult: ISceneQueryResult; let newResult: ISceneQueryResult;
if (results.error) { try {
newResult = { error: results.error.message }; const results = await queryScrapeScene(
} else if (results.errors) { currentSource.sourceInput,
newResult = { error: results.errors.toString() }; sceneID
} else { );
newResult = {
results: results.data.scrapeSingleScene.map((r) => ({ if (results.error) {
...r, newResult = { error: results.error.message };
// scenes are already resolved if they are scraped via fragment } else if (results.errors) {
resolved: true, 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) => { setSearchResults((current) => {

View File

@@ -6,6 +6,7 @@ import React, {
useMemo, useMemo,
} from "react"; } from "react";
import { Toast } from "react-bootstrap"; import { Toast } from "react-bootstrap";
import { errorToString } from "src/utils";
interface IToast { interface IToast {
header?: string; header?: string;
@@ -67,16 +68,7 @@ export const useToast = () => {
}); });
}, },
error(error: unknown) { error(error: unknown) {
let message; const message = errorToString(error);
if (error instanceof Error) {
message = error.message;
}
if (!message) {
message = String(error);
}
if (!message) {
message = "Unknown error";
}
console.error(error); console.error(error);
addToast({ addToast({

View File

@@ -2,3 +2,18 @@ import { ApolloError } from "@apollo/client";
export const apolloError = (error: unknown) => export const apolloError = (error: unknown) =>
error instanceof ApolloError ? error.message : ""; 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;
}