2024-12-09 00:56:55 -06:00
|
|
|
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
|
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
2025-01-06 20:35:57 -06:00
|
|
|
import { toast, ToastIcon } from '../components/Toast';
|
2024-12-09 00:56:55 -06:00
|
|
|
|
|
|
|
declare global {
|
|
|
|
interface Window {
|
|
|
|
electronAPI: any;
|
|
|
|
webOS: any;
|
|
|
|
webOSDev: any;
|
|
|
|
targetAPI: any;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-12-18 20:43:47 -06:00
|
|
|
let preloadData: Record<string, any> = {};
|
2024-12-09 00:56:55 -06:00
|
|
|
|
|
|
|
// @ts-ignore
|
|
|
|
if (TARGET === 'electron') {
|
|
|
|
// @ts-ignore
|
|
|
|
const electronAPI = __non_webpack_require__('electron');
|
|
|
|
|
2025-01-06 20:35:57 -06:00
|
|
|
electronAPI.ipcRenderer.on("device-info", (_event, value: any) => {
|
2025-01-07 22:47:46 -06:00
|
|
|
preloadData.deviceInfo = value;
|
2024-12-09 00:56:55 -06:00
|
|
|
})
|
|
|
|
|
|
|
|
electronAPI.contextBridge.exposeInMainWorld('targetAPI', {
|
|
|
|
onDeviceInfo: (callback: any) => electronAPI.ipcRenderer.on("device-info", callback),
|
2025-01-06 20:35:57 -06:00
|
|
|
onConnect: (callback: any) => electronAPI.ipcRenderer.on("connect", callback),
|
|
|
|
onDisconnect: (callback: any) => electronAPI.ipcRenderer.on("disconnect", callback),
|
2025-01-08 15:30:39 -06:00
|
|
|
onPing: (callback: any) => electronAPI.ipcRenderer.on("ping", callback),
|
2025-01-07 22:47:46 -06:00
|
|
|
getDeviceInfo: () => preloadData.deviceInfo,
|
2024-12-09 00:56:55 -06:00
|
|
|
});
|
|
|
|
|
|
|
|
// @ts-ignore
|
|
|
|
} else if (TARGET === 'webOS') {
|
2025-01-06 20:35:57 -06:00
|
|
|
try {
|
2025-01-07 22:47:46 -06:00
|
|
|
preloadData = {
|
|
|
|
onDeviceInfoCb: () => { console.log('Main: Callback not set while fetching device info'); },
|
|
|
|
onConnectCb: (_, value: any) => { console.log('Main: Callback not set while calling onConnect'); },
|
|
|
|
onDisconnectCb: (_, value: any) => { console.log('Main: Callback not set while calling onDisconnect'); },
|
2025-01-08 15:30:39 -06:00
|
|
|
onPingCb: (_, value: any) => { console.log('Main: Callback not set while calling onPing'); },
|
2025-01-06 20:35:57 -06:00
|
|
|
};
|
2024-12-09 00:56:55 -06:00
|
|
|
|
2025-01-07 22:47:46 -06:00
|
|
|
window.targetAPI = {
|
|
|
|
onDeviceInfo: (callback: () => void) => preloadData.onDeviceInfoCb = callback,
|
|
|
|
onConnect: (callback: (_, value: any) => void) => preloadData.onConnectCb = callback,
|
|
|
|
onDisconnect: (callback: (_, value: any) => void) => preloadData.onDisconnectCb = callback,
|
2025-01-08 15:30:39 -06:00
|
|
|
onPing: (callback: (_, value: any) => void) => preloadData.onPingCb = callback,
|
2025-01-07 22:47:46 -06:00
|
|
|
getDeviceInfo: () => preloadData.deviceInfo,
|
2025-01-06 20:35:57 -06:00
|
|
|
};
|
|
|
|
}
|
|
|
|
catch (err) {
|
|
|
|
console.error(`Main: preload ${JSON.stringify(err)}`);
|
|
|
|
toast(`Main: preload ${JSON.stringify(err)}`, ToastIcon.ERROR);
|
|
|
|
}
|
2024-12-09 00:56:55 -06:00
|
|
|
} else {
|
|
|
|
// @ts-ignore
|
|
|
|
console.log(`Attempting to run FCast player on unsupported target: ${TARGET}`);
|
|
|
|
}
|
2024-12-18 20:43:47 -06:00
|
|
|
|
|
|
|
export {
|
|
|
|
preloadData
|
|
|
|
};
|