From cab21489f4cbf09a3a7429381bb54cd0457f68c1 Mon Sep 17 00:00:00 2001 From: Xiao Gui <xgui3783@gmail.com> Date: Wed, 18 Nov 2020 12:06:44 +0100 Subject: [PATCH] bugfix: history bk error --- .../atlasViewer.history.service.ts | 6 ++++- src/services/state/viewerState/selectors.ts | 24 ++++++++++++------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/atlasViewer/atlasViewer.history.service.ts b/src/atlasViewer/atlasViewer.history.service.ts index c58aa5a5f..6df36758a 100644 --- a/src/atlasViewer/atlasViewer.history.service.ts +++ b/src/atlasViewer/atlasViewer.history.service.ts @@ -40,7 +40,7 @@ export class AtlasViewerHistoryUseEffect implements OnDestroy { )), ).pipe( withLatestFrom(this.store$), - map(([searchUrl, storeState]: [string, IavRootStoreInterface] ) => { + map(([searchUrl, storeState]: [string, any] ) => { const search = new URLSearchParams(searchUrl) try { if (Array.from(search.keys()).length === 0) { @@ -75,6 +75,10 @@ export class AtlasViewerHistoryUseEffect implements OnDestroy { ...defaultRootState.viewerState, fetchedTemplates: storeState.viewerState.fetchedTemplates, }, + viewerStateHelper: { + ...defaultRootState.viewerStateHelper, + fetchedAtlases: storeState.viewerStateHelper.fetchedAtlases + } }, } } diff --git a/src/services/state/viewerState/selectors.ts b/src/services/state/viewerState/selectors.ts index 934f6e003..875901dd4 100644 --- a/src/services/state/viewerState/selectors.ts +++ b/src/services/state/viewerState/selectors.ts @@ -40,6 +40,7 @@ export const viewerStateSelectedTemplatePureSelector = createSelector( viewerStateFetchedTemplatesSelector, viewerStateSelectedTemplateSelector, (fetchedTemplates, selectedTemplate) => { + if (!selectedTemplate) return null return fetchedTemplates.find(t => t['@id'] === selectedTemplate['@id']) } ) @@ -104,6 +105,7 @@ export const viewerStateGetSelectedAtlas = createSelector( helperState => { if (!helperState) return null const { selectedAtlasId, fetchedAtlases } = helperState + if (!selectedAtlasId) return null return selectedAtlasId && fetchedAtlases.find(a => a['@id'] === selectedAtlasId) } ) @@ -132,7 +134,7 @@ export const viewerStateAtlasParcellationSelector = createSelector( export const viewerStateAtlasLatestParcellationSelector = createSelector( viewerStateAtlasParcellationSelector, - parcs => parcs.filter( p => !p['@version'] || !p['@version']['@next']) + parcs => (parcs && parcs.filter( p => !p['@version'] || !p['@version']['@next']) || []) ) export const viewerStateParcVersionSelector = createSelector( @@ -178,12 +180,16 @@ export const viewerStateParcVersionSelector = createSelector( export const viewerStateSelectedTemplateFullInfoSelector = createSelector( viewerStateGetSelectedAtlas, viewerStateFetchedTemplatesSelector, - ({ templateSpaces }, fetchedTemplates) => templateSpaces.map(templateSpace => { - const fullTemplateInfo = fetchedTemplates.find(t => t['@id'] === templateSpace['@id']) - return { - ...templateSpace, - ...(fullTemplateInfo || {}), - darktheme: (fullTemplateInfo || {}).useTheme === 'dark' - } - }) + (selectedAtlas, fetchedTemplates) => { + if (!selectedAtlas) return null + const { templateSpaces } = selectedAtlas + return templateSpaces.map(templateSpace => { + const fullTemplateInfo = fetchedTemplates.find(t => t['@id'] === templateSpace['@id']) + return { + ...templateSpace, + ...(fullTemplateInfo || {}), + darktheme: (fullTemplateInfo || {}).useTheme === 'dark' + } + }) + } ) -- GitLab