From 6b64a031f090e913d2ad5ac9ba9a80f2d9f1eb97 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Sat, 30 Jul 2022 23:56:54 +0800 Subject: [PATCH] :art: fix https://github.com/siyuan-note/siyuan/issues/5542 --- app/src/constants.ts | 1 + app/src/protyle/breadcrumb/action.ts | 37 ++++++++++++++++++++++++- app/src/protyle/breadcrumb/index.ts | 31 +++------------------ app/src/protyle/wysiwyg/commonHotkey.ts | 8 +++++- 4 files changed, 48 insertions(+), 29 deletions(-) diff --git a/app/src/constants.ts b/app/src/constants.ts index 91bd3bd05..9aae21d28 100644 --- a/app/src/constants.ts +++ b/app/src/constants.ts @@ -116,6 +116,7 @@ export abstract class Constants { }, editor: { general: { + netImg2LocalAsset: {default: "", custom: ""}, hLayout: {default: "", custom: ""}, vLayout: {default: "", custom: ""}, refBottom: {default: "⇧>", custom: "⇧>"}, diff --git a/app/src/protyle/breadcrumb/action.ts b/app/src/protyle/breadcrumb/action.ts index 691917958..50d447545 100644 --- a/app/src/protyle/breadcrumb/action.ts +++ b/app/src/protyle/breadcrumb/action.ts @@ -1,7 +1,42 @@ /// #if !MOBILE import {getAllModels} from "../../layout/getAll"; /// #endif -import {setPadding} from "../ui/initUI"; +import {addLoading, setPadding} from "../ui/initUI"; +import {fetchPost} from "../../util/fetch"; +import {Constants} from "../../constants"; +import {onGet} from "../util/onGet"; + +export const netImg2LocalAssets = (protyle: IProtyle) => { + if (protyle.element.querySelector(".fn__loading")) { + return; + } + addLoading(protyle); + fetchPost("/api/format/netImg2LocalAssets", { + id: protyle.block.rootID + }, () => { + /// #if MOBILE + fetchPost("/api/filetree/getDoc", { + id: protyle.block.id, + mode: 0, + size: Constants.SIZE_GET, + }, getResponse => { + onGet(getResponse, protyle, [Constants.CB_GET_FOCUS]); + }); + /// #else + getAllModels().editor.forEach(item => { + if (item.editor.protyle.block.rootID === protyle.block.rootID) { + fetchPost("/api/filetree/getDoc", { + id: item.editor.protyle.block.rootID, + mode: 0, + size: Constants.SIZE_GET, + }, getResponse => { + onGet(getResponse, item.editor.protyle, [Constants.CB_GET_FOCUS]); + }); + } + }); + /// #endif + }); +} export const fullscreen = (element: Element, btnElement?: Element) => { const isFullscreen = element.className.includes("fullscreen"); diff --git a/app/src/protyle/breadcrumb/index.ts b/app/src/protyle/breadcrumb/index.ts index 67f42403a..64b424149 100644 --- a/app/src/protyle/breadcrumb/index.ts +++ b/app/src/protyle/breadcrumb/index.ts @@ -2,7 +2,7 @@ import {getIconByType} from "../../editor/getIcon"; import {fetchPost} from "../../util/fetch"; import {Constants} from "../../constants"; import {MenuItem} from "../../menus/Menu"; -import {fullscreen} from "./action"; +import {fullscreen, netImg2LocalAssets} from "./action"; import {exportMd} from "../../menus/commonMenuItem"; import {setEditMode} from "../util/setEditMode"; import {RecordMedia} from "../util/RecordMedia"; @@ -217,32 +217,9 @@ export class Breadcrumb { window.siyuan.menus.menu.append(new MenuItem({ label: window.siyuan.languages.netImg2LocalAsset, icon: "iconTransform", - click: () => { - fetchPost("/api/format/netImg2LocalAssets", { - id: protyle.block.rootID - }, () => { - /// #if MOBILE - fetchPost("/api/filetree/getDoc", { - id: protyle.block.id, - mode: 0, - size: Constants.SIZE_GET, - }, getResponse => { - onGet(getResponse, protyle, [Constants.CB_GET_FOCUS]); - }); - /// #else - getAllModels().editor.forEach(item => { - if (item.editor.protyle.block.rootID === protyle.block.rootID) { - fetchPost("/api/filetree/getDoc", { - id: item.editor.protyle.block.rootID, - mode: 0, - size: Constants.SIZE_GET, - }, getResponse => { - onGet(getResponse, item.editor.protyle, [Constants.CB_GET_FOCUS]); - }); - } - }); - /// #endif - }); + accelerator: window.siyuan.config.keymap.editor.general.netImg2LocalAsset.custom, + click () { + netImg2LocalAssets(protyle) } }).element); window.siyuan.menus.menu.append(new MenuItem({ diff --git a/app/src/protyle/wysiwyg/commonHotkey.ts b/app/src/protyle/wysiwyg/commonHotkey.ts index d4f1a59fe..38a086be9 100644 --- a/app/src/protyle/wysiwyg/commonHotkey.ts +++ b/app/src/protyle/wysiwyg/commonHotkey.ts @@ -2,7 +2,7 @@ import {matchHotKey} from "../util/hotKey"; import {fetchPost} from "../../util/fetch"; import {writeText} from "../util/compatibility"; import {focusByOffset, getSelectionOffset} from "../util/selection"; -import {fullscreen} from "../breadcrumb/action"; +import {fullscreen, netImg2LocalAssets} from "../breadcrumb/action"; import {addLoading, setPadding} from "../ui/initUI"; import {Constants} from "../../constants"; import {onGet} from "../util/onGet"; @@ -42,6 +42,12 @@ export const commonHotkey = (protyle: IProtyle, event: KeyboardEvent) => { event.stopPropagation(); return true; } + if (matchHotKey(window.siyuan.config.keymap.editor.general.netImg2LocalAsset.custom, event)) { + netImg2LocalAssets(protyle) + event.preventDefault(); + event.stopPropagation(); + return; + } if (protyle.model) { if (matchHotKey(window.siyuan.config.keymap.editor.general.backlinks.custom, event)) { event.preventDefault();