Files
dbx/apps/desktop/src/lib/app/appUpdateInstallFlow.ts
T

32 lines
1003 B
TypeScript

import { shouldBlockAppUpdate } from "@/lib/app/appUpdateTaskGuard";
export type UpdateDownloadFlowResult = "blocked" | "downloaded" | "installed";
interface UpdateDownloadFlowOptions {
getActiveTaskCount: () => number;
download: () => Promise<void>;
install: () => Promise<void>;
}
interface DownloadedUpdateInstallOptions {
getActiveTaskCount: () => number;
install: () => Promise<void>;
}
export async function downloadAndInstallUpdateWhenIdle(options: UpdateDownloadFlowOptions): Promise<UpdateDownloadFlowResult> {
if (shouldBlockAppUpdate(options.getActiveTaskCount())) return "blocked";
await options.download();
if (shouldBlockAppUpdate(options.getActiveTaskCount())) return "downloaded";
await options.install();
return "installed";
}
export async function installDownloadedUpdateWhenIdle(options: DownloadedUpdateInstallOptions): Promise<boolean> {
if (shouldBlockAppUpdate(options.getActiveTaskCount())) return false;
await options.install();
return true;
}