68 lines
2.3 KiB
JavaScript
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);
|