This commit is contained in:
fkwp
2026-04-23 15:47:40 +02:00
parent c1f821ca0f
commit 0abc32b80e
2 changed files with 25 additions and 11 deletions

View File

@@ -225,7 +225,12 @@ describe("createHomeserverConnected$ - Grace Period", () => {
}); });
it("respects gracePeriodMs: stays true during grace period and flips false after", () => { it("respects gracePeriodMs: stays true during grace period and flips false after", () => {
const hsConnected = createHomeserverConnected$(scope, client, session, GRACE_PERIOD); const hsConnected = createHomeserverConnected$(
scope,
client,
session,
GRACE_PERIOD,
);
session.setMembershipStatus(Status.Connected); session.setMembershipStatus(Status.Connected);
session.setProbablyLeft(false); session.setProbablyLeft(false);
@@ -247,7 +252,12 @@ describe("createHomeserverConnected$ - Grace Period", () => {
}); });
it("recovers immediately if sync returns during grace period", () => { it("recovers immediately if sync returns during grace period", () => {
const hsConnected = createHomeserverConnected$(scope, client, session, GRACE_PERIOD); const hsConnected = createHomeserverConnected$(
scope,
client,
session,
GRACE_PERIOD,
);
session.setMembershipStatus(Status.Connected); session.setMembershipStatus(Status.Connected);
session.setProbablyLeft(false); session.setProbablyLeft(false);
@@ -270,7 +280,12 @@ describe("createHomeserverConnected$ - Grace Period", () => {
}); });
it("flips to true IMMEDIATELY even if a grace period was pending", () => { it("flips to true IMMEDIATELY even if a grace period was pending", () => {
const hsConnected = createHomeserverConnected$(scope, client, session, GRACE_PERIOD); const hsConnected = createHomeserverConnected$(
scope,
client,
session,
GRACE_PERIOD,
);
session.setMembershipStatus(Status.Connected); session.setMembershipStatus(Status.Connected);
session.setProbablyLeft(false); session.setProbablyLeft(false);
@@ -285,4 +300,4 @@ describe("createHomeserverConnected$ - Grace Period", () => {
client.setSyncState(SyncState.Syncing); client.setSyncState(SyncState.Syncing);
expect(hsConnected.combined$.value).toBe(true); expect(hsConnected.combined$.value).toBe(true);
}); });
}); });

View File

@@ -73,13 +73,12 @@ export function createHomeserverConnected$(
startWith([client.getSyncState()]), startWith([client.getSyncState()]),
map(([state]) => state === SyncState.Syncing), map(([state]) => state === SyncState.Syncing),
distinctUntilChanged(), distinctUntilChanged(),
switchMap((isSyncing) => switchMap((isSyncing) => {
{ if (isSyncing || graceMs <= 0) {
if (isSyncing || graceMs <= 0) { return of(isSyncing);
return of(isSyncing); // Sofortige Emission (Synchron) }
} return of(false).pipe(delay(graceMs));
return of(false).pipe(delay(graceMs)); // Verzögertes false }),
} ),
startWith(client.getSyncState() === SyncState.Syncing), startWith(client.getSyncState() === SyncState.Syncing),
distinctUntilChanged(), distinctUntilChanged(),
); );