Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
Daniel 2025-12-09 12:09:23 +08:00
parent 444b38aa26
commit 00d00b54ef
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
6 changed files with 24 additions and 23 deletions

View file

@ -280,20 +280,20 @@ export const kernelError = () => {
}
};
export const exitSiYuan = async () => {
export const exitSiYuan = async (setCurrentWorkspace = true) => {
hideAllElements(["util"]);
/// #if MOBILE
if (window.siyuan.mobile.editor) {
await saveScroll(window.siyuan.mobile.editor.protyle);
}
/// #endif
fetchPost("/api/system/exit", {force: false}, (response) => {
fetchPost("/api/system/exit", {force: false, setCurrentWorkspace}, (response) => {
if (response.code === 1) { // 同步执行失败
const msgId = showMessage(response.msg, response.data.closeTimeout, "error");
const buttonElement = document.querySelector(`#message [data-id="${msgId}"] button`);
if (buttonElement) {
buttonElement.addEventListener("click", () => {
fetchPost("/api/system/exit", {force: true}, () => {
fetchPost("/api/system/exit", {force: true, setCurrentWorkspace}, () => {
/// #if !BROWSER
ipcRenderer.send(Constants.SIYUAN_QUIT, location.port);
/// #else
@ -318,6 +318,7 @@ export const exitSiYuan = async () => {
confirmDialog(window.siyuan.languages.tip, response.msg, () => {
fetchPost("/api/system/exit", {
force: true,
setCurrentWorkspace,
execInstallPkg: 2 // 0默认检查新版本1不执行新版本安装2执行新版本安装
}, () => {
/// #if !BROWSER
@ -335,6 +336,7 @@ export const exitSiYuan = async () => {
}, () => {
fetchPost("/api/system/exit", {
force: true,
setCurrentWorkspace,
execInstallPkg: 1 // 0默认检查新版本1不执行新版本安装2执行新版本安装
}, () => {
/// #if !BROWSER

View file

@ -7,14 +7,7 @@ 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, isInIOS, isIPad, setStorageVal, writeText} from "../protyle/util/compatibility";
import {openCard} from "../card/openCard";
import {openSetting} from "../config";
import {getAllDocks} from "../layout/getAll";
@ -287,7 +280,7 @@ export const workspaceMenu = (app: App, rect: DOMRect) => {
fetchPost("/api/system/setWorkspaceDir", {
path: openPath
}, () => {
exitSiYuan();
exitSiYuan(false);
});
});
});
@ -317,7 +310,7 @@ export const workspaceMenu = (app: App, rect: DOMRect) => {
fetchPost("/api/system/setWorkspaceDir", {
path: item.path
}, () => {
exitSiYuan();
exitSiYuan(false);
});
});
});

View file

@ -358,7 +358,7 @@ export const initAbout = () => {
fetchPost("/api/system/setWorkspaceDir", {
path: openPath
}, () => {
exitSiYuan();
exitSiYuan(false);
});
});
});
@ -412,7 +412,7 @@ export const initAbout = () => {
fetchPost("/api/system/setWorkspaceDir", {
path: target.getAttribute("data-path")
}, () => {
exitSiYuan();
exitSiYuan(false);
});
});
event.preventDefault();

View file

@ -785,7 +785,13 @@ func exit(c *gin.Context) {
execInstallPkg = int(execInstallPkgArg.(float64))
}
exitCode := model.Close(force, true, execInstallPkg)
setCurrentWorkspaceArg := arg["setCurrentWorkspace"]
setCurrentWorkspace := true
if nil != setCurrentWorkspaceArg {
setCurrentWorkspace = setCurrentWorkspaceArg.(bool)
}
exitCode := model.Close(force, setCurrentWorkspace, execInstallPkg)
ret.Code = exitCode
switch exitCode {
case 0:

View file

@ -333,13 +333,8 @@ func setWorkspaceDir(c *gin.Context) {
return
}
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container || util.ContainerHarmony == util.Container {
util.PushMsg(model.Conf.Language(42), 1000*15)
go func() {
time.Sleep(1 * time.Second)
model.Close(false, false, 1)
}()
}
util.PushMsg(model.Conf.Language(42), 1000*15)
time.Sleep(1 * time.Second)
}
func isInvalidWorkspacePath(absPath string) bool {

View file

@ -18,6 +18,7 @@ package server
import (
"bytes"
"errors"
"fmt"
"html/template"
"mime"
@ -222,6 +223,10 @@ func Serve(fastMode bool) {
}
if err = util.HttpServer.Serve(ln); err != nil {
if errors.Is(err, http.ErrServerClosed) {
return
}
if !fastMode {
logging.LogErrorf("boot kernel failed: %s", err)
os.Exit(logging.ExitCodeUnavailablePort)