mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-02-09 00:34:20 +01:00
103 lines
4.7 KiB
TypeScript
103 lines
4.7 KiB
TypeScript
import {addScript, addScriptSync} from "../protyle/util/addScript";
|
||
import {Constants} from "../constants";
|
||
import {onMessage} from "./util/onMessage";
|
||
import {genUUID} from "../util/genID";
|
||
import {hasClosestByAttribute} from "../protyle/util/hasClosest";
|
||
import {Model} from "../layout/Model";
|
||
import "../assets/scss/mobile.scss";
|
||
import {Menus} from "../menus";
|
||
import {addBaseURL, getIdFromSYProtocol, isSYProtocol, setNoteBook} from "../util/pathName";
|
||
import {handleTouchEnd, handleTouchMove, handleTouchStart} from "./util/touch";
|
||
import {fetchGet, fetchPost} from "../util/fetch";
|
||
import {initFramework} from "./util/initFramework";
|
||
import {addGA, initAssets, loadAssets} from "../util/assets";
|
||
import {promiseTransactions} from "../protyle/wysiwyg/transaction";
|
||
import {bootSync} from "../dialog/processSystem";
|
||
import {initMessage} from "../dialog/message";
|
||
import {goBack} from "./util/MobileBackFoward";
|
||
import {hideKeyboardToolbar, showKeyboardToolbar} from "./util/keyboardToolbar";
|
||
import {getLocalStorage} from "../protyle/util/compatibility";
|
||
import {openMobileFileById} from "./editor";
|
||
import {getSearch} from "../util/functions";
|
||
import {initRightMenu} from "./menu";
|
||
import {openChangelog} from "../boot/openChangelog";
|
||
import {registerServiceWorker} from "../util/serviceWorker";
|
||
|
||
class App {
|
||
constructor() {
|
||
if (!window.webkit?.messageHandlers && !window.JSAndroid) {
|
||
registerServiceWorker(`${Constants.SERVICE_WORKER_PATH}?v=${Constants.SIYUAN_VERSION}`);
|
||
}
|
||
addScriptSync(`${Constants.PROTYLE_CDN}/js/lute/lute.min.js?v=${Constants.SIYUAN_VERSION}`, "protyleLuteScript");
|
||
addScript(`${Constants.PROTYLE_CDN}/js/protyle-html.js?v=${Constants.SIYUAN_VERSION}`, "protyleWcHtmlScript");
|
||
addBaseURL();
|
||
window.siyuan = {
|
||
transactions: [],
|
||
reqIds: {},
|
||
backStack: [],
|
||
dialogs: [],
|
||
blockPanels: [],
|
||
mobile: {},
|
||
ws: new Model({
|
||
id: genUUID(),
|
||
type: "main",
|
||
msgCallback(data) {
|
||
onMessage(data);
|
||
}
|
||
})
|
||
};
|
||
// 不能使用 touchstart,否则会被 event.stopImmediatePropagation() 阻塞
|
||
window.addEventListener("click", (event: MouseEvent & { target: HTMLElement }) => {
|
||
if (!window.siyuan.menus.menu.element.contains(event.target) && !hasClosestByAttribute(event.target, "data-menu", "true")) {
|
||
window.siyuan.menus.menu.remove();
|
||
}
|
||
});
|
||
fetchPost("/api/system/getConf", {}, confResponse => {
|
||
confResponse.data.conf.keymap = Constants.SIYUAN_KEYMAP;
|
||
window.siyuan.config = confResponse.data.conf;
|
||
getLocalStorage(() => {
|
||
fetchGet(`/appearance/langs/${window.siyuan.config.appearance.lang}.json?v=${Constants.SIYUAN_VERSION}`, (lauguages) => {
|
||
window.siyuan.languages = lauguages;
|
||
window.siyuan.menus = new Menus();
|
||
document.title = window.siyuan.languages.siyuanNote;
|
||
bootSync();
|
||
loadAssets(confResponse.data.conf.appearance);
|
||
initMessage();
|
||
initAssets();
|
||
fetchPost("/api/setting/getCloudUser", {}, userResponse => {
|
||
window.siyuan.user = userResponse.data;
|
||
fetchPost("/api/system/getEmojiConf", {}, emojiResponse => {
|
||
window.siyuan.emojis = emojiResponse.data as IEmoji[];
|
||
initFramework();
|
||
initRightMenu();
|
||
openChangelog();
|
||
});
|
||
});
|
||
addGA();
|
||
});
|
||
});
|
||
document.addEventListener("touchstart", handleTouchStart, false);
|
||
document.addEventListener("touchmove", handleTouchMove, false);
|
||
document.addEventListener("touchend", handleTouchEnd, false);
|
||
});
|
||
setNoteBook();
|
||
promiseTransactions();
|
||
}
|
||
}
|
||
|
||
new App();
|
||
|
||
window.goBack = goBack;
|
||
window.showKeyboardToolbar = (height) => {
|
||
document.getElementById("keyboardToolbar").setAttribute("data-keyboardheight", (height ? height : window.innerHeight / 2 - 42).toString());
|
||
showKeyboardToolbar();
|
||
};
|
||
window.hideKeyboardToolbar = hideKeyboardToolbar;
|
||
window.openFileByURL = (openURL) => {
|
||
if (openURL && isSYProtocol(openURL)) {
|
||
openMobileFileById(getIdFromSYProtocol(openURL),
|
||
getSearch("focus", openURL) === "1" ? [Constants.CB_GET_ALL, Constants.CB_GET_FOCUS] : [Constants.CB_GET_FOCUS, Constants.CB_GET_CONTEXT]);
|
||
return true;
|
||
}
|
||
return false;
|
||
};
|