Files
PTT-Live/electron/preload.js
T
benoit 51245db256 feat: gestion groupes sans serveur via IPC + lecture YAML directe
- Ajout du package yaml dans electron pour parser config.yaml
- Handlers IPC groups:list/create/update/delete lisent/écrivent config.yaml
  directement depuis le Main Process (sans serveur requis)
- fetchGroups() utilise toujours IPC (plus d'appel REST pour la lecture)
- editGroup/deleteGroup/addGroup : REST API si serveur actif, IPC sinon
- loadViewData : onglet Groupes chargé même si serveur arrêté
- Note affichée quand le serveur est arrêté : modifications appliquées
  au prochain démarrage
2026-07-01 13:36:12 +02:00

60 lines
2.0 KiB
JavaScript

/**
* PTT Live Desktop - Preload Script
* Bridge sécurisé entre Main Process et Renderer Process
*/
const { contextBridge, ipcRenderer } = require('electron');
// Même logique que dans main.js : doit rester synchronisé avec SERVER_URL
// (127.0.0.1 : le serveur n'écoute qu'en IPv4, voir le commentaire dans main.js)
const SERVER_PORT = process.env.PORT || 3000;
const ENABLE_HTTPS = process.env.ENABLE_HTTPS !== 'false';
const SERVER_URL = `${ENABLE_HTTPS ? 'https' : 'http'}://127.0.0.1:${SERVER_PORT}`;
// Exposer l'API au renderer de manière sécurisée
contextBridge.exposeInMainWorld('electronAPI', {
serverUrl: SERVER_URL,
// Contrôle serveur
server: {
start: () => ipcRenderer.invoke('server:start'),
stop: () => ipcRenderer.invoke('server:stop'),
status: () => ipcRenderer.invoke('server:status'),
ping: () => ipcRenderer.invoke('server:ping'),
// Écouter les événements du serveur
onStatus: (callback) => {
ipcRenderer.on('server:status', (event, data) => callback(data));
},
onLog: (callback) => {
ipcRenderer.on('server:log', (event, data) => callback(data));
}
},
// QR Code (généré côté Main Process, pas de dépendance CDN)
generateQRCode: (text) => ipcRenderer.invoke('qrcode:generate', text),
// IP réseau locale (même détection que pour les certificats mkcert)
getNetworkIP: () => ipcRenderer.invoke('network:ip'),
// Export/import configuration YAML via dialog système
config: {
export: () => ipcRenderer.invoke('config:export'),
import: () => ipcRenderer.invoke('config:import')
},
// Groupes : lecture/écriture YAML directe (fonctionne sans serveur)
groups: {
list: () => ipcRenderer.invoke('groups:list'),
create: (data) => ipcRenderer.invoke('groups:create', data),
update: (data) => ipcRenderer.invoke('groups:update', data),
delete: (data) => ipcRenderer.invoke('groups:delete', data)
},
// Helpers
platform: process.platform,
version: process.env.npm_package_version || '0.3.0'
});
console.log('✅ Preload script chargé');