51245db256
- 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
60 lines
2.0 KiB
JavaScript
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é');
|