diff --git a/web/src/components/CreateMemoRelationDialog.tsx b/web/src/components/CreateMemoRelationDialog.tsx index cb65f1d70..0b2218d1e 100644 --- a/web/src/components/CreateMemoRelationDialog.tsx +++ b/web/src/components/CreateMemoRelationDialog.tsx @@ -145,7 +145,7 @@ const CreateMemoRelationDialog: React.FC = (props: Props) => { ); }; -function showCreateMemoRelationDialog(props: Omit) { +function showCreateMemoRelationDialog(props: Omit) { generateDialog( { className: "create-memo-relation-dialog", diff --git a/web/src/components/CreateResourceDialog.tsx b/web/src/components/CreateResourceDialog.tsx index 4e645e005..cd60d27bc 100644 --- a/web/src/components/CreateResourceDialog.tsx +++ b/web/src/components/CreateResourceDialog.tsx @@ -1,4 +1,4 @@ -import { Autocomplete, Button, IconButton, Input, List, ListItem, Option, Select, Typography } from "@mui/joy"; +import { Button, IconButton, List, ListItem, Typography } from "@mui/joy"; import React, { useRef, useState } from "react"; import { toast } from "react-hot-toast"; import { useResourceStore } from "@/store/v1"; @@ -7,17 +7,12 @@ import { useTranslate } from "@/utils/i18n"; import { generateDialog } from "./Dialog"; import Icon from "./Icon"; -const fileTypeAutocompleteOptions = ["image/*", "text/*", "audio/*", "video/*", "application/*"]; - interface Props extends DialogProps { onCancel?: () => void; onConfirm?: (resourceList: Resource[]) => void; } -type SelectedMode = "local-file" | "external-link"; - interface State { - selectedMode: SelectedMode; uploadingFlag: boolean; } @@ -26,16 +21,8 @@ const CreateResourceDialog: React.FC = (props: Props) => { const { destroy, onCancel, onConfirm } = props; const resourceStore = useResourceStore(); const [state, setState] = useState({ - selectedMode: "local-file", uploadingFlag: false, }); - const [resourceCreate, setResourceCreate] = useState( - Resource.fromPartial({ - filename: "", - externalLink: "", - type: "", - }), - ); const [fileList, setFileList] = useState([]); const fileInputRef = useRef(null); @@ -73,44 +60,6 @@ const CreateResourceDialog: React.FC = (props: Props) => { destroy(); }; - const handleSelectedModeChanged = (mode: "local-file" | "external-link") => { - setState((state) => { - return { - ...state, - selectedMode: mode, - }; - }); - }; - - const handleExternalLinkChanged = (event: React.ChangeEvent) => { - const externalLink = event.target.value; - setResourceCreate((state) => { - return { - ...state, - externalLink, - }; - }); - }; - - const handleFileNameChanged = (event: React.ChangeEvent) => { - const filename = event.target.value; - setResourceCreate((state) => { - return { - ...state, - filename, - }; - }); - }; - - const handleFileTypeChanged = (fileType: string) => { - setResourceCreate((state) => { - return { - ...state, - type: fileType, - }; - }); - }; - const handleFileInputChange = async () => { if (!fileInputRef.current || !fileInputRef.current.files) { return; @@ -124,14 +73,8 @@ const CreateResourceDialog: React.FC = (props: Props) => { }; const allowConfirmAction = () => { - if (state.selectedMode === "local-file") { - if (!fileInputRef.current || !fileInputRef.current.files || fileInputRef.current.files.length === 0) { - return false; - } - } else if (state.selectedMode === "external-link") { - if (resourceCreate.filename === "" || resourceCreate.externalLink === "" || resourceCreate.type === "") { - return false; - } + if (!fileInputRef.current || !fileInputRef.current.files || fileInputRef.current.files.length === 0) { + return false; } return true; }; @@ -150,30 +93,25 @@ const CreateResourceDialog: React.FC = (props: Props) => { const createdResourceList: Resource[] = []; try { - if (state.selectedMode === "local-file") { - if (!fileInputRef.current || !fileInputRef.current.files) { - return; + if (!fileInputRef.current || !fileInputRef.current.files) { + return; + } + const filesOnInput = Array.from(fileInputRef.current.files); + for (const file of fileList) { + const fileOnInput = filesOnInput.find((fileOnInput) => fileOnInput.name === file.name); + if (!fileOnInput) { + continue; } - const filesOnInput = Array.from(fileInputRef.current.files); - for (const file of fileList) { - const fileOnInput = filesOnInput.find((fileOnInput) => fileOnInput.name === file.name); - if (!fileOnInput) { - continue; - } - const { name: filename, size, type } = file; - const buffer = new Uint8Array(await file.arrayBuffer()); - const resource = await resourceStore.createResource({ - resource: Resource.fromPartial({ - filename, - size, - type, - content: buffer, - }), - }); - createdResourceList.push(resource); - } - } else { - const resource = await resourceStore.createResource({ resource: resourceCreate }); + const { name: filename, size, type } = file; + const buffer = new Uint8Array(await file.arrayBuffer()); + const resource = await resourceStore.createResource({ + resource: Resource.fromPartial({ + filename, + size, + type, + content: buffer, + }), + }); createdResourceList.push(resource); } } catch (error: any) { @@ -196,100 +134,47 @@ const CreateResourceDialog: React.FC = (props: Props) => {
- - {t("resource.create-dialog.upload-method")} - - - - {state.selectedMode === "local-file" && ( - <> -
- - -
- - {fileList.map((file, index) => ( - - {file.name} -
- - -
-
- ))} -
- - )} - - {state.selectedMode === "external-link" && ( - <> - - {t("resource.create-dialog.external-link.link")} - - - - {t("resource.create-dialog.external-link.file-name")} - - - - {t("resource.create-dialog.external-link.type")} - - handleFileTypeChanged(value || "")} - /> - - )} +
+ + +
+ + {fileList.map((file, index) => ( + + {file.name} +
+ + +
+
+ ))} +