diff --git a/Screenshots/Screenshot 2025-03-19 at 02-38-47 Tranga.png b/Screenshots/Screenshot 2025-03-19 at 02-38-47 Tranga.png deleted file mode 100644 index 688ab0c..0000000 Binary files a/Screenshots/Screenshot 2025-03-19 at 02-38-47 Tranga.png and /dev/null differ diff --git a/Screenshots/Screenshot 2025-03-19 at 02-39-05 Tranga.png b/Screenshots/Screenshot 2025-03-19 at 02-39-05 Tranga.png deleted file mode 100644 index a2fea2a..0000000 Binary files a/Screenshots/Screenshot 2025-03-19 at 02-39-05 Tranga.png and /dev/null differ diff --git a/Screenshots/Screenshot 2025-03-19 at 02-39-45 Tranga.png b/Screenshots/Screenshot 2025-03-19 at 02-39-45 Tranga.png deleted file mode 100644 index fd543c1..0000000 Binary files a/Screenshots/Screenshot 2025-03-19 at 02-39-45 Tranga.png and /dev/null differ diff --git a/Screenshots/Screenshot 2025-03-19 at 02-39-52 Tranga.png b/Screenshots/Screenshot 2025-03-19 at 02-39-52 Tranga.png deleted file mode 100644 index 5f8d90c..0000000 Binary files a/Screenshots/Screenshot 2025-03-19 at 02-39-52 Tranga.png and /dev/null differ diff --git a/Screenshots/Screenshot 2025-03-19 at 02-39-58 Tranga.png b/Screenshots/Screenshot 2025-03-19 at 02-39-58 Tranga.png deleted file mode 100644 index 8e7b3bb..0000000 Binary files a/Screenshots/Screenshot 2025-03-19 at 02-39-58 Tranga.png and /dev/null differ diff --git a/Screenshots/Screenshot 2025-03-19 at 02-41-51 Tranga.png b/Screenshots/Screenshot 2025-03-19 at 02-41-51 Tranga.png deleted file mode 100644 index 338c1f0..0000000 Binary files a/Screenshots/Screenshot 2025-03-19 at 02-41-51 Tranga.png and /dev/null differ diff --git a/Screenshots/Screenshot 2025-03-19 at 02-42-02 Tranga.png b/Screenshots/Screenshot 2025-03-19 at 02-42-02 Tranga.png deleted file mode 100644 index 7090b21..0000000 Binary files a/Screenshots/Screenshot 2025-03-19 at 02-42-02 Tranga.png and /dev/null differ diff --git a/Screenshots/Screenshot 2025-03-19 at 02-42-12 Tranga.png b/Screenshots/Screenshot 2025-03-19 at 02-42-12 Tranga.png deleted file mode 100644 index fecb819..0000000 Binary files a/Screenshots/Screenshot 2025-03-19 at 02-42-12 Tranga.png and /dev/null differ diff --git a/Screenshots/Screenshot 2025-03-20 at 00-42-58 Tranga.png b/Screenshots/Screenshot 2025-03-20 at 00-42-58 Tranga.png deleted file mode 100644 index fc6ad83..0000000 Binary files a/Screenshots/Screenshot 2025-03-20 at 00-42-58 Tranga.png and /dev/null differ diff --git a/tranga-website/src/Components/Settings/FlareSolverr.tsx b/tranga-website/src/Components/Settings/FlareSolverr.tsx new file mode 100644 index 0000000..aa62cee --- /dev/null +++ b/tranga-website/src/Components/Settings/FlareSolverr.tsx @@ -0,0 +1,72 @@ +import IBackendSettings from "../../api/types/IBackendSettings"; +import { + Accordion, + AccordionDetails, + AccordionSummary, + Button, + ColorPaletteProp, + Input, Stack +} from "@mui/joy"; +import {KeyboardEventHandler, useCallback, useContext, useEffect, useState} from "react"; +import {ApiUriContext} from "../../api/fetchApi.tsx"; +import { + ResetFlareSolverrUrl, + SetFlareSolverrUrl, TestFlareSolverrUrl, +} from "../../api/BackendSettings.tsx"; + +export default function FlareSolverr({backendSettings}: {backendSettings?: IBackendSettings}) { + const apiUri = useContext(ApiUriContext); + const [loading, setLoading] = useState(false); + const [value, setValue] = useState(backendSettings?.flareSolverrUrl??""); + const [color, setColor] = useState("neutral"); + + const keyDown : KeyboardEventHandler = useCallback((e) => { + if(value === undefined) return; + if(e.key === "Enter") { + setLoading(true); + SetFlareSolverrUrl(apiUri, value) + .then(() => setColor("success")) + .catch(() => setColor("danger")) + .finally(() => setLoading(false)); + } + }, [apiUri, value]) + + const Reset = useCallback(() => { + setLoading(true); + ResetFlareSolverrUrl(apiUri) + .then(() => Test()) + .catch(() => setColor("danger")) + .finally(() => setLoading(false)); + }, [apiUri]); + + const Test = useCallback(() => { + setLoading(true); + TestFlareSolverrUrl(apiUri) + .then(() => setColor("success")) + .catch(() => setColor("danger")) + .finally(() => setLoading(false)); + }, [apiUri]); + + useEffect(() => { + setValue(backendSettings?.flareSolverrUrl??""); + }, [backendSettings]); + + return ( + + FlareSolverr + + setValue(e.target.value)} + color={color} + endDecorator={ + + + } + /> + + + ); +} \ No newline at end of file diff --git a/tranga-website/src/Settings.tsx b/tranga-website/src/Settings.tsx index 2a541ef..fcdc399 100644 --- a/tranga-website/src/Settings.tsx +++ b/tranga-website/src/Settings.tsx @@ -19,6 +19,7 @@ import ImageProcessing from "./Components/Settings/ImageProcessing.tsx"; import ChapterNamingScheme from "./Components/Settings/ChapterNamingScheme.tsx"; import AprilFoolsMode from './Components/Settings/AprilFoolsMode.tsx'; import RequestLimits from "./Components/Settings/RequestLimits.tsx"; +import FlareSolverr from "./Components/Settings/FlareSolverr.tsx"; const checkConnection = async (apiUri: string): Promise =>{ return fetch(`${apiUri}/swagger/v2/swagger.json`, @@ -113,6 +114,7 @@ export default function Settings({open, setOpen, setApiUri, setConnected}:{open: + diff --git a/tranga-website/src/api/BackendSettings.tsx b/tranga-website/src/api/BackendSettings.tsx index 6a9cc34..05cfdd0 100644 --- a/tranga-website/src/api/BackendSettings.tsx +++ b/tranga-website/src/api/BackendSettings.tsx @@ -1,4 +1,4 @@ -import {deleteData, getData, patchData} from './fetchApi.tsx'; +import {deleteData, getData, patchData, postData} from './fetchApi.tsx'; import IBackendSettings from "./types/IBackendSettings.ts"; import IRequestLimits from "./types/IRequestLimits.ts"; import {RequestLimitType} from "./types/EnumRequestLimitType.ts"; @@ -77,4 +77,16 @@ export const GetChapterNamingScheme = async (apiUri: string) : Promise = export const UpdateChapterNamingScheme = async (apiUri: string, value: string) => { return patchData(`${apiUri}/v2/Settings/ChapterNamingScheme`, value); +} + +export const SetFlareSolverrUrl = async (apiUri: string, value: string) => { + return postData(`${apiUri}/v2/Settings/FlareSolverr/Url`, value); +} + +export const ResetFlareSolverrUrl = async (apiUri: string) => { + return deleteData(`${apiUri}/v2/Settings/FlareSolverr/Url`); +} + +export const TestFlareSolverrUrl = async (apiUri: string) => { + return postData(`${apiUri}/v2/Settings/FlareSolverr/Test`); } \ No newline at end of file diff --git a/tranga-website/src/api/types/IBackendSettings.ts b/tranga-website/src/api/types/IBackendSettings.ts index ffbdaca..56e29e2 100644 --- a/tranga-website/src/api/types/IBackendSettings.ts +++ b/tranga-website/src/api/types/IBackendSettings.ts @@ -15,4 +15,5 @@ export default interface IBackendSettings { bwImages: boolean; startNewJobTimeoutMs: number; chapterNamingScheme: string; + flareSolverrUrl: string; }