(windowId: number, vault: VaultInfo)
| 32 | constructor(private readonly options: WindowVaultRegistryOptions) {} |
| 33 | |
| 34 | setLocalVault(windowId: number, vault: VaultInfo): void { |
| 35 | const root = normalizeRoot(vault.root) |
| 36 | const previous = this.sessions.get(windowId) |
| 37 | if (previous?.mode === 'local' && previous.vault) { |
| 38 | const previousRoot = normalizeRoot(previous.vault.root) |
| 39 | if (previousRoot !== root) this.detachLocalWindow(windowId, previousRoot) |
| 40 | } |
| 41 | |
| 42 | this.sessions.set(windowId, { |
| 43 | mode: 'local', |
| 44 | vault: { ...vault, root } |
| 45 | }) |
| 46 | |
| 47 | let registration = this.localVaultWatches.get(root) |
| 48 | if (!registration) { |
| 49 | const watcher = this.options.makeWatcher() |
| 50 | registration = { |
| 51 | root, |
| 52 | watcher, |
| 53 | windowIds: new Set<number>() |
| 54 | } |
| 55 | watcher.start(root, (ev) => { |
| 56 | this.options.invalidateVault(root, ev) |
| 57 | this.sendLocalVaultChange(root, ev) |
| 58 | }) |
| 59 | this.localVaultWatches.set(root, registration) |
| 60 | } |
| 61 | registration.windowIds.add(windowId) |
| 62 | } |
| 63 | |
| 64 | setRemoteVault(windowId: number, vault: VaultInfo | null): void { |
| 65 | const previous = this.sessions.get(windowId) |
no test coverage detected