import { useEffect, useState } from "preact/hooks"; import { t } from "../../services/i18n"; import Button from "../react/Button"; import FormCheckbox from "../react/FormCheckbox"; import FormFileUpload from "../react/FormFileUpload"; import FormGroup from "../react/FormGroup"; import Modal from "../react/Modal"; import ReactBasicWidget from "../react/ReactBasicWidget"; import options from "../../services/options"; import importService from "../../services/import.js"; import tree from "../../services/tree"; import useTriliumEvent from "../react/hooks"; function UploadAttachmentsDialogComponent() { const [ parentNoteId, setParentNoteId ] = useState(); const [ files, setFiles ] = useState(null); const [ shrinkImages, setShrinkImages ] = useState(options.is("compressImages")); const [ isUploading, setIsUploading ] = useState(false); const [ description, setDescription ] = useState(undefined); const [ shown, setShown ] = useState(false); useTriliumEvent("showUploadAttachmentsDialog", ({ noteId }) => { setParentNoteId(noteId); setShown(true); }); if (parentNoteId) { useEffect(() => { tree.getNoteTitle(parentNoteId).then((noteTitle) => setDescription(t("upload_attachments.files_will_be_uploaded", { noteTitle }))); }, [parentNoteId]); } return ( } onSubmit={async () => { if (!files || !parentNoteId) { return; } setIsUploading(true); const filesCopy = Array.from(files); await importService.uploadFiles("attachments", parentNoteId, filesCopy, { shrinkImages }); setIsUploading(false); setShown(false); }} onHidden={() => setShown(false)} show={shown} > ); } export default class UploadAttachmentsDialog extends ReactBasicWidget { get component() { return ; } }