mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-16 22:26:16 -08:00
61 lines
1.5 KiB
TypeScript
61 lines
1.5 KiB
TypeScript
/**
|
|
* This module is responsible on handling all the inter process communications
|
|
* between the frontend to the electron backend.
|
|
*/
|
|
|
|
import { app, ipcMain } from 'electron';
|
|
import * as os from 'os';
|
|
import { environment } from '../../environments/environment';
|
|
import {
|
|
DEBUG_TRACE_EVENT_CHANNEL,
|
|
isRendererApiTraceEnabled,
|
|
trace,
|
|
} from '../services/debug-trace';
|
|
|
|
export default class ElectronEvents {
|
|
static bootstrapElectronEvents(): Electron.IpcMain {
|
|
return ipcMain;
|
|
}
|
|
}
|
|
|
|
// Retrieve app version
|
|
ipcMain.handle('get-app-version', (event) => {
|
|
console.log(`Fetching application version... [v${environment.version}]`);
|
|
|
|
return environment.version;
|
|
});
|
|
|
|
// Handle App termination
|
|
ipcMain.on('quit', (event, code) => {
|
|
app.exit(code);
|
|
});
|
|
|
|
ipcMain.on(DEBUG_TRACE_EVENT_CHANNEL, (event, payload) => {
|
|
if (!isRendererApiTraceEnabled()) {
|
|
return;
|
|
}
|
|
|
|
trace('renderer-api', 'event', {
|
|
payload,
|
|
senderId: event.sender.id,
|
|
url: event.sender.getURL(),
|
|
});
|
|
});
|
|
|
|
// Get local IP addresses for remote control URL display
|
|
ipcMain.handle('get-local-ip-addresses', () => {
|
|
const interfaces = os.networkInterfaces();
|
|
const addresses: string[] = [];
|
|
|
|
for (const name of Object.keys(interfaces)) {
|
|
for (const iface of interfaces[name] || []) {
|
|
// Skip internal (loopback) and non-IPv4 addresses
|
|
if (iface.family === 'IPv4' && !iface.internal) {
|
|
addresses.push(iface.address);
|
|
}
|
|
}
|
|
}
|
|
|
|
return addresses;
|
|
});
|