import type { PatchStatus } from "@app/views/repo/router"; import type { ProjectPayload } from "@bindings/repo/ProjectPayload"; import sum from "lodash/sum"; export const patchCounts = $state< Record >({ draft: { sidebar: null, total: null }, open: { sidebar: null, total: null }, archived: { sidebar: null, total: null }, merged: { sidebar: null, total: null }, all: { sidebar: null, total: null }, }); export function patchCountMismatch(status?: PatchStatus) { return ( patchCounts[status || "all"].total !== patchCounts[status || "all"].sidebar ); } export function resetPatchCounts() { Object.values(patchCounts).forEach(count => { count.sidebar = null; count.total = null; }); } export function updatePatchCounts( itemCount: number, sidebarCount: ProjectPayload["meta"]["patches"], status?: PatchStatus, ) { if (status) { patchCounts[status].total = itemCount; patchCounts[status].sidebar = sidebarCount[status]; } else { patchCounts["all"].total = itemCount; patchCounts["all"].sidebar = sum(Object.values(sidebarCount)); } }