mirror of
https://github.com/Boof2015/prism.git
synced 2026-08-19 03:54:23 +02:00
33 lines
1.6 KiB
TypeScript
33 lines
1.6 KiB
TypeScript
import { contextBridge, ipcRenderer } from 'electron'
|
|
|
|
// Expose Electron API to renderer
|
|
contextBridge.exposeInMainWorld('electronAPI', {
|
|
platform: process.platform,
|
|
minimize: () => ipcRenderer.send('window:minimize'),
|
|
close: () => ipcRenderer.send('window:close'),
|
|
toggleAlwaysOnTop: () => ipcRenderer.send('window:toggle-always-on-top'),
|
|
isAlwaysOnTop: () => ipcRenderer.invoke('window:is-always-on-top'),
|
|
getDesktopSources: () => ipcRenderer.invoke('audio:get-desktop-sources') as Promise<{ id: string; name: string }[]>,
|
|
expandSettings: (panelHeight: number) => ipcRenderer.send('window:expand-settings', panelHeight),
|
|
collapseSettings: (panelHeight: number) => ipcRenderer.send('window:collapse-settings', panelHeight),
|
|
onAlwaysOnTopChanged: (callback: (isOnTop: boolean) => void) => {
|
|
const handler = (_event: Electron.IpcRendererEvent, isOnTop: boolean): void => callback(isOnTop)
|
|
ipcRenderer.on('window:always-on-top-changed', handler)
|
|
return () => ipcRenderer.removeListener('window:always-on-top-changed', handler)
|
|
},
|
|
})
|
|
|
|
// Native DSP module — load if available, gracefully degrade if not
|
|
let visualizerDSP: unknown = null
|
|
try {
|
|
const isDev = process.env.NODE_ENV === 'development'
|
|
const modulePath = isDev
|
|
? require('path').join(__dirname, '../../native/build/Release/visualizer_dsp.node')
|
|
: require('path').join(process.resourcesPath!, 'native/visualizer_dsp.node')
|
|
visualizerDSP = require(modulePath)
|
|
} catch {
|
|
console.warn('Native DSP module not available — using JS fallback')
|
|
}
|
|
|
|
contextBridge.exposeInMainWorld('visualizerAPI', visualizerDSP)
|