Files
TrueGrowth/apps/electron/preload.cjs

50 lines
1.6 KiB
JavaScript

const { contextBridge, ipcRenderer } = require('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) => {
if (typeof callback !== 'function') {
return () => undefined;
}
const listener = (_event, state) => callback(state);
ipcRenderer.on('truegrowth-window:state', listener);
return () =>
ipcRenderer.removeListener('truegrowth-window:state', listener);
},
};
const themeBridge = {
getSystemTheme: () => ipcRenderer.invoke('truegrowth-theme:get-system'),
onSystemThemeChange: (callback) => {
if (typeof callback !== 'function') {
return () => undefined;
}
const listener = (_event, state) => callback(state);
ipcRenderer.on('truegrowth-theme:system', listener);
return () =>
ipcRenderer.removeListener('truegrowth-theme:system', listener);
},
};
contextBridge.exposeInMainWorld('trueGrowthRuntime', {
app: 'TrueGrowth',
platform: process.platform,
assetMode: 'local',
localApiBaseUrl: 'http://127.0.0.1:48177/local-api',
windowControls,
theme: themeBridge,
});
contextBridge.exposeInMainWorld('__OPENTU_DESKTOP__', true);
contextBridge.exposeInMainWorld('__OPENTU_CDN__', localCdnPreference);
contextBridge.exposeInMainWorld('__AITU_CDN__', localCdnPreference);