Initial TrueGrowth source import
This commit is contained in:
49
apps/electron/preload.cjs
Normal file
49
apps/electron/preload.cjs
Normal file
@@ -0,0 +1,49 @@
|
||||
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);
|
||||
Reference in New Issue
Block a user