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", () => {
const hsConnected = createHomeserverConnected$(scope, client, session, GRACE_PERIOD);
const hsConnected = createHomeserverConnected$(
scope,
client,
session,
GRACE_PERIOD,
);
session.setMembershipStatus(Status.Connected);
session.setProbablyLeft(false);
@@ -247,7 +252,12 @@ describe("createHomeserverConnected$ - 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.setProbablyLeft(false);
@@ -270,7 +280,12 @@ describe("createHomeserverConnected$ - Grace Period", () => {
});
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.setProbablyLeft(false);
@@ -285,4 +300,4 @@ describe("createHomeserverConnected$ - Grace Period", () => {
client.setSyncState(SyncState.Syncing);
expect(hsConnected.combined$.value).toBe(true);
});
});
});

View File

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