| 1 | import type { RecoveryLineageView, SessionMeta } from "./types"; |
| 2 | |
| 3 | type SessionVersionInspector = (session: SessionMeta, view: RecoveryLineageView) => void; |
| 4 | |
| 5 | let inspector: SessionVersionInspector | undefined; |
| 6 | let queued: Parameters<SessionVersionInspector> | undefined; |
| 7 | |
| 8 | export function requestSessionVersions(session: SessionMeta, view: RecoveryLineageView) { |
| 9 | if (inspector) inspector(session, view); |
| 10 | else queued = [session, view]; |
| 11 | } |
| 12 | |
| 13 | export function bindSessionVersionInspector(next: SessionVersionInspector): () => void { |
| 14 | inspector = next; |
| 15 | if (queued) { |
| 16 | const request = queued; |
| 17 | queued = undefined; |
| 18 | next(...request); |
| 19 | } |
| 20 | return () => { |
| 21 | if (inspector === next) inspector = undefined; |
| 22 | }; |
| 23 | } |
| 24 |