import { BrowserWindow } from "electron"; import log from "electron-log/main"; import ipcTypes from "../../util/ipcTypes.json"; import { clearScrubHistory, deleteScrubHistoryJob, getScrubHistory, getScrubHistoryPage, } from "../db/scrub-history-db"; export async function ScrubHistoryGetAll( _event: Electron.IpcMainInvokeEvent, params?: { page?: number; pageSize?: number }, ): Promise< ReturnType | ReturnType > { try { if ( params && (params.page !== undefined || params.pageSize !== undefined) ) { return getScrubHistoryPage({ page: params.page ?? 1, pageSize: params.pageSize ?? 10, }); } return getScrubHistory(); } catch (error) { log.error("[ScrubHistoryGetAll] failed", error); return []; } } function notifyHistoryUpdated(): void { const mainWindow = BrowserWindow.getAllWindows()[0]; if (mainWindow && !mainWindow.isDestroyed()) { mainWindow.webContents.send(ipcTypes.toRenderer.scrub.historyUpdated); } } export async function ScrubHistoryDeleteJob( _event: Electron.IpcMainInvokeEvent, jobId: string, ): Promise<{ ok: boolean; deletedJobs: number }> { try { const { deletedJobs } = deleteScrubHistoryJob(jobId); if (deletedJobs > 0) notifyHistoryUpdated(); return { ok: true, deletedJobs }; } catch (error) { log.error("[ScrubHistoryDeleteJob] failed", error); return { ok: false, deletedJobs: 0 }; } } export async function ScrubHistoryClearAll(): Promise<{ ok: boolean; clearedJobs: number; }> { try { const { clearedJobs } = clearScrubHistory(); if (clearedJobs > 0) notifyHistoryUpdated(); return { ok: true, clearedJobs }; } catch (error) { log.error("[ScrubHistoryClearAll] failed", error); return { ok: false, clearedJobs: 0 }; } }