From a67fbd5076f97aaea54a74010c3cac2cbc9502ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kon=20Flatval?= <70905152+haakonflatval-cognite@users.noreply.github.com> Date: Fri, 9 Jun 2023 14:47:36 +0200 Subject: [PATCH] fix: make sure autoPagingToArray gives all results (#3364) * fix: make sure autoPagingToArray gives all results * refac: use common function to filter assets --- .../Cdf360ImageEventProvider.ts | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/viewer/packages/data-providers/src/image-360-data-providers/Cdf360ImageEventProvider.ts b/viewer/packages/data-providers/src/image-360-data-providers/Cdf360ImageEventProvider.ts index 2ca9d141650..b0db6a5e916 100644 --- a/viewer/packages/data-providers/src/image-360-data-providers/Cdf360ImageEventProvider.ts +++ b/viewer/packages/data-providers/src/image-360-data-providers/Cdf360ImageEventProvider.ts @@ -22,7 +22,8 @@ import { Metadata, CogniteInternalId, AnnotationsCogniteAnnotationTypesImagesAssetLink, - AnnotationData + AnnotationData, + AnnotationFilterProps } from '@cognite/sdk'; import { Historical360ImageSet, Image360EventDescriptor, Image360Face, Image360FileDescriptor } from '../types'; import { Image360Provider } from '../Image360Provider'; @@ -77,16 +78,10 @@ export class Cdf360ImageEventProvider implements Image360Provider { public async get360ImageAnnotations(descriptors: Image360FileDescriptor[]): Promise { const fileIds = descriptors.map(o => ({ id: o.fileId })); - const annotationsResult = this._client.annotations.list({ - filter: { - annotatedResourceType: 'file', - annotatedResourceIds: fileIds - } + return this.listFileAnnotations({ + annotatedResourceType: 'file', + annotatedResourceIds: fileIds }); - - const annotationArray = await annotationsResult.autoPagingToArray(); - - return annotationArray; } public async getFilesByAssetRef(assetRef: IdEither): Promise { @@ -339,15 +334,12 @@ export class Cdf360ImageEventProvider implements Image360Provider { public async get360ImageAssets(image360FileDescriptors: Image360FileDescriptor[]): Promise { const fileIds = image360FileDescriptors.map(desc => desc.fileId); const assetListPromises = chunk(fileIds, 1000).map(async idList => { - const annotationArray = await this._client.annotations - .list({ - filter: { - annotatedResourceIds: idList.map(id => ({ id })), - annotatedResourceType: 'file', - annotationType: 'images.AssetLink' - } - }) - .autoPagingToArray(); + const annotationArray = await this.listFileAnnotations({ + annotatedResourceIds: idList.map(id => ({ id })), + annotatedResourceType: 'file', + annotationType: 'images.AssetLink' + }); + const assetIds = annotationArray.map(annotation => { assert(isAssetLinkAnnotationData(annotation.data), 'Received annotation that was not an assetLink'); return annotation.data.assetRef; @@ -360,6 +352,15 @@ export class Cdf360ImageEventProvider implements Image360Provider { return assetIds; } + + private async listFileAnnotations(filter: AnnotationFilterProps): Promise { + return this._client.annotations + .list({ + limit: 1000, + filter + }) + .autoPagingToArray({ limit: Infinity }); + } } function isAssetLinkAnnotationData(