| 1 | import type { SessionCatalogStatus } from "./sessionCatalogTypes"; |
| 2 | |
| 3 | export type SessionCatalogNotice = "indexing" | "repair-active" | "repair-deferred" | "repair-blocked" | "failed" | "rebuild"; |
| 4 | |
| 5 | export function sessionCatalogNotice(s: SessionCatalogStatus): SessionCatalogNotice | null { |
| 6 | const { state, repairActive, repairDeferred, repairBlocked } = s; |
| 7 | return state === "opening" || state === "rebuilding" |
| 8 | ? "indexing" |
| 9 | : state === "degraded" || s.lastError |
| 10 | ? (s.canRebuild ? "rebuild" : "failed") |
| 11 | : (s.unindexedTargetCount ?? 0) > 0 |
| 12 | ? "indexing" |
| 13 | : (repairActive ?? (repairDeferred === undefined && repairBlocked === undefined ? s.repairPending : 0)) > 0 |
| 14 | ? "repair-active" |
| 15 | : (repairDeferred ?? 0) > 0 |
| 16 | ? "repair-deferred" |
| 17 | : (repairBlocked ?? 0) > 0 |
| 18 | ? "repair-blocked" |
| 19 | : null; |
| 20 | } |
| 21 |