From 9aca50aa1567a136709b59fa8f787e1eb979c918 Mon Sep 17 00:00:00 2001 From: glax Date: Thu, 4 Sep 2025 23:02:53 +0200 Subject: [PATCH] FileLibrary selection in download dialog --- tranga-website/src/MangaDownloadDrawer.tsx | 43 +++++++++++++++++----- tranga-website/src/api/data-contracts.ts | 5 +++ 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/tranga-website/src/MangaDownloadDrawer.tsx b/tranga-website/src/MangaDownloadDrawer.tsx index c2f7511..b2c8439 100644 --- a/tranga-website/src/MangaDownloadDrawer.tsx +++ b/tranga-website/src/MangaDownloadDrawer.tsx @@ -12,7 +12,7 @@ import { Typography, } from '@mui/joy' import ModalClose from '@mui/joy/ModalClose' -import { Manga, MangaConnectorId } from './api/data-contracts.ts' +import { FileLibrary, Manga, MangaConnectorId } from './api/data-contracts.ts' import { ApiContext } from './contexts/ApiContext.tsx' import { MangaContext } from './contexts/MangaContext.tsx' import { FileLibraryContext } from './contexts/FileLibraryContext.tsx' @@ -27,6 +27,7 @@ export default function MangaDownloadDrawer( const Libraries = useContext(FileLibraryContext) const [manga, setManga] = useState(props.manga) + const [library, setLibrary] = useState() const [downloadFromMap, setDownloadFromMap] = useState< Map >(new Map()) @@ -40,25 +41,43 @@ export default function MangaDownloadDrawer( useEffect(() => { const newMap = new Map() + setLibrary( + Libraries.find((library) => library.key == manga?.fileLibraryId) + ) manga?.mangaConnectorIds.forEach((id) => { newMap.set(id, id.useForDownload) }) setDownloadFromMap(newMap) }, [manga]) - const setDownload = (): Promise => { + const setDownload = async (): Promise => { if (!manga) return Promise.reject() - downloadFromMap.forEach(async (download, id) => { - const result = await Api.mangaSetAsDownloadFromCreate( - manga?.key, - id.mangaConnectorName, - download + if (library) { + const s = await Api.mangaChangeLibraryCreate( + manga.key, + library?.key ) - if (!result.ok) return Promise.reject() - }) + .then((result) => result.ok) + .catch(() => false) + if (!s) return Promise.reject() + } + for (const kv of downloadFromMap) { + const s = await Api.mangaSetAsDownloadFromCreate( + manga?.key, + kv[0].mangaConnectorName, + kv[1] + ) + .then((result) => result.ok) + .catch(() => false) + if (!s) return Promise.reject() + } return Promise.resolve() } + const onLibraryChange = (_: any, value: string | null) => { + setLibrary(Libraries.find((library) => library.key == value)) + } + return ( Select a Library to Download to: - {Libraries.map((l) => (