37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import { contextBridge, ipcRenderer } from 'electron';
|
|
|
|
const localCdnPreference = {
|
|
cdn: 'local',
|
|
latency: 0,
|
|
timestamp: Date.now(),
|
|
};
|
|
|
|
const windowControls = {
|
|
minimize: () => ipcRenderer.invoke('truegrowth-window:minimize'),
|
|
toggleMaximize: () => ipcRenderer.invoke('truegrowth-window:toggle-maximize'),
|
|
close: () => ipcRenderer.invoke('truegrowth-window:close'),
|
|
getState: () => ipcRenderer.invoke('truegrowth-window:is-maximized'),
|
|
onStateChange: (callback: (state: unknown) => void) => {
|
|
if (typeof callback !== 'function') {
|
|
return () => undefined;
|
|
}
|
|
const listener = (_event: Electron.IpcRendererEvent, state: unknown) =>
|
|
callback(state);
|
|
ipcRenderer.on('truegrowth-window:state', listener);
|
|
return () =>
|
|
ipcRenderer.removeListener('truegrowth-window:state', listener);
|
|
},
|
|
};
|
|
|
|
contextBridge.exposeInMainWorld('trueGrowthRuntime', {
|
|
app: 'TrueGrowth',
|
|
platform: process.platform,
|
|
assetMode: 'local',
|
|
localApiBaseUrl: 'http://127.0.0.1:48177/local-api',
|
|
windowControls,
|
|
});
|
|
|
|
contextBridge.exposeInMainWorld('__OPENTU_DESKTOP__', true);
|
|
contextBridge.exposeInMainWorld('__OPENTU_CDN__', localCdnPreference);
|
|
contextBridge.exposeInMainWorld('__AITU_CDN__', localCdnPreference);
|