From 6d402357e70cf702295eb84160bbc0f10d577cd8 Mon Sep 17 00:00:00 2001 From: glax Date: Tue, 1 Apr 2025 19:17:46 +0200 Subject: [PATCH] UserAgent Setting --- .../src/Components/Settings/UserAgent.tsx | 38 +++++++++++++++++++ tranga-website/src/Settings.tsx | 16 +++++++- 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 tranga-website/src/Components/Settings/UserAgent.tsx diff --git a/tranga-website/src/Components/Settings/UserAgent.tsx b/tranga-website/src/Components/Settings/UserAgent.tsx new file mode 100644 index 0000000..92ddebd --- /dev/null +++ b/tranga-website/src/Components/Settings/UserAgent.tsx @@ -0,0 +1,38 @@ +import IBackendSettings from "../../api/types/IBackendSettings"; +import {Accordion, AccordionDetails, AccordionSummary, CircularProgress, ColorPaletteProp, Input} from "@mui/joy"; +import {KeyboardEventHandler, useCallback, useContext, useState} from "react"; +import {ApiUriContext} from "../../api/fetchApi.tsx"; +import {UpdateUserAgent} from "../../api/BackendSettings.tsx"; + +export default function UserAgent({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); + UpdateUserAgent(apiUri, value) + .then(() => setColor("success")) + .catch(() => setColor("danger")) + .finally(() => setLoading(false)); + } + }, [apiUri]) + + return ( + + UserAgent + + setValue(e.target.value)} + color={color} + endDecorator={(loading ? : null)} + /> + + + ); +} \ No newline at end of file diff --git a/tranga-website/src/Settings.tsx b/tranga-website/src/Settings.tsx index 0f41da5..f05634a 100644 --- a/tranga-website/src/Settings.tsx +++ b/tranga-website/src/Settings.tsx @@ -10,8 +10,11 @@ import { } from "@mui/joy"; import './Settings.css'; import * as React from "react"; -import {useContext, useEffect, useState} from "react"; +import {useCallback, useContext, useEffect, useState} from "react"; import {ApiUriContext} from "./api/fetchApi.tsx"; +import IBackendSettings from "./api/types/IBackendSettings.ts"; +import { GetSettings } from './api/BackendSettings.tsx'; +import UserAgent from "./Components/Settings/UserAgent.tsx"; const checkConnection = async (apiUri: string): Promise =>{ return fetch(`${apiUri}/swagger/v2/swagger.json`, @@ -62,6 +65,16 @@ export default function Settings({open, setOpen, setApiUri, setConnected}:{open: .finally(() => setChecking(false)); } + const [backendSettings, setBackendSettings] = useState(); + + const getBackendSettings = useCallback(() => { + GetSettings(apiUri).then(setBackendSettings); + }, [apiUri]); + + useEffect(() => { + getBackendSettings(); + }, [checking]); + return ( setOpen(false)}> @@ -87,6 +100,7 @@ export default function Settings({open, setOpen, setApiUri, setConnected}:{open: endDecorator={(checking ? : null)} /> +