From e605578a34b97d99a3a2fa4d3f2bddd331409f70 Mon Sep 17 00:00:00 2001 From: glax Date: Wed, 2 Apr 2025 00:16:13 +0200 Subject: [PATCH] Chapter Naming Scheme Settings --- .../Settings/ChapterNamingScheme.tsx | 74 +++++++++++++++++++ tranga-website/src/Settings.tsx | 2 + 2 files changed, 76 insertions(+) create mode 100644 tranga-website/src/Components/Settings/ChapterNamingScheme.tsx diff --git a/tranga-website/src/Components/Settings/ChapterNamingScheme.tsx b/tranga-website/src/Components/Settings/ChapterNamingScheme.tsx new file mode 100644 index 0000000..716901d --- /dev/null +++ b/tranga-website/src/Components/Settings/ChapterNamingScheme.tsx @@ -0,0 +1,74 @@ +import IBackendSettings from "../../api/types/IBackendSettings"; +import { + Accordion, + AccordionDetails, + AccordionSummary, Chip, + CircularProgress, + ColorPaletteProp, + Divider, + Input, + Stack, Tooltip, Typography +} from "@mui/joy"; +import {KeyboardEventHandler, useCallback, useContext, useState} from "react"; +import {ApiUriContext} from "../../api/fetchApi.tsx"; +import {UpdateChapterNamingScheme} from "../../api/BackendSettings.tsx"; + +export default function ChapterNamingScheme({backendSettings}: {backendSettings?: IBackendSettings}) { + const apiUri = useContext(ApiUriContext); + const [loading, setLoading] = useState(false); + const [value, setValue] = useState(""); + const [color, setColor] = useState("neutral"); + + const keyDown : KeyboardEventHandler = useCallback((e) => { + if(e.key === "Enter") { + setLoading(true); + UpdateChapterNamingScheme(apiUri, value) + .then(() => setColor("success")) + .catch(() => setColor("danger")) + .finally(() => setLoading(false)); + } + }, [apiUri]) + + return ( + + Chapter Naming Scheme + + setValue(e.target.value)} + color={color} + endDecorator={(loading ? : null)} + /> + Placeholders: + }> + + %M + + + %V + + + %C + + + %T + + + %Y + + + %A + + + + + ); +} \ No newline at end of file diff --git a/tranga-website/src/Settings.tsx b/tranga-website/src/Settings.tsx index 909c527..c9e062f 100644 --- a/tranga-website/src/Settings.tsx +++ b/tranga-website/src/Settings.tsx @@ -16,6 +16,7 @@ import IBackendSettings from "./api/types/IBackendSettings.ts"; import { GetSettings } from './api/BackendSettings.tsx'; import UserAgent from "./Components/Settings/UserAgent.tsx"; import ImageProcessing from "./Components/Settings/ImageProcessing.tsx"; +import ChapterNamingScheme from "./Components/Settings/ChapterNamingScheme.tsx"; const checkConnection = async (apiUri: string): Promise =>{ return fetch(`${apiUri}/swagger/v2/swagger.json`, @@ -103,6 +104,7 @@ export default function Settings({open, setOpen, setApiUri, setConnected}:{open: +