Track bundled vendor runtime sources
This commit is contained in:
92
vendor/aigcpanel/electron/page/index.ts
vendored
Normal file
92
vendor/aigcpanel/electron/page/index.ts
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
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";
|
||||
|
||||
const Pages = {
|
||||
user: PageUser,
|
||||
guide: PageGuide,
|
||||
setup: PageSetup,
|
||||
payment: PagePayment,
|
||||
feedback: PageFeedback,
|
||||
monitor: PageMonitor,
|
||||
log: PageLog,
|
||||
};
|
||||
|
||||
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