diff --git a/extensions/matrix/src/matrix/monitor/index.test.ts b/extensions/matrix/src/matrix/monitor/index.test.ts index 46e7afc80be..04987d88816 100644 --- a/extensions/matrix/src/matrix/monitor/index.test.ts +++ b/extensions/matrix/src/matrix/monitor/index.test.ts @@ -523,7 +523,16 @@ describe("monitorMatrixProvider", () => { expect(getHealthySyncSinceMs()).toBeUndefined(); hoisted.client.emit("sync.state", "SYNCING", "RECONNECTING", undefined); - expect(getHealthySyncSinceMs()).toBe(Date.now()); + const firstHealthySyncSinceMs = Date.now(); + expect(getHealthySyncSinceMs()).toBe(firstHealthySyncSinceMs); + + await vi.advanceTimersByTimeAsync(3_000); + hoisted.client.emit("sync.state", "CATCHUP", "SYNCING", undefined); + expect(getHealthySyncSinceMs()).toBe(firstHealthySyncSinceMs); + + await vi.advanceTimersByTimeAsync(2_000); + hoisted.client.emit("sync.state", "PREPARED", "CATCHUP", undefined); + expect(getHealthySyncSinceMs()).toBe(firstHealthySyncSinceMs); await vi.advanceTimersByTimeAsync(5_000); hoisted.client.emit("sync.state", "RECONNECTING", "SYNCING", new Error("network flap")); diff --git a/extensions/matrix/src/matrix/monitor/index.ts b/extensions/matrix/src/matrix/monitor/index.ts index 3f0f014d9af..cb07f09e07f 100644 --- a/extensions/matrix/src/matrix/monitor/index.ts +++ b/extensions/matrix/src/matrix/monitor/index.ts @@ -250,7 +250,7 @@ export async function monitorMatrixProvider(opts: MonitorMatrixOpts = {}): Promi let healthySyncSinceMs: number | undefined; const noteSyncHealthState = (state: MatrixSyncState, at = Date.now()) => { if (isMatrixReadySyncState(state)) { - healthySyncSinceMs = at; + healthySyncSinceMs ??= at; return; } if (isMatrixDisconnectedSyncState(state)) {