diff --git a/libs/common/src/vault/services/folder/folder.service.ts b/libs/common/src/vault/services/folder/folder.service.ts index 51a45920059..984e49c4f41 100644 --- a/libs/common/src/vault/services/folder/folder.service.ts +++ b/libs/common/src/vault/services/folder/folder.service.ts @@ -1,4 +1,4 @@ -import { Observable, firstValueFrom, map, of, shareReplay, switchMap } from "rxjs"; +import { Observable, firstValueFrom, map, of, shareReplay, switchMap, takeWhile } from "rxjs"; import { EncryptService } from "@bitwarden/common/platform/abstractions/encrypt.service"; @@ -28,6 +28,7 @@ export class FolderService implements InternalFolderServiceAbstraction { folders$(userId$: Observable): Observable { return userId$.pipe( + takeWhile((userId) => userId != null), switchMap((userId) => this.encryptedFoldersState(userId).state$), map((folders) => { if (folders == null) { @@ -39,8 +40,11 @@ export class FolderService implements InternalFolderServiceAbstraction { ); } - folderViews$(userId$: Observable) { - return userId$.pipe(switchMap((userId) => this.decryptedFoldersState(userId).state$)); + folderViews$(userId$: Observable): Observable { + return userId$.pipe( + takeWhile((userId) => userId != null), + switchMap((userId) => this.decryptedFoldersState(userId).state$), + ); } async clearDecryptedFolderState(userId: UserId): Promise {