From c897199fb2854f41778c8cea137b670e93da7665 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 13 Sep 2023 09:24:09 +0000 Subject: [PATCH 1/2] chore(deps): update dependency @types/node to v18.17.15 (#3691) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- viewer/package.json | 2 +- viewer/yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/viewer/package.json b/viewer/package.json index ac89d60c9cf..eb05258d319 100644 --- a/viewer/package.json +++ b/viewer/package.json @@ -90,7 +90,7 @@ "@types/jsdom": "21.1.2", "@types/lodash": "4.14.198", "@types/mixpanel-browser": "2.47.1", - "@types/node": "18.17.14", + "@types/node": "18.17.15", "@types/random-seed": "0.3.3", "@types/skmeans": "0.11.4", "@types/stats": "0.16.30", diff --git a/viewer/yarn.lock b/viewer/yarn.lock index decef35e02c..8030df1adab 100644 --- a/viewer/yarn.lock +++ b/viewer/yarn.lock @@ -597,7 +597,7 @@ __metadata: "@types/jsdom": 21.1.2 "@types/lodash": 4.14.198 "@types/mixpanel-browser": 2.47.1 - "@types/node": 18.17.14 + "@types/node": 18.17.15 "@types/random-seed": 0.3.3 "@types/skmeans": 0.11.4 "@types/stats": 0.16.30 @@ -2207,10 +2207,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:18.17.14": - version: 18.17.14 - resolution: "@types/node@npm:18.17.14" - checksum: f96ce1e588426a26cf82440193084f8bbab47bfb3c2e668cf174095f99ce808a20654b2137448c7e88cfd7b6c2b8521ffb6f714f521b3502ac595a0df0bff679 +"@types/node@npm:18.17.15": + version: 18.17.15 + resolution: "@types/node@npm:18.17.15" + checksum: eed11d4398ccdb999a4c65658ee75de621a4ad57aece48ed2fb8803b1e2711fadf58d8aefbdb0a447d69cf3cba602ca32fe0fc92077575950a796e1dc13baa0f languageName: node linkType: hard From 5a8900ed80ac3a1cba996d8e0cdd12a288db0f04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kon=20Flatval?= <70905152+haakonflatval-cognite@users.noreply.github.com> Date: Wed, 13 Sep 2023 11:37:59 +0200 Subject: [PATCH 2/2] feat: include node cache in keep-alive context (#3693) * feat: include node cache in keep-alive context --- .../NodeCacheProvider/NodeCacheProvider.tsx | 14 +++++++++++++- .../components/RevealKeepAlive/RevealKeepAlive.tsx | 6 +++++- .../RevealKeepAlive/RevealKeepAliveContext.ts | 2 ++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/react-components/src/components/NodeCacheProvider/NodeCacheProvider.tsx b/react-components/src/components/NodeCacheProvider/NodeCacheProvider.tsx index bc973319a9d..699f363486d 100644 --- a/react-components/src/components/NodeCacheProvider/NodeCacheProvider.tsx +++ b/react-components/src/components/NodeCacheProvider/NodeCacheProvider.tsx @@ -13,6 +13,7 @@ import { type DmsUniqueIdentifier } from '../../utilities/FdmSDK'; import { type TypedReveal3DModel } from '../Reveal3DResources/types'; import { type ThreeDModelMappings } from '../../hooks/types'; import { DEFAULT_QUERY_STALE_TIME } from '../../utilities/constants'; +import { useRevealKeepAlive } from '../RevealKeepAlive/RevealKeepAliveContext'; export type FdmNodeCacheContent = { cache: FdmNodeCache; @@ -97,8 +98,19 @@ export const useFdmAssetMappings = ( export function NodeCacheProvider({ children }: { children?: ReactNode }): ReactElement { const fdmClient = useFdmSdk(); const cdfClient = useSDK(); + const revealKeepAliveData = useRevealKeepAlive(); - const fdmCache = useMemo(() => new FdmNodeCache(cdfClient, fdmClient), []); + const fdmCache = useMemo(() => { + const cache = + revealKeepAliveData?.fdmNodeCache.current ?? new FdmNodeCache(cdfClient, fdmClient); + + const isRevealKeepAliveContextProvided = revealKeepAliveData !== undefined; + if (isRevealKeepAliveContextProvided) { + revealKeepAliveData.fdmNodeCache.current = cache; + } + + return cache; + }, [cdfClient, fdmClient]); return ( diff --git a/react-components/src/components/RevealKeepAlive/RevealKeepAlive.tsx b/react-components/src/components/RevealKeepAlive/RevealKeepAlive.tsx index 15bc32eae95..73b284cb8fa 100644 --- a/react-components/src/components/RevealKeepAlive/RevealKeepAlive.tsx +++ b/react-components/src/components/RevealKeepAlive/RevealKeepAlive.tsx @@ -5,10 +5,13 @@ import { type Cognite3DViewer } from '@cognite/reveal'; import { type ReactNode, type ReactElement, useRef, useEffect } from 'react'; import { RevealKeepAliveContext } from './RevealKeepAliveContext'; +import { type FdmNodeCache } from '../NodeCacheProvider/FdmNodeCache'; export function RevealKeepAlive({ children }: { children?: ReactNode }): ReactElement { const viewerRef = useRef(); const isRevealContainerMountedRef = useRef(false); + const fdmNodeCache = useRef(); + useEffect(() => { return () => { viewerRef.current?.dispose(); @@ -16,7 +19,8 @@ export function RevealKeepAlive({ children }: { children?: ReactNode }): ReactEl }; }, []); return ( - + {children} ); diff --git a/react-components/src/components/RevealKeepAlive/RevealKeepAliveContext.ts b/react-components/src/components/RevealKeepAlive/RevealKeepAliveContext.ts index edbabebd0f7..bcd0b27e342 100644 --- a/react-components/src/components/RevealKeepAlive/RevealKeepAliveContext.ts +++ b/react-components/src/components/RevealKeepAlive/RevealKeepAliveContext.ts @@ -3,10 +3,12 @@ */ import { type Cognite3DViewer } from '@cognite/reveal'; import { type MutableRefObject, createContext, useContext } from 'react'; +import { type FdmNodeCache } from '../NodeCacheProvider/FdmNodeCache'; export type RevealKeepAliveData = { viewerRef: MutableRefObject; isRevealContainerMountedRef: MutableRefObject; + fdmNodeCache: MutableRefObject; }; export const RevealKeepAliveContext = createContext(undefined);