Skip to content

Commit

Permalink
fix(react-components): deduplicate result models from `useModelsForIn…
Browse files Browse the repository at this point in the history
…stanceQuery` (#4657)

* fix(react-components): deduplicate result models from `useModelsForInstanceQuery`
  • Loading branch information
haakonflatval-cognite authored Jul 4, 2024
1 parent 09f9f1f commit 9fd6481
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
6 changes: 5 additions & 1 deletion react-components/src/query/useModelsForInstanceQuery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ import {
isAssetInstance,
isDmsInstance
} from '../utilities/types';
import { uniqBy } from 'lodash';
import { createAddOptionsKey } from '../utilities/createAddOptionsKey';

export const useModelsForInstanceQuery = (
instance: InstanceReference | undefined
Expand Down Expand Up @@ -53,9 +55,11 @@ async function getModelsForAssetInstance(
cogniteClient
);

return (
const results = (
await Promise.all([cadModelsPromise, pointCloudModelsPromise, image360CollectionsPromise])
).flat();

return uniqBy(results, createAddOptionsKey);
}

async function getModelsForFdmInstance(
Expand Down
20 changes: 20 additions & 0 deletions react-components/src/utilities/createAddOptionsKey.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/*!
* Copyright 2024 Cognite AS
*/
import {
is360ImageDataModelAddOptions,
is360ImageEventsAddOptions
} from '../components/Reveal3DResources/typeGuards';
import { type TaggedAddResourceOptions } from '../components/Reveal3DResources/types';

export function createAddOptionsKey(model: TaggedAddResourceOptions): string {
if (model.type === 'cad' || model.type === 'pointcloud') {
return `${model.type}-${model.addOptions.modelId}-${model.addOptions.revisionId}`;
} else if (model.type === 'image360' && is360ImageDataModelAddOptions(model.addOptions)) {
return `${model.type}-${model.addOptions.externalId}/${model.addOptions.space}`;
} else if (model.type === 'image360' && is360ImageEventsAddOptions(model.addOptions)) {
return `${model.type}-${model.addOptions.siteId}`;
} else {
throw Error('Unrecognized add option type');
}
}

0 comments on commit 9fd6481

Please sign in to comment.