fix(ui): multiple search calls on load

This commit is contained in:
Shekar Siri 2024-11-15 11:28:52 +01:00
parent 152720eeef
commit 2a7cb78b8b
3 changed files with 14 additions and 4 deletions

View file

@ -27,7 +27,7 @@ function SessionList() {
const isSessionsRoute = location.pathname.includes('/sessions');
const isBookmark = location.pathname.includes('/bookmarks');
const { projectsStore, sessionStore, customFieldStore, userStore } = useStore();
const { projectsStore, sessionStore, customFieldStore, userStore, searchStore } = useStore();
const isEnterprise = userStore.isEnterprise;
const isLoggedIn = userStore.isLoggedIn;
const list = sessionStore.list;
@ -37,7 +37,6 @@ function SessionList() {
const onToggleFavorite = sessionStore.toggleFavorite;
const siteId = projectsStore.siteId;
const updateProjectRecordingStatus = projectsStore.updateProjectRecordingStatus;
const { searchStore } = useStore();
const { currentPage, activeTab, pageSize } = searchStore;
const { filters } = searchStore.instance;
const _filterKeys = filters.map((i: any) => i.key);
@ -50,6 +49,7 @@ function SessionList() {
const metaList = customFieldStore.list;
useEffect(() => {
if (!searchStore.urlParsed) return;
void searchStore.fetchSessions(true, isBookmark);
}, [location.pathname]);

View file

@ -19,7 +19,7 @@ const useSessionSearchQueryHandler = (props: Props) => {
useEffect(() => {
const applyFilterFromQuery = async () => {
if (!loading) {
if (!loading && !searchStore.urlParsed) {
if (props.onBeforeLoad) {
await props.onBeforeLoad();
setBeforeHookLoaded(true);
@ -29,6 +29,7 @@ const useSessionSearchQueryHandler = (props: Props) => {
const json: any = getFilterFromJson(converter.toJSON());
const filter = new Search(json);
searchStore.applyFilter(filter, true);
searchStore.setUrlParsed()
}
};

View file

@ -75,23 +75,32 @@ class SearchStore {
loadingFilterSearch = false;
isSaving: boolean = false;
activeTags: any[] = [];
urlParsed: boolean = false;
constructor() {
makeAutoObservable(this);
}
setUrlParsed() {
this.urlParsed = true;
}
get filterList() {
return generateFilterOptions(filtersMap);
}
get filterListMobile() {
return generateFilterOptions(filtersMap, true);
}
get filterListLive() {
return generateFilterOptions(liveFiltersMap);
}
get filterListConditional() {
return generateFilterOptions(conditionalFiltersMap);
}
get filterListMobileConditional() {
return generateFilterOptions(mobileConditionalFiltersMap);
}
@ -153,7 +162,7 @@ class SearchStore {
runInAction(() => {
this.activeTab = TAB_MAP[tab];
this.currentPage = 1;
})
});
}
toggleTag(tag?: iTag) {