Files
TrueGrowth/apps/electron/preload.cjs
jiam 5119ac0ef8
Some checks failed
CI / main (push) Has been cancelled
CI / release-e2e (push) Has been cancelled
Sync latest TrueGrowth updates
2026-07-08 02:03:18 +08:00

68 lines
2.3 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);
},
};
const updatesBridge = {
getState: () => ipcRenderer.invoke('truegrowth-update:get-state'),
check: () => ipcRenderer.invoke('truegrowth-update:check'),
download: () => ipcRenderer.invoke('truegrowth-update:download'),
install: () => ipcRenderer.invoke('truegrowth-update:install'),
openChannel: () => ipcRenderer.invoke('truegrowth-update:open-channel'),
onStateChange: (callback) => {
if (typeof callback !== 'function') {
return () => undefined;
}
const listener = (_event, state) => callback(state);
ipcRenderer.on('truegrowth-update:state', listener);
return () =>
ipcRenderer.removeListener('truegrowth-update:state', listener);
},
};
contextBridge.exposeInMainWorld('trueGrowthRuntime', {
app: 'TrueGrowth',
platform: process.platform,
assetMode: 'local',
localApiBaseUrl: 'http://127.0.0.1:48177/local-api',
windowControls,
theme: themeBridge,
updates: updatesBridge,
});
contextBridge.exposeInMainWorld('__OPENTU_DESKTOP__', true);
contextBridge.exposeInMainWorld('__OPENTU_CDN__', localCdnPreference);
contextBridge.exposeInMainWorld('__AITU_CDN__', localCdnPreference);