Vanessa 2026-02-13 20:44:15 +08:00
parent d47db0ca8e
commit 1caaf5afc9
12 changed files with 63 additions and 29 deletions

View file

@ -7,7 +7,13 @@ import {fetchPost} from "../util/fetch";
import {setAccessAuthCode} from "./util/about";
import {exportLayout} from "../layout/util";
import {exitSiYuan, processSync} from "../dialog/processSystem";
import {isInAndroid, isInHarmony, isInIOS, isIPad, isMac, openByMobile, writeText} from "../protyle/util/compatibility";
import {
isInMobileApp,
isIPad,
isMac,
openByMobile,
writeText
} from "../protyle/util/compatibility";
import {showMessage} from "../dialog/message";
import {Dialog} from "../dialog";
import {confirmDialog} from "../dialog/confirmDialog";
@ -106,7 +112,7 @@ export const about = {
</button>
</div>
</div>
<div class="b3-label config__item${(window.siyuan.config.readonly || (isBrowser() && !isInIOS() && !isInAndroid() && !isIPad() && !isInHarmony())) ? " fn__none" : ""}">
<div class="b3-label config__item${(window.siyuan.config.readonly || (isBrowser() && !isInMobileApp() && !isIPad())) ? " fn__none" : ""}">
<div class="fn__flex">
<div class="fn__flex-1">
${window.siyuan.languages.about5}
@ -126,7 +132,7 @@ export const about = {
<input class="b3-switch fn__flex-center" id="lockScreenMode" type="checkbox"${window.siyuan.config.system.lockScreenMode === 1 ? " checked" : ""}>
</label>
</div>
<div class="b3-label config__item${(isBrowser() && !isInAndroid() && !isInIOS() && !isInHarmony()) ? " fn__none" : " fn__flex"}">
<div class="b3-label config__item${(isBrowser() && !isInMobileApp()) ? " fn__none" : " fn__flex"}">
<div class="fn__flex-1">
${window.siyuan.languages.about2}
<div class="b3-label__text">${window.siyuan.languages.about3.replace("${port}", location.port)}</div>

View file

@ -25,7 +25,7 @@ import {
} from "./dialog/processSystem";
import {initMessage, showMessage} from "./dialog/message";
import {getAllTabs} from "./layout/getAll";
import {getLocalStorage, isChromeBrowser} from "./protyle/util/compatibility";
import {getLocalStorage, isChromeBrowser, isInMobileApp} from "./protyle/util/compatibility";
import {getSearch} from "./util/functions";
import {checkPublishServiceClosed} from "./util/processMessage";
import {hideAllElements} from "./protyle/ui/hideElements";
@ -213,7 +213,7 @@ export class App {
setTitle(window.siyuan.languages.siyuanNote);
initMessage();
/// #if BROWSER && !MOBILE
if (!window.siyuan.config.readonly && !window.siyuan.isPublish && !isChromeBrowser()) {
if (!isInMobileApp() && !window.siyuan.config.readonly && !window.siyuan.isPublish && !isChromeBrowser()) {
showMessage(window.siyuan.languages.useChrome, 0, "error");
}
/// #endif

View file

@ -1,5 +1,9 @@
import {getWorkspaceName} from "../util/noRelyPCFunction";
import {isInAndroid, isInHarmony, isInIOS, setStorageVal, updateHotkeyTip} from "../protyle/util/compatibility";
import {
isInMobileApp,
setStorageVal,
updateHotkeyTip
} from "../protyle/util/compatibility";
import {exitSiYuan, processSync} from "../dialog/processSystem";
import {goBack, goForward} from "../util/backForward";
import {syncGuide} from "../sync/syncGuide";
@ -54,7 +58,7 @@ export const initBar = (app: App) => {
<div id="barMode" class="toolbar__item ariaLabel${window.siyuan.config.readonly ? " fn__none" : ""}" aria-label="${window.siyuan.languages.appearanceMode}">
<svg><use xlink:href="#icon${window.siyuan.config.appearance.modeOS ? "Mode" : (window.siyuan.config.appearance.mode === 0 ? "Light" : "Dark")}"></use></svg>
</div>
<div id="barExit" class="ft__error toolbar__item ariaLabel${(isInIOS() || isInAndroid() || isInHarmony()) ? "" : " fn__none"}" aria-label="${window.siyuan.languages.safeQuit}">
<div id="barExit" class="ft__error toolbar__item ariaLabel${isInMobileApp() ? "" : " fn__none"}" aria-label="${window.siyuan.languages.safeQuit}">
<svg><use xlink:href="#iconQuit"></use></svg>
</div>
<div id="barMore" class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.more}">

View file

@ -6,7 +6,7 @@ import {getSearch, isMobile, isValidCustomAttrName} from "../util/functions";
import {isLocalPath, movePathTo, moveToPath, pathPosix} from "../util/pathName";
import {MenuItem} from "./Menu";
import {onExport, saveExport} from "../protyle/export";
import {isInAndroid, isInHarmony, isInIOS, openByMobile, writeText} from "../protyle/util/compatibility";
import {isInAndroid, isInHarmony, isInIOS, isInMobileApp, openByMobile, writeText} from "../protyle/util/compatibility";
import {fetchPost, fetchSyncPost} from "../util/fetch";
import {hideMessage, showMessage} from "../dialog/message";
import {Dialog} from "../dialog";
@ -785,7 +785,7 @@ export const exportMd = (id: string) => {
id: "exportPDF",
label: window.siyuan.languages.print,
icon: "iconPDF",
ignore: !isInAndroid() && !isInHarmony() && !isInIOS(),
ignore: !isInMobileApp(),
click: () => {
const msgId = showMessage(window.siyuan.languages.exporting);
const localData = window.siyuan.storage[Constants.LOCAL_EXPORTPDF];

View file

@ -7,7 +7,14 @@ import {getOpenNotebookCount, originalPath, pathPosix, useShell} from "../util/p
import {fetchNewDailyNote, mountHelp, newDailyNote} from "../util/mount";
import {fetchPost} from "../util/fetch";
import {Constants} from "../constants";
import {isInAndroid, isInHarmony, isInIOS, isIPad, setStorageVal, writeText} from "../protyle/util/compatibility";
import {
isInAndroid,
isInHarmony,
isInMobileApp,
isIPad,
setStorageVal,
writeText
} from "../protyle/util/compatibility";
import {openCard} from "../card/openCard";
import {openSetting} from "../config";
import {getAllDocks} from "../layout/getAll";
@ -318,7 +325,7 @@ export const workspaceMenu = (app: App, rect: DOMRect) => {
});
});
/// #endif
if (!isBrowser() || isInIOS() || isInAndroid() || isInHarmony()) {
if (!isBrowser() || isInMobileApp()) {
window.siyuan.menus.menu.append(new MenuItem({
id: "workspaceList",
label: window.siyuan.languages.workspaceList,

View file

@ -18,9 +18,7 @@ import {activeBlur, hideKeyboardToolbar, showKeyboardToolbar} from "./util/keybo
import {
getLocalStorage,
isChromeBrowser,
isInAndroid,
isInHarmony,
isInIOS,
isInMobileApp,
writeText
} from "../protyle/util/compatibility";
import {getCurrentEditor, openMobileFileById} from "./editor";
@ -195,7 +193,7 @@ class App {
}
}
});
if (!isInAndroid() && !isInHarmony() && !isInIOS && isChromeBrowser()) {
if (!isInMobileApp() && isChromeBrowser()) {
document.querySelector('meta[name="viewport"]').setAttribute("content", "width=device-width, height=device-height, interactive-widget=resizes-content, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, viewport-fit=cover");
}
});

View file

@ -21,9 +21,7 @@ import {App} from "../../index";
import {
isDisabledFeature,
isHuawei,
isInAndroid,
isInHarmony,
isInIOS,
isInMobileApp,
isIPhone
} from "../../protyle/util/compatibility";
import {newFile} from "../../util/newFile";
@ -98,8 +96,8 @@ export const initRightMenu = (app: App) => {
<div class="b3-menu__item${window.siyuan.config.readonly ? " fn__none" : ""}" id="menuHistory">
<svg class="b3-menu__icon"><use xlink:href="#iconHistory"></use></svg><span class="b3-menu__label">${window.siyuan.languages.dataHistory}</span>
</div>
<div class="b3-menu__separator${(isInAndroid() || isInIOS() || isInHarmony()) ? "" : " fn__none"}"></div>
<div class="b3-menu__item b3-menu__item--warning${(isInAndroid() || isInIOS() || isInHarmony()) ? "" : " fn__none"}" id="menuSafeQuit">
<div class="b3-menu__separator${isInMobileApp() ? "" : " fn__none"}"></div>
<div class="b3-menu__item b3-menu__item--warning${isInMobileApp() ? "" : " fn__none"}" id="menuSafeQuit">
<svg class="b3-menu__icon"><use xlink:href="#iconQuit"></use></svg><span class="b3-menu__label">${window.siyuan.languages.safeQuit}</span>
</div>
<div class="b3-menu__separator"></div>

View file

@ -4,7 +4,12 @@ import {Dialog} from "../../dialog";
import {fetchPost} from "../../util/fetch";
import {confirmDialog} from "../../dialog/confirmDialog";
import {showMessage} from "../../dialog/message";
import {isInAndroid, isInHarmony, isInIOS, isIPad, openByMobile, writeText} from "../../protyle/util/compatibility";
import {
isInMobileApp,
isIPad,
openByMobile,
writeText
} from "../../protyle/util/compatibility";
import {exitSiYuan, processSync} from "../../dialog/processSystem";
import {pathPosix} from "../../util/pathName";
import {openModel} from "../menu/model";
@ -81,7 +86,7 @@ export const initAbout = () => {
<div class="fn__hr"></div>
<div class="b3-label__text">${window.siyuan.languages.about18}</div>
</div>
<div class="b3-label${(window.siyuan.config.readonly || (isBrowser() && !isInIOS() && !isInAndroid() && !isIPad() && !isInHarmony())) ? " fn__none" : ""}">
<div class="b3-label${(window.siyuan.config.readonly || (isBrowser() && !isIPad() && !isInMobileApp())) ? " fn__none" : ""}">
${window.siyuan.languages.about5}
<div class="fn__hr"></div>
<button class="b3-button b3-button--outline fn__block" id="authCode">
@ -163,7 +168,7 @@ export const initAbout = () => {
</button>
<div class="b3-label__text">${window.siyuan.languages.systemLogTip}</div>
</div>
<div class="b3-label${(!window.siyuan.config.readonly && (isInAndroid() || isInIOS() || isInHarmony())) ? "" : " fn__none"}">
<div class="b3-label${(!window.siyuan.config.readonly && isInMobileApp()) ? "" : " fn__none"}">
${window.siyuan.languages.workspaceList}
<div class="fn__hr"></div>
<button id="openWorkspace" class="b3-button b3-button--outline fn__block">${window.siyuan.languages.openBy}...</button>

View file

@ -11,7 +11,7 @@ import {getThemeMode, setInlineStyle} from "../../util/assets";
import {fetchPost, fetchSyncPost} from "../../util/fetch";
import {Dialog} from "../../dialog";
import {replaceLocalPath} from "../../editor/rename";
import {getScreenWidth, isInAndroid, isInHarmony, isInIOS, setStorageVal} from "../util/compatibility";
import {getScreenWidth, isInMobileApp, setStorageVal} from "../util/compatibility";
import {getFrontend} from "../../util/functions";
const getPluginStyle = async () => {
@ -762,7 +762,7 @@ export const onExport = async (data: IWebSocketData, filePath: string, servePath
themeStyle = `<link rel="stylesheet" type="text/css" id="themeStyle" href="${servePath}appearance/themes/${themeName}/theme.css?${Constants.SIYUAN_VERSION}"/>`;
}
const screenWidth = getScreenWidth();
const isInMobile = isInAndroid() || isInHarmony() || isInIOS();
const isInMobile = isInMobileApp();
const mobileHtml = isInMobile ? {
js: `document.body.style.minWidth = "${screenWidth}px";`,
css: `@page { size: A4; margin: 10mm 0 10mm 0; background-color: var(--b3-theme-background); }

View file

@ -11,7 +11,7 @@ import {renderAVAttribute} from "./blockAttr";
import {addClearButton} from "../../../util/addClearButton";
import {escapeAriaLabel, escapeAttr, escapeHtml} from "../../../util/escape";
import {electronUndo} from "../../undo";
import {isInAndroid, isInHarmony, isInIOS} from "../../util/compatibility";
import {isInMobileApp} from "../../util/compatibility";
import {isMobile} from "../../../util/functions";
import {renderGallery} from "./gallery/render";
import {getFieldsByData, getViewIcon} from "./view";
@ -466,7 +466,7 @@ export const avRender = async (element: Element, protyle: IProtyle, cb?: (data:
if (e.getAttribute("data-render") === "true" || hasClosestByClassName(e, "av__gallery-content")) {
continue;
}
if (isMobile() || isInIOS() || isInAndroid() || isInHarmony()) {
if (isMobile() || isInMobileApp()) {
e.classList.add("av--touch");
}

View file

@ -350,6 +350,13 @@ export const isInIOS = () => {
return window.siyuan.config.system.container === "ios" && window.webkit?.messageHandlers;
};
export const isInMobileApp = () => {
if (isInAndroid() || isInHarmony() || isInIOS()) {
return true;
}
return false;
};
export const isInHarmony = () => {
return window.siyuan.config.system.container === "harmony" && window.JSHarmony;
};

View file

@ -6,7 +6,16 @@ import {getAllModels} from "../layout/getAll";
import {exportLayout} from "../layout/util";
/// #endif
import {fetchPost} from "./fetch";
import {isInAndroid, isInHarmony, isInIOS, isIPad, isIPhone, isMac, isWin11} from "../protyle/util/compatibility";
import {
isInAndroid,
isInHarmony,
isInIOS,
isInMobileApp,
isIPad,
isIPhone,
isMac,
isWin11
} from "../protyle/util/compatibility";
import {setCodeTheme} from "../protyle/render/util";
import {getBackend, getFrontend} from "./functions";
@ -363,7 +372,7 @@ const rgba2hex = (rgba: string) => {
};
const updateMobileTheme = (OSTheme: string) => {
if (isInIOS() || isInAndroid() || isInHarmony()) {
if (isInMobileApp()) {
setTimeout(() => {
const backgroundColor = rgba2hex(getComputedStyle(document.body).getPropertyValue("--b3-theme-background").trim());
let mode = window.siyuan.config.appearance.mode;