68 lines
1.8 KiB
TypeScript
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 };
|
|
}
|
|
}
|