From 30e9343aaa94bf6af1adb806c194e5f8105ff0c9 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Fri, 11 Aug 2023 11:54:44 +0800 Subject: [PATCH] :art: fix https://github.com/siyuan-note/siyuan/issues/8948 --- app/src/menus/workspace.ts | 108 +++++++++++++++++++++++++++++++++++-- app/src/util/assets.ts | 6 ++- 2 files changed, 108 insertions(+), 6 deletions(-) diff --git a/app/src/menus/workspace.ts b/app/src/menus/workspace.ts index a24c284af..c031f1c48 100644 --- a/app/src/menus/workspace.ts +++ b/app/src/menus/workspace.ts @@ -4,7 +4,7 @@ import {dialog, getCurrentWindow} from "@electron/remote"; import {ipcRenderer, shell} from "electron"; /// #endif import {openHistory} from "../history/history"; -import {getOpenNotebookCount, originalPath} from "../util/pathName"; +import {getOpenNotebookCount, originalPath, pathPosix} from "../util/pathName"; import {mountHelp, newDailyNote} from "../util/mount"; import {fetchPost} from "../util/fetch"; import {Constants} from "../constants"; @@ -13,7 +13,7 @@ import {openCard} from "../card/openCard"; import {openSetting} from "../config"; import {getAllDocks} from "../layout/getAll"; import {exportLayout, getDockByType} from "../layout/util"; -import {lockScreen} from "../dialog/processSystem"; +import {exitSiYuan, lockScreen} from "../dialog/processSystem"; import {showMessage} from "../dialog/message"; import {unicode2Emoji} from "../emoji"; import {Dock} from "../layout/dock"; @@ -77,9 +77,10 @@ export const workspaceMenu = (app: App, rect: DOMRect) => { type: "submenu", submenu: dockMenu }).element); - /// #if !BROWSER if (!window.siyuan.config.readonly) { - const workspaceSubMenu: IMenu[] = [{ + let workspaceSubMenu: IMenu[] + /// #if !BROWSER + workspaceSubMenu = [{ label: `${window.siyuan.languages.new} / ${window.siyuan.languages.openBy}`, iconHTML: "", click: async () => { @@ -105,6 +106,104 @@ export const workspaceMenu = (app: App, rect: DOMRect) => { response.data.forEach((item: IWorkspace) => { workspaceSubMenu.push(workspaceItem(item) as IMenu); }); + /// #else + workspaceSubMenu = [{ + label: window.siyuan.languages.new, + iconHTML: "", + click() { + const createWorkspaceDialog = new Dialog({ + title: window.siyuan.languages.new, + content: `
+ +
+
+
+ +
`, + width: "520px", + }); + const inputElement = createWorkspaceDialog.element.querySelector("input"); + inputElement.focus(); + const btnsElement = createWorkspaceDialog.element.querySelectorAll(".b3-button"); + btnsElement[0].addEventListener("click", () => { + createWorkspaceDialog.destroy(); + }); + btnsElement[1].addEventListener("click", () => { + fetchPost("/api/system/createWorkspaceDir", { + path: pathPosix().join(pathPosix().dirname(window.siyuan.config.system.workspaceDir), inputElement.value) + }, () => { + createWorkspaceDialog.destroy(); + }); + }); + } + }, { + label: `${window.siyuan.languages.openBy}...`, + iconHTML: "", + click() { + fetchPost("/api/system/getMobileWorkspaces", {}, (response) => { + let selectHTML = ""; + response.data.forEach((item: string, index: number) => { + selectHTML += ``; + }); + const openWorkspaceDialog = new Dialog({ + title: window.siyuan.languages.openBy, + content: `
+ +
+
+
+ +
`, + width: "520px", + }); + const btnsElement = openWorkspaceDialog.element.querySelectorAll(".b3-button"); + btnsElement[0].addEventListener("click", () => { + openWorkspaceDialog.destroy(); + }); + btnsElement[1].addEventListener("click", () => { + const openPath = openWorkspaceDialog.element.querySelector("select").value; + if (openPath === window.siyuan.config.system.workspaceDir) { + openWorkspaceDialog.destroy(); + return; + } + confirmDialog(window.siyuan.languages.confirm, `${pathPosix().basename(window.siyuan.config.system.workspaceDir)} -> ${pathPosix().basename(openPath)}?`, () => { + fetchPost("/api/system/setWorkspaceDir", { + path: openPath + }, () => { + exitSiYuan(); + }); + }); + }); + }); + } + }]; + workspaceSubMenu.push({type: "separator"}); + response.data.forEach((item: IWorkspace) => { + workspaceSubMenu.push({ + iconHTML: Constants.ZWSP, + action: "iconCloseRound", + current: window.siyuan.config.system.workspaceDir === item.path, + label: pathPosix().basename(item.path), + bind(menuElement) { + menuElement.addEventListener("click", (event) => { + if (hasClosestByClassName(event.target as Element, "b3-menu__action")) { + event.preventDefault(); + event.stopPropagation(); + fetchPost("/api/system/removeWorkspaceDir", {path: item.path}); + return; + } + confirmDialog(window.siyuan.languages.confirm, `${pathPosix().basename(window.siyuan.config.system.workspaceDir)} -> ${pathPosix().basename(item.path)}?`, () => { + fetchPost("/api/system/setWorkspaceDir", { + path: item.path + }, () => { + exitSiYuan(); + }); + }); + }); + } + }); + }); + /// #endif window.siyuan.menus.menu.append(new MenuItem({ label: window.siyuan.languages.workspaceList, icon: "iconWorkspace", @@ -112,7 +211,6 @@ export const workspaceMenu = (app: App, rect: DOMRect) => { submenu: workspaceSubMenu, }).element); } - /// #endif const layoutSubMenu: IMenu[] = [{ iconHTML: Constants.ZWSP, label: window.siyuan.languages.save, diff --git a/app/src/util/assets.ts b/app/src/util/assets.ts index a3bcf8509..ccc4be403 100644 --- a/app/src/util/assets.ts +++ b/app/src/util/assets.ts @@ -215,7 +215,11 @@ export const setInlineStyle = (set = true) => { .protyle-wysiwyg .h5 img.emoji, .b3-typography h5 img.emoji {width:${Math.floor(window.siyuan.config.editor.fontSize * 1.13 * 1.25)}px} .protyle-wysiwyg .h6 img.emoji, .b3-typography h6 img.emoji {width:${Math.floor(window.siyuan.config.editor.fontSize * 1.25)}px}`; if (window.siyuan.config.editor.fontFamily) { - style += `.b3-typography:not(.b3-typography--default), .protyle-wysiwyg, .protyle-title, .protyle-title__input{font-family: "${window.siyuan.config.editor.fontFamily}", "Helvetica Neue", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Microsoft Yahei", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols" !important;}`; + style += `\n.b3-typography:not(.b3-typography--default), .protyle-wysiwyg, .protyle-title, .protyle-title__input{font-family: "${window.siyuan.config.editor.fontFamily}", "Helvetica Neue", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Microsoft Yahei", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols" !important;}`; + } + // pad 端菜单移除显示,如工作空间 + if ("ontouchend" in document) { + style += "\n.b3-menu .b3-menu__action {opacity: 0.68;}"; } if (set) { document.getElementById("editorFontSize").innerHTML = style;