From 11a2ea48bc9cd21072b44f38a27956359f08ce48 Mon Sep 17 00:00:00 2001 From: nick-delirium Date: Fri, 28 Feb 2025 17:39:21 +0100 Subject: [PATCH] ui: fix caching for autocomplete values --- .../Filters/FilterAutoComplete/FilterAutoComplete.tsx | 7 ++++--- frontend/app/mstore/filterStore.ts | 9 +++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/frontend/app/components/shared/Filters/FilterAutoComplete/FilterAutoComplete.tsx b/frontend/app/components/shared/Filters/FilterAutoComplete/FilterAutoComplete.tsx index 8e00bcfea..7bfa5ebb0 100644 --- a/frontend/app/components/shared/Filters/FilterAutoComplete/FilterAutoComplete.tsx +++ b/frontend/app/components/shared/Filters/FilterAutoComplete/FilterAutoComplete.tsx @@ -62,17 +62,18 @@ const FilterAutoComplete = observer( const [loading, setLoading] = useState(false); const { filterStore, projectsStore } = useStore(); const _params = processKey(params); - const filterKey = `${_params.type}${_params.key || ''}`; + const filterKey = `${projectsStore.siteId}_${_params.type}${_params.key || ''}`; const topValues = filterStore.topValues[filterKey] || []; React.useEffect(() => { - filterStore.resetValues() setOptions([]) }, [projectsStore.siteId]) const loadTopValues = async () => { setLoading(true) - await filterStore.fetchTopValues(_params.type, _params.key); + if (projectsStore.siteId) { + await filterStore.fetchTopValues(_params.type, projectsStore.siteId, _params.key); + } setLoading(false) }; diff --git a/frontend/app/mstore/filterStore.ts b/frontend/app/mstore/filterStore.ts index eca477c79..6800f1a43 100644 --- a/frontend/app/mstore/filterStore.ts +++ b/frontend/app/mstore/filterStore.ts @@ -27,12 +27,13 @@ export default class FilterStore { this.topValues = {}; } - fetchTopValues = async (key: string, source?: string) => { - if (this.topValues.hasOwnProperty(key)) { - return Promise.resolve(this.topValues[key]); + fetchTopValues = async (key: string, siteId: string, source?: string) => { + const valKey = `${siteId}_${key}${source || ''}` + if (this.topValues[valKey] && this.topValues[valKey].length) { + return Promise.resolve(this.topValues[valKey]); } return filterService.fetchTopValues(key, source).then((response: []) => { - this.setTopValues(`${key}${source || ''}`, response); + this.setTopValues(valKey, response); }); }; }