Files
esdp/src/main/ipc/ipcMainHandler.scrubHistory.ts
2026-02-25 10:50:46 -08:00

68 lines
1.8 KiB
TypeScript

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<typeof getScrubHistory> | ReturnType<typeof getScrubHistoryPage>
> {
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 };
}
}