Initial clean project import
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
import {Events} from "../mapi/event/main";
|
||||
import {AppEnv, AppRuntime} from "../mapi/env";
|
||||
import {PageUser} from "./user";
|
||||
import {BrowserWindow, shell} from "electron";
|
||||
import {rendererLoadPath} from "../lib/env-main";
|
||||
import {PageGuide} from "./guide";
|
||||
import {PageSetup} from "./setup";
|
||||
import {DevToolsManager} from "../lib/devtools";
|
||||
import {PageFeedback} from "./feedback";
|
||||
import {PagePayment} from "./payment";
|
||||
import {PageMonitor} from "./monitor";
|
||||
import {PageLog} from "./log";
|
||||
import {PageAgentLogin} from "./agentLogin";
|
||||
|
||||
const Pages = {
|
||||
user: PageUser,
|
||||
guide: PageGuide,
|
||||
setup: PageSetup,
|
||||
payment: PagePayment,
|
||||
feedback: PageFeedback,
|
||||
monitor: PageMonitor,
|
||||
log: PageLog,
|
||||
agentLogin: PageAgentLogin,
|
||||
};
|
||||
|
||||
export const Page = {
|
||||
ready(name: string) {
|
||||
Events.send(name, "APP_READY", {
|
||||
name,
|
||||
AppEnv,
|
||||
});
|
||||
},
|
||||
openWindow: (name: string, win: BrowserWindow, fileName: string) => {
|
||||
win.webContents.on("will-navigate", event => {
|
||||
event.preventDefault();
|
||||
});
|
||||
win.webContents.setWindowOpenHandler(() => {
|
||||
return {action: "deny"};
|
||||
});
|
||||
win.webContents.setWindowOpenHandler(({url}) => {
|
||||
if (url.startsWith("https:") || url.startsWith("http:")) {
|
||||
shell.openExternal(url).then();
|
||||
}
|
||||
return {action: "deny"};
|
||||
});
|
||||
win.on("close", () => {
|
||||
delete AppRuntime.windows[name];
|
||||
});
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
win.webContents.on("did-finish-load", () => {
|
||||
win.focus();
|
||||
Page.ready(name);
|
||||
DevToolsManager.autoShow(win);
|
||||
resolve(undefined);
|
||||
});
|
||||
});
|
||||
rendererLoadPath(win, fileName);
|
||||
DevToolsManager.register(`Page.${name}`, win);
|
||||
AppRuntime.windows[name] = win;
|
||||
return promise;
|
||||
},
|
||||
open: async (
|
||||
name: string,
|
||||
option?: {
|
||||
singleton?: boolean;
|
||||
parent?: BrowserWindow;
|
||||
[key: string]: any;
|
||||
}
|
||||
) => {
|
||||
option = Object.assign(
|
||||
{
|
||||
singleton: true,
|
||||
parent: null,
|
||||
},
|
||||
option
|
||||
);
|
||||
if (!option.parent) {
|
||||
option.parent = AppRuntime.mainWindow;
|
||||
}
|
||||
if (option.singleton && AppRuntime.windows[name]) {
|
||||
AppRuntime.windows[name].show();
|
||||
AppRuntime.windows[name].focus();
|
||||
AppRuntime.windows[name].setParentWindow(option.parent);
|
||||
return;
|
||||
}
|
||||
return Pages[name].open(option);
|
||||
},
|
||||
registerWindow(name: string, win: BrowserWindow) {
|
||||
AppRuntime.windows[name] = win;
|
||||
},
|
||||
unregisterWindow(name: string) {
|
||||
delete AppRuntime.windows[name];
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user