import { useState } from "preact/hooks"; import { t } from "../../services/i18n"; import tree from "../../services/tree"; import Button from "../react/Button"; import FormCheckbox from "../react/FormCheckbox"; import FormFileUpload from "../react/FormFileUpload"; import FormGroup, { FormMultiGroup } from "../react/FormGroup"; import Modal from "../react/Modal"; import RawHtml from "../react/RawHtml"; import ReactBasicWidget from "../react/ReactBasicWidget"; import importService, { UploadFilesOptions } from "../../services/import"; import useTriliumEvent from "../react/hooks"; function ImportDialogComponent() { const [ parentNoteId, setParentNoteId ] = useState(); const [ noteTitle, setNoteTitle ] = useState(); const [ files, setFiles ] = useState(null); const [ safeImport, setSafeImport ] = useState(true); const [ explodeArchives, setExplodeArchives ] = useState(true); const [ shrinkImages, setShrinkImages ] = useState(true); const [ textImportedAsText, setTextImportedAsText ] = useState(true); const [ codeImportedAsCode, setCodeImportedAsCode ] = useState(true); const [ replaceUnderscoresWithSpaces, setReplaceUnderscoresWithSpaces ] = useState(true); const [ shown, setShown ] = useState(false); useTriliumEvent("showImportDialog", ({ noteId }) => { setParentNoteId(noteId); tree.getNoteTitle(noteId).then(setNoteTitle); setShown(true); }); return ( { if (!files || !parentNoteId) { return; } const options: UploadFilesOptions = { safeImport: boolToString(safeImport), shrinkImages: boolToString(shrinkImages), textImportedAsText: boolToString(textImportedAsText), codeImportedAsCode: boolToString(codeImportedAsCode), explodeArchives: boolToString(explodeArchives), replaceUnderscoresWithSpaces: boolToString(replaceUnderscoresWithSpaces) }; setShown(false); await importService.uploadFiles("notes", parentNoteId, Array.from(files), options); }} onHidden={() => setShown(false)} footer={