diff --git a/tranga-website/src/App.tsx b/tranga-website/src/App.tsx index e9ab1f8..cf6ddc2 100644 --- a/tranga-website/src/App.tsx +++ b/tranga-website/src/App.tsx @@ -26,7 +26,7 @@ const Api = new V2({ baseUrl: apiUri }); const manga: Manga[] = []; const promises: Map> = new Map(); const getManga = async (key: string): Promise => { - let result = manga.find((m) => m.key === key); + const result = manga.find((m) => m.key === key); if (result) return result; if (promises.has(key)) return promises.get(key); const newPromise = retrieveManga(key); diff --git a/tranga-website/src/Components/MangaConnectorLink.tsx b/tranga-website/src/Components/MangaConnectorLink.tsx index 810797b..dfc5872 100644 --- a/tranga-website/src/Components/MangaConnectorLink.tsx +++ b/tranga-website/src/Components/MangaConnectorLink.tsx @@ -43,7 +43,7 @@ export default function MangaConnectorLink({ imageRef.current.setHTMLUnsafe( ``, ); - }, []); + }, [MangaConnectorId, imageStyle, mangaConnector, mangaConnectorContext]); return ( setOpen(true)}> @@ -73,7 +73,7 @@ export function MangaModal({ const [manga, setManga] = useState(); useEffect(() => { getManga(minimalManga.key).then(setManga); - }, []); + }, [getManga, minimalManga]); return ( setOpen(false)} className={"manga-modal"}> diff --git a/tranga-website/src/Components/Mangas/MangaConnectorBadge.tsx b/tranga-website/src/Components/Mangas/MangaConnectorBadge.tsx index 3c39d8d..583cf3e 100644 --- a/tranga-website/src/Components/Mangas/MangaConnectorBadge.tsx +++ b/tranga-website/src/Components/Mangas/MangaConnectorBadge.tsx @@ -1,6 +1,6 @@ import { Badge } from "@mui/joy"; import { MinimalManga } from "../../apiClient/data-contracts.ts"; -import { ReactElement } from "react"; +import { ReactNode } from "react"; import "./MangaCard.css"; import MangaConnectorLink from "../MangaConnectorLink.tsx"; @@ -9,7 +9,7 @@ export default function MangaConnectorBadge({ children, }: { manga: MinimalManga; - children?: ReactElement | ReactElement[] | undefined; + children?: ReactNode; }) { return ( (); useEffect(() => { getManga(mangaId).then(setManga); - }, []); + }, [getManga, mangaId]); return ( <> @@ -44,10 +45,13 @@ function DownloadDrawer({ const fileLibraries = useContext(FileLibraryContext); const Api = useContext(ApiContext); - const onLibraryChange = (_: any, value: {} | null) => { + const onLibraryChange = ( + _: React.MouseEvent | React.KeyboardEvent | React.FocusEvent | null, + value: string | null, + ) => { if (!value) return; if (!manga) return; - Api.mangaChangeLibraryCreate(manga.key as string, value as string); + Api.mangaChangeLibraryCreate(manga.key, value); }; return ( @@ -97,7 +101,7 @@ function DownloadCheckBox({ } else setLoading(LoadingState.failure); }) .catch((_) => setLoading(LoadingState.failure)); - }, []); + }, [Api, mangaConnectorIdId]); const onSelected = (event: ChangeEvent) => { setLoading(LoadingState.loading); diff --git a/tranga-website/src/Components/Mangas/MangaMerge.tsx b/tranga-website/src/Components/Mangas/MangaMerge.tsx index fde086c..f62f575 100644 --- a/tranga-website/src/Components/Mangas/MangaMerge.tsx +++ b/tranga-website/src/Components/Mangas/MangaMerge.tsx @@ -34,7 +34,7 @@ export default function ({ if (response.ok) setSimilar(response.data); }); }); - }, [open]); + }, [Api, manga, open]); const exit = (manga: Manga) => { setOpen(false); diff --git a/tranga-website/src/Components/Search.tsx b/tranga-website/src/Components/Search.tsx index 87db434..ec726a3 100644 --- a/tranga-website/src/Components/Search.tsx +++ b/tranga-website/src/Components/Search.tsx @@ -103,7 +103,7 @@ function SearchDialog({ try { new URL(url); return true; - } catch (Error) { + } catch { return false; } }; diff --git a/tranga-website/src/Components/Settings/LibraryConnectors/ListLibraryConnectors.tsx b/tranga-website/src/Components/Settings/LibraryConnectors/ListLibraryConnectors.tsx index 009c0f3..7c14df1 100644 --- a/tranga-website/src/Components/Settings/LibraryConnectors/ListLibraryConnectors.tsx +++ b/tranga-website/src/Components/Settings/LibraryConnectors/ListLibraryConnectors.tsx @@ -10,14 +10,10 @@ export default function () { >([]); useEffect(() => { - getConnectors(); - }, []); - - const getConnectors = () => { Api.libraryConnectorList().then((r) => { if (r.ok) setLibraryConnectors(r.data); }); - }; + }, [Api]); return ( diff --git a/tranga-website/src/Components/Settings/NotificationConnectors/AddNotificationConnector.tsx b/tranga-website/src/Components/Settings/NotificationConnectors/AddNotificationConnector.tsx index 3f4bd69..7bb3948 100644 --- a/tranga-website/src/Components/Settings/NotificationConnectors/AddNotificationConnector.tsx +++ b/tranga-website/src/Components/Settings/NotificationConnectors/AddNotificationConnector.tsx @@ -18,6 +18,7 @@ import { PushoverRecord, } from "../../../apiClient/data-contracts.ts"; import { LoadingState, StateColor, StateIndicator } from "../../Loading.tsx"; +import * as React from "react"; export default function ({ open, @@ -53,7 +54,7 @@ function NotificationConnectorTab({ }: { value: string; children: ReactNode; - add: (data: any) => void; + add: React.MouseEventHandler | undefined; state: LoadingState; }) { const IsLoading = (state: LoadingState): boolean => diff --git a/tranga-website/src/Components/Settings/NotificationConnectors/ListNotificationConnector.tsx b/tranga-website/src/Components/Settings/NotificationConnectors/ListNotificationConnector.tsx index ecc499d..37c7ade 100644 --- a/tranga-website/src/Components/Settings/NotificationConnectors/ListNotificationConnector.tsx +++ b/tranga-website/src/Components/Settings/NotificationConnectors/ListNotificationConnector.tsx @@ -18,14 +18,10 @@ export default function () { >([]); useEffect(() => { - getConnectors(); - }, []); - - const getConnectors = () => { Api.notificationConnectorList().then((r) => { if (r.ok) setNotificationConnectors(r.data); }); - }; + }, [Api]); return ( diff --git a/tranga-website/src/Components/Settings/Settings.tsx b/tranga-website/src/Components/Settings/Settings.tsx index 65a1baf..329f2e1 100644 --- a/tranga-website/src/Components/Settings/Settings.tsx +++ b/tranga-website/src/Components/Settings/Settings.tsx @@ -51,7 +51,7 @@ export default function Settings({ Api.settingsList().then((response) => { setSettings(response.data); }); - }, []); + }, [Api]); const apiUriChanged = (e: React.ChangeEvent) => { clearTimeout(timerRef.current); diff --git a/tranga-website/src/Components/WorkerModal/Workers.tsx b/tranga-website/src/Components/WorkerModal/Workers.tsx index 1b7d2b3..34b625b 100644 --- a/tranga-website/src/Components/WorkerModal/Workers.tsx +++ b/tranga-website/src/Components/WorkerModal/Workers.tsx @@ -17,7 +17,7 @@ export default function (): ReactNode { setWorkers(response.data); } }); - }, []); + }, [Api]); return ( <> diff --git a/tranga-website/src/Header.tsx b/tranga-website/src/Header.tsx index aad86d3..23712f8 100644 --- a/tranga-website/src/Header.tsx +++ b/tranga-website/src/Header.tsx @@ -1,6 +1,6 @@ import Sheet from "@mui/joy/Sheet"; import { Link, Stack, Typography } from "@mui/joy"; -import { ReactElement, useContext } from "react"; +import { ReactElement, ReactNode, useContext } from "react"; import "./Header.css"; import { Article, GitHub } from "@mui/icons-material"; import { ApiContext } from "./apiClient/ApiContext.tsx"; @@ -8,7 +8,7 @@ import { ApiContext } from "./apiClient/ApiContext.tsx"; export default function Header({ children, }: { - children?: ReactElement | ReactElement[] | undefined; + children?: ReactNode; }): ReactElement { const Api = useContext(ApiContext); diff --git a/tranga-website/src/apiClient/SettingsContext.tsx b/tranga-website/src/apiClient/SettingsContext.tsx index d893484..a9da688 100644 --- a/tranga-website/src/apiClient/SettingsContext.tsx +++ b/tranga-website/src/apiClient/SettingsContext.tsx @@ -6,12 +6,11 @@ const [settingsPromise, setSettingsPromise] = useState>(); const [settings, setSettings] = useState(); -const API = useContext(ApiContext); - export const SettingsContext = createContext<{ GetSettings: () => Promise; }>({ GetSettings: (): Promise => { + const API = useContext(ApiContext); const promise = settingsPromise; if (promise) return promise; const p = new Promise((resolve, reject) => { diff --git a/tranga-website/src/main.tsx b/tranga-website/src/main.tsx index 6bc3304..f77914d 100644 --- a/tranga-website/src/main.tsx +++ b/tranga-website/src/main.tsx @@ -1,7 +1,7 @@ import { createRoot } from "react-dom/client"; import "./index.css"; import App from "./App.tsx"; -// @ts-ignore +// @ts-expect-error font import "@fontsource/inter"; import { CssVarsProvider } from "@mui/joy/styles"; import CssBaseline from "@mui/joy/CssBaseline";