Skip to content

Commit

Permalink
🎨 Support HarmonyOS NEXT system #13184
Browse files Browse the repository at this point in the history
  • Loading branch information
88250 committed Nov 23, 2024
1 parent 8639955 commit 65f55b0
Show file tree
Hide file tree
Showing 15 changed files with 58 additions and 49 deletions.
6 changes: 3 additions & 3 deletions app/src/config/about.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {fetchPost} from "../util/fetch";
import {setAccessAuthCode} from "./util/about";
import {exportLayout} from "../layout/util";
import {exitSiYuan, processSync} from "../dialog/processSystem";
import {isInAndroid, isInIOS, isIPad, isMac, openByMobile, writeText} from "../protyle/util/compatibility";
import {isInAndroid, isInHarmony, isInIOS, isIPad, isMac, openByMobile, writeText} from "../protyle/util/compatibility";
import {showMessage} from "../dialog/message";
import {Dialog} from "../dialog";
import {confirmDialog} from "../dialog/confirmDialog";
Expand Down Expand Up @@ -79,7 +79,7 @@ export const about = {
<div class="fn__space"></div>
<input class="b3-switch fn__flex-center" id="networkServe" type="checkbox"${window.siyuan.config.system.networkServe ? " checked" : ""}>
</label>
<div class="b3-label${(window.siyuan.config.readonly || (isBrowser() && !isInIOS() && !isInAndroid() && !isIPad())) ? " fn__none" : ""}">
<div class="b3-label${(window.siyuan.config.readonly || (isBrowser() && !isInIOS() && !isInAndroid() && !isIPad() && !isInHarmony())) ? " fn__none" : ""}">
<div class="fn__flex">
<div class="fn__flex-1">
${window.siyuan.languages.about5}
Expand All @@ -99,7 +99,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()) ? " fn__none" : " fn__flex"}">
<div class="b3-label config__item${(isBrowser() && !isInAndroid() && !isInIOS() && !isInHarmony()) ? " 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>
Expand Down
4 changes: 2 additions & 2 deletions app/src/config/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {ai} from "./ai";
import {flashcard} from "./flashcard";
import {publish} from "./publish";
import {App} from "../index";
import {isHuawei} from "../protyle/util/compatibility";
import {isHuawei, isInHarmony} from "../protyle/util/compatibility";
import {Constants} from "../constants";

export const genItemPanel = (type: string, containerElement: Element, app: App) => {
Expand Down Expand Up @@ -116,7 +116,7 @@ export const openSetting = (app: App) => {
<li data-name="image" class="b3-list-item"><svg class="b3-list-item__graphic"><use xlink:href="#iconImage"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.assets}</span></li>
<li data-name="export" class="b3-list-item"><svg class="b3-list-item__graphic"><use xlink:href="#iconUpload"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.export}</span></li>
<li data-name="appearance" class="b3-list-item"><svg class="b3-list-item__graphic"><use xlink:href="#iconTheme"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.appearance}</span></li>
<li data-name="bazaar" class="b3-list-item${isHuawei() ? " fn__none" : ""}"><svg class="b3-list-item__graphic"><use xlink:href="#iconBazaar"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.bazaar}</span></li>
<li data-name="bazaar" class="b3-list-item${isHuawei() || isInHarmony() ? " fn__none" : ""}"><svg class="b3-list-item__graphic"><use xlink:href="#iconBazaar"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.bazaar}</span></li>
<li data-name="search" class="b3-list-item"><svg class="b3-list-item__graphic"><use xlink:href="#iconSearch"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.search}</span></li>
<li data-name="keymap" class="b3-list-item"><svg class="b3-list-item__graphic"><use xlink:href="#iconKeymap"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.keymap}</span></li>
<li data-name="account" class="b3-list-item"><svg class="b3-list-item__graphic"><use xlink:href="#iconAccount"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.account}</span></li>
Expand Down
6 changes: 3 additions & 3 deletions app/src/dialog/processSystem.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import {setEmpty} from "../mobile/util/setEmpty";
import {hideAllElements, hideElements} from "../protyle/ui/hideElements";
import {App} from "../index";
import {saveScroll} from "../protyle/scroll/saveScroll";
import {isInAndroid, isInIOS, setStorageVal} from "../protyle/util/compatibility";
import {isInAndroid, isInHarmony, isInIOS, setStorageVal} from "../protyle/util/compatibility";
import {Plugin} from "../plugin";

