From 7cb48b488b68e6cf339cf176665fc1095938a2f8 Mon Sep 17 00:00:00 2001 From: Thomas Rittson Date: Thu, 24 Oct 2024 12:01:57 +1000 Subject: [PATCH] Move state definitions to separate file --- .../services/collection-vNext.state.ts | 37 ++++++++++++++++++ .../default-collection-vNext.service.spec.ts | 6 +-- .../default-collection-vNext.service.ts | 38 +++---------------- 3 files changed, 44 insertions(+), 37 deletions(-) create mode 100644 libs/admin-console/src/common/collections/services/collection-vNext.state.ts diff --git a/libs/admin-console/src/common/collections/services/collection-vNext.state.ts b/libs/admin-console/src/common/collections/services/collection-vNext.state.ts new file mode 100644 index 0000000000..36f9462fea --- /dev/null +++ b/libs/admin-console/src/common/collections/services/collection-vNext.state.ts @@ -0,0 +1,37 @@ +import { Jsonify } from "type-fest"; + +import { + COLLECTION_DATA, + DeriveDefinition, + UserKeyDefinition, +} from "@bitwarden/common/platform/state"; +import { CollectionId, OrganizationId } from "@bitwarden/common/types/guid"; +import { OrgKey } from "@bitwarden/common/types/key"; + +import { CollectionvNextService } from "../abstractions/collection-vNext.service"; +import { Collection, CollectionData, CollectionView } from "../models"; + +export const ENCRYPTED_COLLECTION_DATA_KEY = UserKeyDefinition.record( + COLLECTION_DATA, + "collections", + { + deserializer: (jsonData: Jsonify) => CollectionData.fromJSON(jsonData), + clearOn: ["logout"], + }, +); + +export const DECRYPTED_COLLECTION_DATA_KEY = new DeriveDefinition< + [Record, Record], + CollectionView[], + { collectionService: CollectionvNextService } +>(COLLECTION_DATA, "decryptedCollections", { + deserializer: (obj) => obj.map((collection) => CollectionView.fromJSON(collection)), + derive: async ([collections, orgKeys], { collectionService }) => { + if (collections == null) { + return []; + } + + const data = Object.values(collections).map((c) => new Collection(c)); + return await collectionService.decryptMany(data, orgKeys); + }, +}); diff --git a/libs/admin-console/src/common/collections/services/default-collection-vNext.service.spec.ts b/libs/admin-console/src/common/collections/services/default-collection-vNext.service.spec.ts index 6e3772b6a1..5325b58c07 100644 --- a/libs/admin-console/src/common/collections/services/default-collection-vNext.service.spec.ts +++ b/libs/admin-console/src/common/collections/services/default-collection-vNext.service.spec.ts @@ -19,10 +19,8 @@ import { OrgKey } from "@bitwarden/common/types/key"; import { CollectionData, CollectionView } from "../models"; -import { - DefaultCollectionvNextService, - ENCRYPTED_COLLECTION_DATA_KEY, -} from "./default-collection-vNext.service"; +import { ENCRYPTED_COLLECTION_DATA_KEY } from "./collection-vNext.state"; +import { DefaultCollectionvNextService } from "./default-collection-vNext.service"; describe("DefaultCollectionService", () => { let cryptoService: MockProxy; diff --git a/libs/admin-console/src/common/collections/services/default-collection-vNext.service.ts b/libs/admin-console/src/common/collections/services/default-collection-vNext.service.ts index 35c36a40ff..d7f4285f2b 100644 --- a/libs/admin-console/src/common/collections/services/default-collection-vNext.service.ts +++ b/libs/admin-console/src/common/collections/services/default-collection-vNext.service.ts @@ -1,18 +1,10 @@ import { combineLatest, firstValueFrom, map, Observable, of, switchMap } from "rxjs"; -import { Jsonify } from "type-fest"; import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service"; import { EncryptService } from "@bitwarden/common/platform/abstractions/encrypt.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { Utils } from "@bitwarden/common/platform/misc/utils"; -import { - ActiveUserState, - StateProvider, - COLLECTION_DATA, - DeriveDefinition, - DerivedState, - UserKeyDefinition, -} from "@bitwarden/common/platform/state"; +import { ActiveUserState, StateProvider, DerivedState } from "@bitwarden/common/platform/state"; import { CollectionId, OrganizationId, UserId } from "@bitwarden/common/types/guid"; import { OrgKey } from "@bitwarden/common/types/key"; import { TreeNode } from "@bitwarden/common/vault/models/domain/tree-node"; @@ -21,30 +13,10 @@ import { ServiceUtils } from "@bitwarden/common/vault/service-utils"; import { CollectionvNextService } from "../abstractions/collection-vNext.service"; import { Collection, CollectionData, CollectionView } from "../models"; -export const ENCRYPTED_COLLECTION_DATA_KEY = UserKeyDefinition.record( - COLLECTION_DATA, - "collections", - { - deserializer: (jsonData: Jsonify) => CollectionData.fromJSON(jsonData), - clearOn: ["logout"], - }, -); - -const DECRYPTED_COLLECTION_DATA_KEY = new DeriveDefinition< - [Record, Record], - CollectionView[], - { collectionService: DefaultCollectionvNextService } ->(COLLECTION_DATA, "decryptedCollections", { - deserializer: (obj) => obj.map((collection) => CollectionView.fromJSON(collection)), - derive: async ([collections, orgKeys], { collectionService }) => { - if (collections == null) { - return []; - } - - const data = Object.values(collections).map((c) => new Collection(c)); - return await collectionService.decryptMany(data, orgKeys); - }, -}); +import { + DECRYPTED_COLLECTION_DATA_KEY, + ENCRYPTED_COLLECTION_DATA_KEY, +} from "./collection-vNext.state"; const NestingDelimiter = "/";