From 6bcd019b319d99b96911be9da41d2f5a2072c22c Mon Sep 17 00:00:00 2001 From: PiEgg Date: Sun, 20 Feb 2022 12:33:51 +0800 Subject: [PATCH] :bug: Fix: fix mini-page can't upload image from dragging browser image ISSUES CLOSED: #822 --- src/renderer/pages/MiniPage.vue | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/renderer/pages/MiniPage.vue b/src/renderer/pages/MiniPage.vue index 711f97b1..dbe69c12 100644 --- a/src/renderer/pages/MiniPage.vue +++ b/src/renderer/pages/MiniPage.vue @@ -23,6 +23,9 @@ import { IpcRendererEvent } from 'electron' import { SHOW_MINI_PAGE_MENU, SET_MINI_WINDOW_POS } from '~/universal/events/constants' +import { + isUrl +} from '~/universal/utils/common' @Component({ name: 'mini-page', mixins: [mixin] @@ -80,7 +83,35 @@ export default class extends Vue { onDrop (e: DragEvent) { this.dragover = false - this.ipcSendFiles(e.dataTransfer!.files) + const items = e.dataTransfer!.items + if (items.length === 2 && items[0].type === 'text/uri-list') { + this.handleURLDrag(items, e.dataTransfer!) + } else if (items[0].type === 'text/plain') { + const str = e.dataTransfer!.getData(items[0].type) + if (isUrl(str)) { + ipcRenderer.send('uploadChoosedFiles', [{ path: str }]) + } else { + this.$message.error(this.$T('TIPS_DRAG_VALID_PICTURE_OR_URL')) + } + } else { + this.ipcSendFiles(e.dataTransfer!.files) + } + } + + handleURLDrag (items: DataTransferItemList, dataTransfer: DataTransfer) { + // text/html + // Use this data to get a more precise URL + const urlString = dataTransfer.getData(items[1].type) + const urlMatch = urlString.match(/