mirror of
https://github.com/standardnotes/server
synced 2026-07-14 00:01:54 -04:00
@@ -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),
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user