Update LibraryCreationModal

This commit is contained in:
grimsi
2025-04-05 22:37:40 +02:00
parent 9babedeba4
commit 1340c01a8f
2 changed files with 49 additions and 41 deletions
@@ -1,4 +1,4 @@
import React, {useState} from "react"; import React, {useEffect, useState} from "react";
import {addToast, Button, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader} from "@heroui/react"; import {addToast, Button, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader} from "@heroui/react";
import {Form, Formik} from "formik"; import {Form, Formik} from "formik";
import LibraryDto from "Frontend/generated/de/grimsi/gameyfin/libraries/LibraryDto"; import LibraryDto from "Frontend/generated/de/grimsi/gameyfin/libraries/LibraryDto";
@@ -46,13 +46,18 @@ export default function LibraryCreationModal({
<Modal isOpen={isOpen} onOpenChange={onOpenChange} backdrop="opaque" size="lg"> <Modal isOpen={isOpen} onOpenChange={onOpenChange} backdrop="opaque" size="lg">
<ModalContent> <ModalContent>
{(onClose) => ( {(onClose) => (
<Formik initialValues={{name: "", path: ""}} <Formik initialValues={{name: "", path: selectedPath}}
onSubmit={async (values: any) => { onSubmit={async (values: any) => {
await createLibrary(values); await createLibrary(values);
onClose(); onClose();
}} }}
> >
{(formik) => ( {(formik) => {
useEffect(() => {
formik.setFieldValue("path", selectedPath);
}, [selectedPath]);
return (
<Form> <Form>
<ModalHeader className="flex flex-col gap-1">Add a new library</ModalHeader> <ModalHeader className="flex flex-col gap-1">Add a new library</ModalHeader>
<ModalBody> <ModalBody>
@@ -67,14 +72,16 @@ export default function LibraryCreationModal({
/> />
<Input <Input
name="path" name="path"
label="path" label="Library Path"
placeholder="Enter library path" placeholder="Select a path"
value={formik.values.path} value={formik.values.path}
isDisabled
required required
/> />
</div> </div>
<pre>{selectedPath}</pre> <div className="h-64 overflow-auto">
<FileTreeView onPathChange={setSelectedPath}/> <FileTreeView onPathChange={setSelectedPath}/>
</div>
</ModalBody> </ModalBody>
<ModalFooter> <ModalFooter>
<Button variant="light" onPress={onClose}> <Button variant="light" onPress={onClose}>
@@ -89,7 +96,8 @@ export default function LibraryCreationModal({
</Button> </Button>
</ModalFooter> </ModalFooter>
</Form> </Form>
)} );
}}
</Formik> </Formik>
)} )}
</ModalContent> </ModalContent>
@@ -67,7 +67,7 @@ class FilesystemService {
.filter { !it.isHidden } .filter { !it.isHidden }
.map { FileDto(it.name, if (it.isDirectory) FileType.DIRECTORY else FileType.FILE, it.hashCode()) } .map { FileDto(it.name, if (it.isDirectory) FileType.DIRECTORY else FileType.FILE, it.hashCode()) }
} catch (_: Exception) { } catch (_: Exception) {
log.error { "Error reading directory contents of $path" } log.warn { "Error reading directory contents of $path" }
emptyList() emptyList()
} }
} }