Files
farm-tracker-sao/preload.js
s cf43ada948 feat: système de profils — historiques et drop stats séparés par profil
- Profils stockés dans profiles.json (userData), profil "Défaut" rétro-compatible
- Chaque profil a son propre historique de sessions et app state (fichiers suffixés par id)
- Drop stats : mode Privé (fichier propre) ou Partagé (pool dropstats-shared.json commun)
- Bouton 👤 dans la topbar ouvre une modal de gestion des profils
- Créer, renommer (double-clic), supprimer, activer un profil
- Basculer le mode de drop stats (Privé ↔ Partagé) par profil
- timers et alertes isolés par profil via clés localStorage préfixées par profil id
- Switch de profil = rechargement de page (données propres sans état résiduel)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-02 18:15:42 +02:00

37 lines
2.0 KiB
JavaScript

const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('api', {
pickFolder: () => ipcRenderer.invoke('pick-folder'),
checkLogPath: (p) => ipcRenderer.invoke('check-log-path', p),
getFileSize: (p) => ipcRenderer.invoke('get-file-size', p),
readChunk: (p, start, end) => ipcRenderer.invoke('read-chunk', p, start, end),
loadAppState: () => ipcRenderer.invoke('load-app-state'),
saveAppState: (obj) => ipcRenderer.invoke('save-app-state', obj),
loadDropStats: () => ipcRenderer.invoke('load-drop-stats'),
saveDropStats: (obj) => ipcRenderer.invoke('save-drop-stats', obj),
exportDropStats: () => ipcRenderer.invoke('export-drop-stats'),
importMergeDropStats: () => ipcRenderer.invoke('import-merge-drop-stats'),
loadCommunityDropStats: () => ipcRenderer.invoke('load-community-drop-stats'),
saveCommunityDropStats: (obj) => ipcRenderer.invoke('save-community-drop-stats', obj),
syncDropStats: (serverUrl, clientId, dropStats) =>
ipcRenderer.invoke('sync-drop-stats', { serverUrl, clientId, dropStats }),
fetchCommunityStats: (serverUrl) => ipcRenderer.invoke('fetch-community-stats', { serverUrl }),
getFilePaths: () => ipcRenderer.invoke('get-file-paths'),
loadSessionHistory: () => ipcRenderer.invoke('load-session-history'),
saveSessionHistory: (obj) => ipcRenderer.invoke('save-session-history', obj),
checkUpdateManual: () => ipcRenderer.invoke('check-update-manual'),
onUpdateProgress: (cb) => ipcRenderer.on('update-progress', (_, data) => cb(data)),
getProfiles: () => ipcRenderer.invoke('get-profiles'),
createProfile: (name, mode) => ipcRenderer.invoke('create-profile', { name, dropStatsMode: mode }),
switchProfile: (id) => ipcRenderer.invoke('switch-profile', id),
renameProfile: (id, name) => ipcRenderer.invoke('rename-profile', { id, name }),
deleteProfile: (id) => ipcRenderer.invoke('delete-profile', id),
setDropStatsMode: (id, mode) => ipcRenderer.invoke('set-drop-stats-mode', { id, mode }),
});