From b5700fcb748e3e72b60a0db1a5f112f792115235 Mon Sep 17 00:00:00 2001 From: tischsoic Date: Sun, 25 Feb 2024 13:15:57 +0100 Subject: [PATCH 1/3] IBX-7825: Fix UDW empty browse tab when coming from bookmarks tab --- .../bookmarks.tab.module.js | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/src/bundle/ui-dev/src/modules/universal-discovery/bookmarks.tab.module.js b/src/bundle/ui-dev/src/modules/universal-discovery/bookmarks.tab.module.js index da95fbef3f..8999f41324 100644 --- a/src/bundle/ui-dev/src/modules/universal-discovery/bookmarks.tab.module.js +++ b/src/bundle/ui-dev/src/modules/universal-discovery/bookmarks.tab.module.js @@ -22,7 +22,11 @@ import { getIconPath } from '@ibexa-admin-ui/src/bundle/Resources/public/js/scri import { getTranslator } from '@ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper'; const BookmarksTabModule = () => { - const shouldRestorePreviousStateRef = useRef(true); + const didBookmarksMarkedLocationRef = useRef(false); + const restorationStateRef = useRef({ + markedLocationId, + loadedLocationsMap, + }); const restInfo = useContext(RestInfoContext); const tabsConfig = useContext(TabsConfigContext); const [currentView] = useContext(CurrentViewContext); @@ -46,13 +50,24 @@ const BookmarksTabModule = () => { }; useEffect(() => { - setMarkedLocationId(null); - dispatchLoadedLocationsAction({ type: 'CLEAR_LOCATIONS' }); + const isCleared = markedLocationId === null && loadedLocationsMap?.length === 0; + if (!isCleared && !didBookmarksMarkedLocationRef.current) { + restorationStateRef.current = { + markedLocationId, + loadedLocationsMap, + }; + + setMarkedLocationId(null); + dispatchLoadedLocationsAction({ type: 'CLEAR_LOCATIONS' }); + } + }, [setMarkedLocationId, dispatchLoadedLocationsAction, markedLocationId, loadedLocationsMap]); + + useEffect(() => { return () => { - if (shouldRestorePreviousStateRef.current) { - setMarkedLocationId(markedLocationId); - dispatchLoadedLocationsAction({ type: 'SET_LOCATIONS', data: loadedLocationsMap }); + if (!didBookmarksMarkedLocationRef.current) { + setMarkedLocationId(restorationStateRef.current.markedLocationId); + dispatchLoadedLocationsAction({ type: 'SET_LOCATIONS', data: restorationStateRef.current.loadedLocationsMap }); } }; }, []); @@ -62,7 +77,7 @@ const BookmarksTabModule = () => { return; } - shouldRestorePreviousStateRef.current = false; + didBookmarksMarkedLocationRef.current = true; setMarkedLocationId(bookmarkedLocationMarked); loadAccordionData( { @@ -90,7 +105,7 @@ const BookmarksTabModule = () => {
- {renderBrowseLocations()} + {didBookmarksMarkedLocationRef.current && renderBrowseLocations()}
); From b9c5e4dc620a11df7ec2ac793f210d5778c40a0d Mon Sep 17 00:00:00 2001 From: tischsoic Date: Thu, 29 Feb 2024 09:08:15 +0100 Subject: [PATCH 2/3] after CR --- .../universal-discovery/bookmarks.tab.module.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/bundle/ui-dev/src/modules/universal-discovery/bookmarks.tab.module.js b/src/bundle/ui-dev/src/modules/universal-discovery/bookmarks.tab.module.js index 8999f41324..1aa3779db1 100644 --- a/src/bundle/ui-dev/src/modules/universal-discovery/bookmarks.tab.module.js +++ b/src/bundle/ui-dev/src/modules/universal-discovery/bookmarks.tab.module.js @@ -22,11 +22,8 @@ import { getIconPath } from '@ibexa-admin-ui/src/bundle/Resources/public/js/scri import { getTranslator } from '@ibexa-admin-ui/src/bundle/Resources/public/js/scripts/helpers/context.helper'; const BookmarksTabModule = () => { - const didBookmarksMarkedLocationRef = useRef(false); - const restorationStateRef = useRef({ - markedLocationId, - loadedLocationsMap, - }); + const isMarkedLocationSetByBookmarksRef = useRef(false); + const restorationStateRef = useRef(null); const restInfo = useContext(RestInfoContext); const tabsConfig = useContext(TabsConfigContext); const [currentView] = useContext(CurrentViewContext); @@ -52,7 +49,7 @@ const BookmarksTabModule = () => { useEffect(() => { const isCleared = markedLocationId === null && loadedLocationsMap?.length === 0; - if (!isCleared && !didBookmarksMarkedLocationRef.current) { + if (!isCleared && !isMarkedLocationSetByBookmarksRef.current) { restorationStateRef.current = { markedLocationId, loadedLocationsMap, @@ -65,7 +62,7 @@ const BookmarksTabModule = () => { useEffect(() => { return () => { - if (!didBookmarksMarkedLocationRef.current) { + if (!isMarkedLocationSetByBookmarksRef.current) { setMarkedLocationId(restorationStateRef.current.markedLocationId); dispatchLoadedLocationsAction({ type: 'SET_LOCATIONS', data: restorationStateRef.current.loadedLocationsMap }); } @@ -77,8 +74,9 @@ const BookmarksTabModule = () => { return; } - didBookmarksMarkedLocationRef.current = true; + isMarkedLocationSetByBookmarksRef.current = true; setMarkedLocationId(bookmarkedLocationMarked); + loadAccordionData( { ...restInfo, @@ -105,7 +103,7 @@ const BookmarksTabModule = () => {
- {didBookmarksMarkedLocationRef.current && renderBrowseLocations()} + {isMarkedLocationSetByBookmarksRef.current && renderBrowseLocations()}
); From 59753fb6d7b99e961b5d6be7fc0bd9f076c57fe6 Mon Sep 17 00:00:00 2001 From: tischsoic Date: Tue, 5 Mar 2024 16:02:33 +0100 Subject: [PATCH 3/3] after QA --- .../universal-discovery/search.tab.module.js | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/bundle/ui-dev/src/modules/universal-discovery/search.tab.module.js b/src/bundle/ui-dev/src/modules/universal-discovery/search.tab.module.js index f61a8b1132..226936e185 100644 --- a/src/bundle/ui-dev/src/modules/universal-discovery/search.tab.module.js +++ b/src/bundle/ui-dev/src/modules/universal-discovery/search.tab.module.js @@ -1,4 +1,4 @@ -import React, { useContext, useEffect } from 'react'; +import React, { useContext, useEffect, useRef } from 'react'; import Tab from './components/tab/tab'; import Search from './components/search/search'; @@ -10,6 +10,7 @@ import { getIconPath } from '@ibexa-admin-ui/src/bundle/Resources/public/js/scri const SearchTabModule = () => { const tabsConfig = useContext(TabsConfigContext); + const restorationStateRef = useRef(null); const [markedLocationId, setMarkedLocationId] = useContext(MarkedLocationIdContext); const [loadedLocationsMap, dispatchLoadedLocationsAction] = useContext(LoadedLocationsMapContext); @@ -19,10 +20,23 @@ const SearchTabModule = () => { 'view-switcher': true, }; + useEffect(() => { + const isCleared = markedLocationId === null && loadedLocationsMap?.length === 0; + + if (!isCleared) { + restorationStateRef.current = { + markedLocationId, + loadedLocationsMap, + }; + } + }, [setMarkedLocationId, dispatchLoadedLocationsAction, markedLocationId, loadedLocationsMap]); + useEffect(() => { return () => { - setMarkedLocationId(markedLocationId); - dispatchLoadedLocationsAction({ type: 'SET_LOCATIONS', data: loadedLocationsMap }); + if (restorationStateRef.current) { + setMarkedLocationId(restorationStateRef.current.markedLocationId); + dispatchLoadedLocationsAction({ type: 'SET_LOCATIONS', data: restorationStateRef.current.loadedLocationsMap }); + } }; }, []);