import { BrowserWindow } from 'electron' import { IPC } from '@shared/ipc' import { getExercises, getStateForRenderer, updateExercise } from './store' export function broadcastState(): void { // Используем variant без `history` — иначе при 10k записей через IPC // на каждый markDone летит 500KB JSON × M подписчиков. Renderer // запрашивает историю отдельно через IPC.getHistory. const state = getStateForRenderer() for (const win of BrowserWindow.getAllWindows()) { if (!win.isDestroyed()) win.webContents.send(IPC.evtStateChanged, state) } } /** Сигнализирует renderer'у что историю надо перетянуть. */ export function broadcastHistoryChanged(): void { for (const win of BrowserWindow.getAllWindows()) { if (!win.isDestroyed()) win.webContents.send(IPC.evtHistoryChanged) } } export function snoozeAll(minutes: number): void { const now = Date.now() for (const ex of getExercises()) { if (!ex.enabled) continue updateExercise(ex.id, { nextFireAt: now + minutes * 60_000 }) } broadcastState() }