From fe3ff881b9fc18956fa994666ed3a0ae036ae804 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Wed, 5 Mar 2025 10:49:24 +0800 Subject: [PATCH] :art: https://github.com/siyuan-note/siyuan/issues/14280 --- app/src/menus/util.ts | 4 ++-- app/src/protyle/util/compatibility.ts | 15 +++++++++++++++ app/src/types/index.d.ts | 9 ++++++++- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/app/src/menus/util.ts b/app/src/menus/util.ts index 83c9a96d9..1215afd8f 100644 --- a/app/src/menus/util.ts +++ b/app/src/menus/util.ts @@ -9,7 +9,7 @@ import {Constants} from "../constants"; import {openNewWindowById} from "../window/openNewWindow"; import {MenuItem} from "./Menu"; import {App} from "../index"; -import {isInAndroid, openByMobile, updateHotkeyTip} from "../protyle/util/compatibility"; +import {exportByMobile, isInAndroid, updateHotkeyTip} from "../protyle/util/compatibility"; import {checkFold} from "../util/noRelyPCFunction"; export const exportAsset = (src: string) => { @@ -19,7 +19,7 @@ export const exportAsset = (src: string) => { icon: "iconUpload", async click() { /// #if BROWSER - openByMobile(src); + exportByMobile(src); /// #else const result = await ipcRenderer.invoke(Constants.SIYUAN_GET, { cmd: "showSaveDialog", diff --git a/app/src/protyle/util/compatibility.ts b/app/src/protyle/util/compatibility.ts index 1a5cbced0..20c750d46 100644 --- a/app/src/protyle/util/compatibility.ts +++ b/app/src/protyle/util/compatibility.ts @@ -30,6 +30,21 @@ export const openByMobile = (uri: string) => { } }; +export const exportByMobile = (uri: string) => { + if (!uri) { + return; + } + if (isInIOS()) { + openByMobile(uri); + } else if (isInAndroid()) { + window.JSAndroid.exportByDefault(uri); + } else if (isInHarmony()) { + window.JSHarmony.exportByDefault(uri); + } else { + window.open(uri); + } +}; + export const readText = () => { if (isInAndroid()) { return window.JSAndroid.readClipboard(); diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts index 382a83bd5..e0fe7d695 100644 --- a/app/src/types/index.d.ts +++ b/app/src/types/index.d.ts @@ -178,7 +178,14 @@ interface Window { dataLayer: any[] siyuan: ISiyuan - webkit: any + webkit: { + messageHandlers: { + openLink:{postMessage: (url: string) => void} + startKernelFast:{postMessage: (url: string) => void} + changeStatusBar:{postMessage: (url: string) => void} + setClipboard:{postMessage: (url: string) => void} + } + } html2canvas: (element: Element, opitons: { useCORS: boolean, scale?: number