From 97efe59182c166a98a40127d95db689269b80754 Mon Sep 17 00:00:00 2001 From: Andrew Simachev Date: Thu, 8 Feb 2024 11:30:48 +0100 Subject: [PATCH] add url to BlockPaste and BlockPreview commands --- dist/extension/js/background.js | 8 +++----- extension/iframe.tsx | 1 + extension/iframe/create.tsx | 9 +++++---- src/ts/component/drag/provider.tsx | 2 +- src/ts/component/editor/page.tsx | 2 +- src/ts/component/menu/quickCapture.tsx | 2 +- src/ts/lib/api/command.ts | 6 ++++-- src/ts/store/extension.ts | 9 +++++++++ 8 files changed, 25 insertions(+), 14 deletions(-) diff --git a/dist/extension/js/background.js b/dist/extension/js/background.js index f0d3cb0eac..d4d7c4aa1e 100644 --- a/dist/extension/js/background.js +++ b/dist/extension/js/background.js @@ -134,11 +134,7 @@ }; sendToActiveTab = async (msg) => { - const tab = await getActiveTab(); - - console.log('[sendToActiveTab]', tab, msg); - - await sendToTab(tab, msg); + await sendToTab(await getActiveTab(), msg); }; sendToTab = async (tab, msg) => { @@ -146,6 +142,8 @@ return; }; + msg.url = tab.url; + const response = await chrome.tabs.sendMessage(tab.id, msg); console.log('[sendToTab]', tab, msg, response); diff --git a/extension/iframe.tsx b/extension/iframe.tsx index f5ca074078..490d285475 100644 --- a/extension/iframe.tsx +++ b/extension/iframe.tsx @@ -118,6 +118,7 @@ class Iframe extends React.Component { break; case 'clickMenu': { + extensionStore.setTabUrl(msg.url); extensionStore.setHtml(msg.html); sendResponse({}); diff --git a/extension/iframe/create.tsx b/extension/iframe/create.tsx index 86bfa0279c..a34d26735b 100644 --- a/extension/iframe/create.tsx +++ b/extension/iframe/create.tsx @@ -88,7 +88,7 @@ const Create = observer(class Create extends React.Component ({ ...it, id: it.targetSpaceId, object: it, iconSize: 16 })).filter(it => it); if (this.refSpace && spaces.length) { @@ -105,7 +105,7 @@ const Create = observer(class Create extends React.Component { + C.BlockPreview(html, tabUrl, (message: any) => { if (message.error.code) { return; }; @@ -167,13 +167,14 @@ const Create = observer(class Create extends React.Component { + C.BlockPaste(object.id, '', { from: 0, to: 0 }, [], false, { html }, tabUrl, () => { this.onClose(); }); }; diff --git a/src/ts/component/drag/provider.tsx b/src/ts/component/drag/provider.tsx index 30d242865a..b75fc12c50 100644 --- a/src/ts/component/drag/provider.tsx +++ b/src/ts/component/drag/provider.tsx @@ -170,7 +170,7 @@ const DragProvider = observer(class DragProvider extends React.Component // String items drop if (items && items.length) { UtilCommon.getDataTransferString(items, (html: string) => { - C.BlockPaste(rootId, targetId, { from: 0, to: 0 }, [], false, { html }); + C.BlockPaste(rootId, targetId, { from: 0, to: 0 }, [], false, { html }, ''); }); this.clearState(); diff --git a/src/ts/component/editor/page.tsx b/src/ts/component/editor/page.tsx index 8682888bc8..e89f2e3a4b 100644 --- a/src/ts/component/editor/page.tsx +++ b/src/ts/component/editor/page.tsx @@ -1691,7 +1691,7 @@ const EditorPage = observer(class EditorPage extends React.Component 0, { ...data, anytype: data.anytype.blocks }, (message: any) => { + C.BlockPaste(rootId, focused, range, selection.get(I.SelectType.Block, true), data.anytype.range.to > 0, { ...data, anytype: data.anytype.blocks }, '', (message: any) => { if (message.error.code) { return; }; diff --git a/src/ts/component/menu/quickCapture.tsx b/src/ts/component/menu/quickCapture.tsx index 1d44cf1eaf..d1f461f0b8 100644 --- a/src/ts/component/menu/quickCapture.tsx +++ b/src/ts/component/menu/quickCapture.tsx @@ -596,7 +596,7 @@ class MenuQuickCapture extends React.Component { const object = message.details; - C.BlockPaste (object.id, '', { from: 0, to: 0 }, [], false, { html, text }, () => { + C.BlockPaste (object.id, '', { from: 0, to: 0 }, [], false, { html, text }, '', () => { UtilObject.openAuto(object); }); }); diff --git a/src/ts/lib/api/command.ts b/src/ts/lib/api/command.ts index 77431cdf6d..2f03db833e 100644 --- a/src/ts/lib/api/command.ts +++ b/src/ts/lib/api/command.ts @@ -379,10 +379,11 @@ export const BlockWidgetSetViewId = (contextId: string, blockId: string, viewId: dispatcher.request(BlockWidgetSetViewId.name, request, callBack); }; -export const BlockPreview = (html: string, callBack?: (message: any) => void) => { +export const BlockPreview = (html: string, url: string, callBack?: (message: any) => void) => { const request = new Rpc.Block.Preview.Request(); request.setHtml(html); + request.setUrl(url); dispatcher.request(BlockPreview.name, request, callBack); }; @@ -517,7 +518,7 @@ export const BlockCut = (contextId: string, blocks: I.Block[], range: I.TextRang dispatcher.request(BlockCut.name, request, callBack); }; -export const BlockPaste = (contextId: string, focusedId: string, range: I.TextRange, blockIds: string[], isPartOfBlock: boolean, data: any, callBack?: (message: any) => void) => { +export const BlockPaste = (contextId: string, focusedId: string, range: I.TextRange, blockIds: string[], isPartOfBlock: boolean, data: any, url: string, callBack?: (message: any) => void) => { data = UtilCommon.objectCopy(data); const request = new Rpc.Block.Paste.Request(); @@ -531,6 +532,7 @@ export const BlockPaste = (contextId: string, focusedId: string, range: I.TextRa request.setHtmlslot(data.html); request.setAnyslotList((data.anytype || []).map(Mapper.To.Block)); request.setFileslotList((data.files || []).map(Mapper.To.PasteFile)); + request.setUrl(url); dispatcher.request(BlockPaste.name, request, callBack); }; diff --git a/src/ts/store/extension.ts b/src/ts/store/extension.ts index 0d1b98f982..54463ec1ce 100644 --- a/src/ts/store/extension.ts +++ b/src/ts/store/extension.ts @@ -6,6 +6,7 @@ class ExtensionStore { public challengeId = ''; public serverPort = ''; public gatewayPort = ''; + public tabUrlValue = ''; public htmlValue = ''; constructor() { @@ -19,10 +20,18 @@ class ExtensionStore { return String(this.htmlValue || ''); }; + get tabUrl (): string { + return String(this.tabUrlValue || ''); + }; + setHtml (v: string) { this.htmlValue = String(v || ''); }; + setTabUrl (v: string) { + this.tabUrlValue = String(v || ''); + }; + }; export const extensionStore: ExtensionStore = new ExtensionStore(); \ No newline at end of file