diff --git a/web-client/components/EditPost.svelte b/web-client/components/EditPost.svelte index 48579e8..94e9a81 100644 --- a/web-client/components/EditPost.svelte +++ b/web-client/components/EditPost.svelte @@ -9,7 +9,12 @@ bind:offsetMinutes bind:errors={timestampErrors} /> - + @@ -21,7 +26,7 @@ import TimestampEditor from "./TimestampEditor.svelte" import { Attachments, File, Item, Post } from "../protos/feoblog"; import moment from "moment"; import FileAttachments from "./FileAttachments.svelte" -import type {FileInfo} from "../ts/common" +import {FileInfo} from "../ts/common" export let files: FileInfo[] = [] @@ -74,6 +79,7 @@ $: validationErrors = function(): string[] { return errs }() +// A file was added via FileAttachments drag & drop. function fileAdded(event: CustomEvent) { let fi = event.detail @@ -84,6 +90,33 @@ function fileAdded(event: CustomEvent) { }) } +// Manually add a file: +function addFile(fi: FileInfo) { + files = [...files, fi] + textarea.addLink({ + text: fi.name, + href: `files/${fi.name}`, + asImage: fi.isImage + }) +} + +async function onPaste(event: CustomEvent) { + let data = event.detail.clipboardData + if (!data) return; + + for (let i = 0; i < data.files.length; i++) { + let file = data.files[i] + if (file.type == "image/png") { + let fileInfo = await FileInfo.from(file) + // Firefox just gives us a generic "image.png" which could easily be a duplicate: + fileInfo.name = `paste_${file.lastModified}.png` + addFile(fileInfo) + } else { + console.warn("Pasted unknown file type:", file.type) + } + } +} +