const updateTitle = (rootID: string, tab: Tab, protyle?: IProtyle) => {
Expand Down Expand Up @@ -301,7 +301,7 @@ export const exitSiYuan = async () => {
/// #if !BROWSER
ipcRenderer.send(Constants.SIYUAN_QUIT, location.port);
/// #else
if (isInIOS() || isInAndroid()) {
if (isInIOS() || isInAndroid() || isInHarmony()) {
window.location.href = "siyuan://api/system/exit";
}
/// #endif
Expand Down Expand Up @@ -341,7 +341,7 @@ export const exitSiYuan = async () => {
/// #if !BROWSER
ipcRenderer.send(Constants.SIYUAN_QUIT, location.port);
/// #else
if (isInIOS() || isInAndroid()) {
if (isInIOS() || isInAndroid() || isInHarmony()) {
window.location.href = "siyuan://api/system/exit";
}
/// #endif
Expand Down
4 changes: 2 additions & 2 deletions app/src/layout/topBar.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {getWorkspaceName} from "../util/noRelyPCFunction";
import {isInAndroid, isInIOS, setStorageVal, updateHotkeyTip} from "../protyle/util/compatibility";
import {isInAndroid, isInHarmony, isInIOS, setStorageVal, updateHotkeyTip} from "../protyle/util/compatibility";
import {exitSiYuan, processSync} from "../dialog/processSystem";
import {goBack, goForward} from "../util/backForward";
import {syncGuide} from "../sync/syncGuide";
Expand Down Expand Up @@ -54,7 +54,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()) ? "" : " fn__none"}" aria-label="${window.siyuan.languages.safeQuit}">
<div id="barExit" class="ft__error toolbar__item ariaLabel${(isInIOS() || isInAndroid() || isInHarmony()) ? "" : " 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}">
Expand Down
8 changes: 4 additions & 4 deletions app/src/menus/commonMenuItem.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {getSearch, isMobile, isValidAttrName} from "../util/functions";
import {isLocalPath, movePathTo, moveToPath, pathPosix} from "../util/pathName";
import {MenuItem} from "./Menu";
import {saveExport} from "../protyle/export";
import {isInAndroid, openByMobile, writeText} from "../protyle/util/compatibility";
import {isInAndroid, isInHarmony, openByMobile} from "../protyle/util/compatibility";
import {fetchPost, fetchSyncPost} from "../util/fetch";
import {hideMessage, showMessage} from "../dialog/message";
import {Dialog} from "../dialog";
Expand Down Expand Up @@ -710,7 +710,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat
const submenu = [];
/// #if MOBILE
submenu.push({
label: isInAndroid() ? window.siyuan.languages.useDefault : window.siyuan.languages.useBrowserView,
label: isInAndroid() || isInHarmony() ? window.siyuan.languages.useDefault : window.siyuan.languages.useBrowserView,
accelerator: showAccelerator ? window.siyuan.languages.click : "",
click: () => {
openByMobile(src);
Expand Down Expand Up @@ -781,7 +781,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat
});
/// #else
submenu.push({
label: isInAndroid() ? window.siyuan.languages.useDefault : window.siyuan.languages.useBrowserView,
label: isInAndroid() || isInHarmony() ? window.siyuan.languages.useDefault : window.siyuan.languages.useBrowserView,
accelerator: showAccelerator ? window.siyuan.languages.click : "",
click: () => {
openByMobile(src);
Expand All @@ -807,7 +807,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat
});
/// #else
submenu.push({
label: isInAndroid() ? window.siyuan.languages.useDefault : window.siyuan.languages.useBrowserView,
label: isInAndroid() || isInHarmony() ? window.siyuan.languages.useDefault : window.siyuan.languages.useBrowserView,
accelerator: showAccelerator ? window.siyuan.languages.click : "",
click: () => {
openByMobile(src);
Expand Down
4 changes: 2 additions & 2 deletions app/src/menus/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {isInAndroid, isInHarmony, openByMobile, updateHotkeyTip} from "../protyle/util/compatibility";
import {checkFold} from "../util/noRelyPCFunction";

export const exportAsset = (src: string) => {
Expand Down Expand Up @@ -172,7 +172,7 @@ export const openEditorTab = (app: App, ids: string[], notebookId?: string, path
};

export const copyPNGByLink = (link: string) => {
if (isInAndroid()) {
if (isInAndroid() || isInHarmony()) {
window.JSAndroid.writeImageClipboard(link);
return;
} else {
Expand Down
6 changes: 3 additions & 3 deletions app/src/menus/workspace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {getOpenNotebookCount, originalPath, pathPosix, showFileInFolder} from ".
import {fetchNewDailyNote, mountHelp, newDailyNote} from "../util/mount";
import {fetchPost} from "../util/fetch";
import {Constants} from "../constants";
import {isInAndroid, isInIOS, isIPad, setStorageVal, writeText} from "../protyle/util/compatibility";
import {isInAndroid, isInHarmony, isInIOS, isIPad, setStorageVal, writeText} from "../protyle/util/compatibility";
import {openCard} from "../card/openCard";
import {openSetting} from "../config";
import {getAllDocks} from "../layout/getAll";
Expand Down Expand Up @@ -317,7 +317,7 @@ export const workspaceMenu = (app: App, rect: DOMRect) => {
});
});
/// #endif
if (!isBrowser() || isInIOS() || isInAndroid()) {
if (!isBrowser() || isInIOS() || isInAndroid() || isInHarmony()) {
window.siyuan.menus.menu.append(new MenuItem({
id: "workspaceList",
label: window.siyuan.languages.workspaceList,
Expand Down Expand Up @@ -497,7 +497,7 @@ export const workspaceMenu = (app: App, rect: DOMRect) => {
}
}).element);
/// #endif
if (isIPad() || isInAndroid() || !isBrowser()) {
if (isIPad() || isInAndroid() || isInHarmony() || !isBrowser()) {
window.siyuan.menus.menu.append(new MenuItem({id: "separator_3", type: "separator"}).element);
window.siyuan.menus.menu.append(new MenuItem({
id: "safeQuit",
Expand Down
13 changes: 10 additions & 3 deletions app/src/mobile/menu/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,14 @@ import {initAbout} from "../settings/about";
import {getRecentDocs} from "./getRecentDocs";
import {initEditor} from "../settings/editor";
import {App} from "../../index";
import {isDisabledFeature, isHuawei, isInAndroid, isInIOS, isIPhone} from "../../protyle/util/compatibility";
import {
isDisabledFeature,
isHuawei,
isInAndroid,
isInHarmony,
isInIOS,
isIPhone
} from "../../protyle/util/compatibility";
import {newFile} from "../../util/newFile";
import {afterLoadPlugin} from "../../plugin/loader";
import {commandPanel} from "../../boot/globalEvent/command/panel";
Expand Down Expand Up @@ -88,8 +95,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()) ? "" : " fn__none"}"></div>
<div class="b3-menu__item b3-menu__item--warning${(isInAndroid() || isInIOS()) ? "" : " fn__none"}" id="menuSafeQuit">
<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">
<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>
Expand Down
6 changes: 3 additions & 3 deletions app/src/mobile/settings/about.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {Dialog} from "../../dialog";
import {fetchPost} from "../../util/fetch";
import {confirmDialog} from "../../dialog/confirmDialog";
import {showMessage} from "../../dialog/message";
import {isInAndroid, isInIOS, isIPad, openByMobile, writeText} from "../../protyle/util/compatibility";
import {isInAndroid, isInHarmony, isInIOS, isIPad, openByMobile, writeText} from "../../protyle/util/compatibility";
import {exitSiYuan, processSync} from "../../dialog/processSystem";
import {pathPosix} from "../../util/pathName";
import {openModel} from "../menu/model";
Expand Down Expand Up @@ -40,7 +40,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())) ? " fn__none" : ""}">
<div class="b3-label${(window.siyuan.config.readonly || (isBrowser() && !isInIOS() && !isInAndroid() && !isIPad() && !isInHarmony())) ? " fn__none" : ""}">
${window.siyuan.languages.about5}
<div class="fn__hr"></div>
<button class="b3-button b3-button--outline fn__block" id="authCode">
Expand Down Expand Up @@ -136,7 +136,7 @@ export const initAbout = () => {
</button>
<div class="b3-label__text">${window.siyuan.languages.importConfTip}</div>
</div>
<div class="b3-label${(!window.siyuan.config.readonly && (isInAndroid() || isInIOS())) ? "" : " fn__none"}">
<div class="b3-label${(!window.siyuan.config.readonly && (isInAndroid() || isInIOS() || isInHarmony())) ? "" : " 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>
Expand Down
6 changes: 3 additions & 3 deletions app/src/protyle/breadcrumb/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import {Menu} from "../../plugin/Menu";
import {getNoContainerElement} from "../wysiwyg/getBlock";
import {openTitleMenu} from "../header/openTitleMenu";
import {emitOpenMenu} from "../../plugin/EventBus";
import {isInAndroid, isIPad, isMac, updateHotkeyTip} from "../util/compatibility";
import {isInAndroid, isInHarmony, isIPad, isMac, updateHotkeyTip} from "../util/compatibility";
import {resize} from "../util/resize";
import {listIndent, listOutdent} from "../wysiwyg/list";
import {improveBreadcrumbAppearance} from "../wysiwyg/renderBacklink";
Expand All @@ -44,7 +44,7 @@ export class Breadcrumb {
element.className = "protyle-breadcrumb";
let padHTML = "";
/// #if BROWSER && !MOBILE
if (isIPad() || isInAndroid()) {
if (isIPad() || isInAndroid() || isInHarmony()) {
padHTML = `<button class="block__icon fn__flex-center ariaLabel" disabled aria-label="${window.siyuan.languages.undo}" data-type="undo"><svg><use xlink:href="#iconUndo"></use></svg></button>
<button class="block__icon fn__flex-center ariaLabel" disabled aria-label="${window.siyuan.languages.redo}" data-type="redo"><svg><use xlink:href="#iconRedo"></use></svg></button>
<button class="block__icon fn__flex-center ariaLabel" disabled aria-label="${window.siyuan.languages.outdent}" data-type="outdent"><svg><use xlink:href="#iconOutdent"></use></svg></button>
Expand Down Expand Up @@ -295,7 +295,7 @@ ${padHTML}
window.siyuan.menus.menu.remove();
});
window.siyuan.menus.menu.append(uploadMenu);
if (!isInAndroid()) {
if (!isInAndroid() && !isInHarmony()) {
window.siyuan.menus.menu.append(new MenuItem({
id: this.mediaRecorder?.isRecording ? "endRecord" : "startRecord",
current: this.mediaRecorder && this.mediaRecorder.isRecording,
Expand Down
19 changes: 8 additions & 11 deletions app/src/protyle/gutter/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ import {
hasClosestByClassName,
hasClosestByMatchTag,
hasClosestByTag,
hasTopClosestByClassName, isInEmbedBlock
hasTopClosestByClassName,
isInEmbedBlock
} from "../util/hasClosest";
import {getIconByType} from "../../editor/getIcon";
import {enterBack, iframeMenu, setFold, tableMenu, videoMenu, zoomOut} from "../../menus/protyle";
Expand All @@ -12,6 +13,7 @@ import {copySubMenu, openAttr, openFileAttr, openWechatNotify} from "../../menus
import {
copyPlainText,
isInAndroid,
isInHarmony,
isMac,
isOnlyMeta,
openByMobile,
Expand All @@ -21,7 +23,8 @@ import {
import {
transaction,
turnsIntoOneTransaction,
turnsIntoTransaction, turnsOneInto,
turnsIntoTransaction,
turnsOneInto,
updateBatchTransaction,
updateTransaction
} from "../wysiwyg/transaction";
Expand All @@ -33,13 +36,7 @@ import {blockRender} from "../render/blockRender";
import {getContenteditableElement, getTopAloneElement, isNotEditBlock} from "../wysiwyg/getBlock";
import * as dayjs from "dayjs";
import {fetchPost} from "../../util/fetch";
import {
cancelSB,
genEmptyElement,
getLangByType,
insertEmptyBlock,
jumpToParent,
} from "../../block/util";
import {cancelSB, genEmptyElement, getLangByType, insertEmptyBlock, jumpToParent,} from "../../block/util";
import {countBlockWord} from "../../layout/status";
import {Constants} from "../../constants";
import {mathRender} from "../render/mathRender";
Expand Down Expand Up @@ -1656,7 +1653,7 @@ export class Gutter {
label: `${window.siyuan.languages.copy} ${window.siyuan.languages.headings1}`,
click() {
fetchPost("/api/block/getHeadingChildrenDOM", {id}, (response) => {
if (isInAndroid()) {
if (isInAndroid() || isInHarmony()) {
window.JSAndroid.writeHTMLClipboard(protyle.lute.BlockDOM2StdMd(response.data).trimEnd(), response.data + Constants.ZWSP);
} else {
writeText(response.data + Constants.ZWSP);
Expand All @@ -1670,7 +1667,7 @@ export class Gutter {
label: `${window.siyuan.languages.cut} ${window.siyuan.languages.headings1}`,
click() {
fetchPost("/api/block/getHeadingChildrenDOM", {id}, (response) => {
if (isInAndroid()) {
if (isInAndroid() || isInHarmony()) {
window.JSAndroid.writeHTMLClipboard(protyle.lute.BlockDOM2StdMd(response.data).trimEnd(), response.data + Constants.ZWSP);
} else {
writeText(response.data + Constants.ZWSP);
Expand Down
Loading

0 comments on commit 65f55b0

Please sign in to comment.