mirror of
https://github.com/Boof2015/prism.git
synced 2026-08-19 03:54:23 +02:00
initial concept
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user