فهرست منبع

Revert "tmp: disable shared vaults"

This reverts commit c49dc35ab51ac4b4faa872209c36241c6bb777cb.
Karol Sójko 1 سال پیش
والد
کامیت
d02124f4e5

+ 1 - 0
packages/syncing-server/src/Bootstrap/Container.ts

@@ -541,6 +541,7 @@ export class ContainerConfigLoader {
       .toConstantValue(
         new GetItems(
           container.get(TYPES.Sync_ItemRepository),
+          container.get(TYPES.Sync_SharedVaultUserRepository),
           container.get(TYPES.Sync_CONTENT_SIZE_TRANSFER_LIMIT),
           container.get(TYPES.Sync_ItemTransferCalculator),
           container.get(TYPES.Sync_Timer),

+ 8 - 1
packages/syncing-server/src/Domain/UseCase/Syncing/GetItems/GetItems.spec.ts

@@ -16,7 +16,14 @@ describe('GetItems', () => {
   let sharedVaultUserRepository: SharedVaultUserRepositoryInterface
 
   const createUseCase = () =>
-    new GetItems(itemRepository, contentSizeTransferLimit, itemTransferCalculator, timer, maxItemsSyncLimit)
+    new GetItems(
+      itemRepository,
+      sharedVaultUserRepository,
+      contentSizeTransferLimit,
+      itemTransferCalculator,
+      timer,
+      maxItemsSyncLimit,
+    )
 
   beforeEach(() => {
     item = Item.create({

+ 11 - 2
packages/syncing-server/src/Domain/UseCase/Syncing/GetItems/GetItems.ts

@@ -7,6 +7,7 @@ import { ItemQuery } from '../../../Item/ItemQuery'
 import { ItemRepositoryInterface } from '../../../Item/ItemRepositoryInterface'
 import { ItemTransferCalculatorInterface } from '../../../Item/ItemTransferCalculatorInterface'
 import { GetItemsDTO } from './GetItemsDTO'
+import { SharedVaultUserRepositoryInterface } from '../../../SharedVault/User/SharedVaultUserRepositoryInterface'
 
 export class GetItems implements UseCaseInterface<GetItemsResult> {
   private readonly DEFAULT_ITEMS_LIMIT = 150
@@ -14,6 +15,7 @@ export class GetItems implements UseCaseInterface<GetItemsResult> {
 
   constructor(
     private itemRepository: ItemRepositoryInterface,
+    private sharedVaultUserRepository: SharedVaultUserRepositoryInterface,
     private contentSizeTransferLimit: number,
     private itemTransferCalculator: ItemTransferCalculatorInterface,
     private timer: TimerInterface,
@@ -37,6 +39,13 @@ export class GetItems implements UseCaseInterface<GetItemsResult> {
     const limit = dto.limit === undefined || dto.limit < 1 ? this.DEFAULT_ITEMS_LIMIT : dto.limit
     const upperBoundLimit = limit < this.maxItemsSyncLimit ? limit : this.maxItemsSyncLimit
 
+    const sharedVaultUsers = await this.sharedVaultUserRepository.findByUserUuid(userUuid)
+    const userSharedVaultUuids = sharedVaultUsers.map((sharedVaultUser) => sharedVaultUser.props.sharedVaultUuid.value)
+
+    const exclusiveSharedVaultUuids = dto.sharedVaultUuids
+      ? dto.sharedVaultUuids.filter((sharedVaultUuid) => userSharedVaultUuids.includes(sharedVaultUuid))
+      : undefined
+
     const itemQuery: ItemQuery = {
       userUuid: userUuid.value,
       lastSyncTime: lastSyncTime ?? undefined,
@@ -46,8 +55,8 @@ export class GetItems implements UseCaseInterface<GetItemsResult> {
       sortBy: 'updated_at_timestamp',
       sortOrder: 'ASC',
       limit: upperBoundLimit,
-      includeSharedVaultUuids: undefined,
-      exclusiveSharedVaultUuids: undefined,
+      includeSharedVaultUuids: !dto.sharedVaultUuids ? userSharedVaultUuids : undefined,
+      exclusiveSharedVaultUuids,
     }
 
     const itemUuidsToFetch = await this.itemTransferCalculator.computeItemUuidsToFetch(