${window.siyuan.languages.workspaceList}
diff --git a/app/src/mobile/util/touch.ts b/app/src/mobile/util/touch.ts
index 41f7356b8..7cfb754b5 100644
--- a/app/src/mobile/util/touch.ts
+++ b/app/src/mobile/util/touch.ts
@@ -4,6 +4,7 @@ import {popMenu} from "../menu";
import {activeBlur, hideKeyboardToolbar} from "./keyboardToolbar";
import {getCurrentEditor} from "../editor";
import {fileAnnotationRefMenu, linkMenu, refMenu, tagMenu} from "../../menus/protyle";
+import {isInIOS} from "../../protyle/util/compatibility";
let clientX: number;
let clientY: number;
@@ -27,7 +28,7 @@ export const handleTouchEnd = (event: TouchEvent) => {
const editor = getCurrentEditor();
const target = event.target as HTMLElement;
if (editor && typeof yDiff === "undefined" && new Date().getTime() - time > 900 &&
- target.tagName === "SPAN" && window.webkit?.messageHandlers &&
+ target.tagName === "SPAN" && isInIOS() &&
!hasClosestByAttribute(target, "data-type", "NodeBlockQueryEmbed")) {
// ios 长按行内元素弹出菜单
const types = (target.getAttribute("data-type") || "").split(" ");
diff --git a/app/src/protyle/breadcrumb/index.ts b/app/src/protyle/breadcrumb/index.ts
index be22e5f07..f3b815e1d 100644
--- a/app/src/protyle/breadcrumb/index.ts
+++ b/app/src/protyle/breadcrumb/index.ts
@@ -30,6 +30,7 @@ import {Menu} from "../../plugin/Menu";
import {getNoContainerElement} from "../wysiwyg/getBlock";
import {openTitleMenu} from "../header/openTitleMenu";
import {emitOpenMenu} from "../../plugin/EventBus";
+import {isInAndroid} from "../util/compatibility";
export class Breadcrumb {
public element: HTMLElement;
@@ -266,7 +267,7 @@ export class Breadcrumb {
window.siyuan.menus.menu.remove();
});
window.siyuan.menus.menu.append(uploadMenu);
- if (window.siyuan.config.system.container !== "android" || !window.JSAndroid) {
+ if (!isInAndroid()) {
window.siyuan.menus.menu.append(new MenuItem({
current: this.mediaRecorder && this.mediaRecorder.isRecording,
icon: "iconRecord",
diff --git a/app/src/protyle/util/compatibility.ts b/app/src/protyle/util/compatibility.ts
index 3a37bcc7b..9f20c262b 100644
--- a/app/src/protyle/util/compatibility.ts
+++ b/app/src/protyle/util/compatibility.ts
@@ -8,7 +8,7 @@ export const openByMobile = (uri: string) => {
}
if (window.siyuan.config.system.container === "ios") {
window.location.href = uri;
- } else if (window.siyuan.config.system.container === "android" && window.JSAndroid) {
+ } else if (isInAndroid()) {
window.JSAndroid.openExternal(uri);
} else {
window.open(uri);
@@ -16,7 +16,7 @@ export const openByMobile = (uri: string) => {
};
export const readText = () => {
- if ("android" === window.siyuan.config.system.container && window.JSAndroid) {
+ if (isInAndroid()) {
return window.JSAndroid.readClipboard();
}
return navigator.clipboard.readText();
@@ -29,19 +29,19 @@ export const writeText = (text: string) => {
}
try {
// navigator.clipboard.writeText 抛出异常不进入 catch,这里需要先处理移动端复制
- if ("android" === window.siyuan.config.system.container && window.JSAndroid) {
+ if (isInAndroid()) {
window.JSAndroid.writeClipboard(text);
return;
}
- if ("ios" === window.siyuan.config.system.container && window.webkit?.messageHandlers) {
+ if (isInIOS()) {
window.webkit.messageHandlers.setClipboard.postMessage(text);
return;
}
navigator.clipboard.writeText(text);
} catch (e) {
- if (window.siyuan.config.system.container === "ios" && window.webkit?.messageHandlers) {
+ if (isInIOS()) {
window.webkit.messageHandlers.setClipboard.postMessage(text);
- } else if (window.siyuan.config.system.container === "android" && window.JSAndroid) {
+ } else if (isInAndroid()) {
window.JSAndroid.writeClipboard(text);
} else {
const textElement = document.createElement("textarea");
@@ -97,6 +97,14 @@ export const isMac = () => {
return navigator.platform.toUpperCase().indexOf("MAC") > -1;
};
+export const isInAndroid = () => {
+ return window.siyuan.config.system.container === "android" && window.JSAndroid
+}
+
+export const isInIOS = () => {
+ return window.siyuan.config.system.container === "ios" && window.webkit?.messageHandlers
+}
+
// Mac,Windows 快捷键展示
export const updateHotkeyTip = (hotkey: string) => {
if (/Mac/.test(navigator.platform) || navigator.platform === "iPhone") {
diff --git a/app/src/protyle/wysiwyg/index.ts b/app/src/protyle/wysiwyg/index.ts
index 0a477f455..2abce4a31 100644
--- a/app/src/protyle/wysiwyg/index.ts
+++ b/app/src/protyle/wysiwyg/index.ts
@@ -65,7 +65,7 @@ import {openGlobalSearch} from "../../search/util";
import {popSearch} from "../../mobile/menu/search";
/// #endif
import {BlockPanel} from "../../block/Panel";
-import {isCtrl, openByMobile} from "../util/compatibility";
+import {isCtrl, isInAndroid, isInIOS, openByMobile} from "../util/compatibility";
import {MenuItem} from "../../menus/Menu";
import {fetchPost} from "../../util/fetch";
import {onGet} from "../util/onGet";
@@ -2080,7 +2080,7 @@ export class WYSIWYG {
/// #if !MOBILE
pushBack(protyle, newRange);
/// #endif
- }, (isMobile() || window.webkit?.messageHandlers) ? 520 : 0); // Android/iPad 双击慢了出不来
+ }, (isMobile() || isInIOS()) ? 520 : 0); // Android/iPad 双击慢了出不来
protyle.hint.enableExtend = false;
if (event.shiftKey) {
event.preventDefault();
diff --git a/app/src/util/assets.ts b/app/src/util/assets.ts
index 07ab3039e..634747519 100644
--- a/app/src/util/assets.ts
+++ b/app/src/util/assets.ts
@@ -7,6 +7,7 @@ import {exportLayout} from "../layout/util";
/// #endif
import {fetchPost} from "./fetch";
import {appearance} from "../config/appearance";
+import {isInAndroid, isInIOS} from "../protyle/util/compatibility";
const loadThirdIcon = (iconURL: string, data: IAppearance) => {
addScript(iconURL, "iconDefaultScript").then(() => {
@@ -289,8 +290,7 @@ export const setMode = (modeElementValue: number) => {
};
const updateMobileTheme = (OSTheme: string) => {
- if ((window.siyuan.config.system.container === "ios" && window.webkit?.messageHandlers) ||
- (window.siyuan.config.system.container === "android" && window.JSAndroid)) {
+ if (isInIOS() || isInAndroid()) {
setTimeout(() => {
const backgroundColor = getComputedStyle(document.body).getPropertyValue("--b3-theme-background").trim();
let mode = window.siyuan.config.appearance.mode;
@@ -301,9 +301,9 @@ const updateMobileTheme = (OSTheme: string) => {
mode = 0;
}
}
- if (window.siyuan.config.system.container === "ios" && window.webkit?.messageHandlers) {
+ if (isInIOS()) {
window.webkit.messageHandlers.changeStatusBar.postMessage((backgroundColor || (mode === 0 ? "#fff" : "#1e1e1e")) + " " + mode);
- } else if (window.siyuan.config.system.container === "android" && window.JSAndroid) {
+ } else if (isInAndroid()) {
window.JSAndroid.changeStatusBarColor(backgroundColor, mode);
}
}, 500); // 移动端需要加载完才可以获取到颜色