diff --git a/app/src/index.ts b/app/src/index.ts index 26266b96a..59efd6ec7 100644 --- a/app/src/index.ts +++ b/app/src/index.ts @@ -32,6 +32,9 @@ import {loadPlugins, reloadPlugin} from "./plugin/loader"; import "./assets/scss/base.scss"; import {reloadEmoji} from "./emoji"; import {processIOSPurchaseResponse} from "./util/iOSPurchase"; +/// #if BROWSER +import {setLocalShorthandCount} from "./util/noRelyPCFunction"; +/// #endif export class App { public plugins: import("./plugin").Plugin[] = []; @@ -65,6 +68,11 @@ export class App { case "setDefRefCount": setDefRefCount(data.data); break; + /// #if BROWSER + case "setLocalShorthandCount": + setLocalShorthandCount(); + break; + /// #endif case "setRefDynamicText": setRefDynamicText(data.data); break; diff --git a/app/src/layout/dock/Files.ts b/app/src/layout/dock/Files.ts index 217738726..4e0496156 100644 --- a/app/src/layout/dock/Files.ts +++ b/app/src/layout/dock/Files.ts @@ -26,6 +26,7 @@ import {isTouchDevice} from "../../util/functions"; import {App} from "../../index"; import {refreshFileTree} from "../../dialog/processSystem"; import {hideTooltip, showTooltip} from "../../dialog/tooltip"; +import * as dayjs from "dayjs"; export class Files extends Model { public element: HTMLElement; @@ -322,6 +323,14 @@ export class Files extends Model { x: event.clientX, y: event.clientY }); + } else if (type === "addLocal") { + fetchPost("/api/filetree/moveLocalShorthands", { + "notebook": notebookId, + "path": dayjs().format("YYYYMMDDHHmmss") + }); + this.element.querySelectorAll('[data-type="addLocal"]').forEach(item => { + item.remove(); + }) } } if (type === "more-file") { diff --git a/app/src/mobile/dock/MobileFiles.ts b/app/src/mobile/dock/MobileFiles.ts index b13fbfc57..749c0a654 100644 --- a/app/src/mobile/dock/MobileFiles.ts +++ b/app/src/mobile/dock/MobileFiles.ts @@ -20,6 +20,7 @@ import {MenuItem} from "../../menus/Menu"; import {App} from "../../index"; import {refreshFileTree} from "../../dialog/processSystem"; import {setStorageVal} from "../../protyle/util/compatibility"; +import * as dayjs from "dayjs"; export class MobileFiles extends Model { public element: HTMLElement; @@ -217,6 +218,14 @@ export class MobileFiles extends Model { } else if (type === "more-root") { initNavigationMenu(app, target.parentElement); window.siyuan.menus.menu.fullscreen("bottom"); + } else if (type === "addLocal") { + fetchPost("/api/filetree/moveLocalShorthands", { + "notebook": notebookId, + "path": dayjs().format("YYYYMMDDHHmmss") + }); + this.element.querySelectorAll('[data-type="addLocal"]').forEach(item => { + item.remove(); + }) } } if (type === "more-file") { diff --git a/app/src/mobile/util/onMessage.ts b/app/src/mobile/util/onMessage.ts index e03f47708..3c324c449 100644 --- a/app/src/mobile/util/onMessage.ts +++ b/app/src/mobile/util/onMessage.ts @@ -9,6 +9,7 @@ import { import {App} from "../../index"; import {reloadPlugin} from "../../plugin/loader"; import {reloadEmoji} from "../../emoji"; +import {setLocalShorthandCount} from "../../util/noRelyPCFunction"; export const onMessage = (app: App, data: IWebSocketData) => { if (data) { @@ -16,6 +17,9 @@ export const onMessage = (app: App, data: IWebSocketData) => { case "setDefRefCount": setDefRefCount(data.data); break; + case "setLocalShorthandCount": + setLocalShorthandCount(); + break; case "setRefDynamicText": setRefDynamicText(data.data); break; diff --git a/app/src/util/noRelyPCFunction.ts b/app/src/util/noRelyPCFunction.ts index 4d9e29bb4..b07576f39 100644 --- a/app/src/util/noRelyPCFunction.ts +++ b/app/src/util/noRelyPCFunction.ts @@ -3,6 +3,10 @@ import {fetchPost} from "./fetch"; import {isMobile} from "./functions"; import {Constants} from "../constants"; import {pathPosix} from "./pathName"; +/// #if !MOBILE +import {getDockByType} from "../layout/tabUtil"; +import {Files} from "../layout/dock/Files"; +/// #endif // 需独立出来,否则移动端引用的时候会引入 pc 端大量无用代码 export const renameTag = (labelName: string) => { @@ -45,3 +49,21 @@ export const checkFold = (id: string, cb: (zoomIn: boolean, action: TProtyleActi foldResponse.data.isRoot); }); }; + +export const setLocalShorthandCount = () => { + let fileElement; + /// #if MOBILE + fileElement = window.siyuan.mobile.docks.file.element; + /// #else + const dockFile = getDockByType("file"); + if (!dockFile) { + return false; + } + fileElement = (dockFile.data.file as Files).element; + /// #endif + fileElement.childNodes.forEach((item: Element) => { + item.querySelector('[data-type="more-root"]').insertAdjacentHTML("beforebegin", ` + +`); + }); +}