From 80cea91339ae7e8c9d4ab9e5647ea040110dfeb0 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Fri, 23 Dec 2022 10:07:23 +0100 Subject: [PATCH] Ensured bots exclusion is selected by default in visits filter dropdown, if it was selected in settings --- src/visits/VisitsStats.tsx | 10 ++++++++-- src/visits/helpers/hooks.ts | 8 ++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/visits/VisitsStats.tsx b/src/visits/VisitsStats.tsx index 639d8858..d823fa9d 100644 --- a/src/visits/VisitsStats.tsx +++ b/src/visits/VisitsStats.tsx @@ -93,6 +93,12 @@ export const VisitsStats: FC = ({ [normalizedVisits], ); const mapLocations = values(citiesForMap); + const resolvedFilter = useMemo(() => ( + !isFirstLoad.current ? visitsFilter : { + ...visitsFilter, + excludeBots: visitsFilter.excludeBots ?? settings.visits?.excludeBots, + } + ), [visitsFilter]); const setSelectedVisits = (selectedVisits: NormalizedVisit[]) => { selectedBar = undefined; @@ -115,7 +121,7 @@ export const VisitsStats: FC = ({ useEffect(() => cancelGetVisits, []); useEffect(() => { const resolvedDateRange = !isFirstLoad.current ? dateRange : (dateRange ?? toDateRange(initialInterval.current)); - getVisits({ dateRange: resolvedDateRange, filter: visitsFilter }, isFirstLoad.current); + getVisits({ dateRange: resolvedDateRange, filter: resolvedFilter }, isFirstLoad.current); isFirstLoad.current = false; }, [dateRange, visitsFilter]); useEffect(() => { @@ -301,7 +307,7 @@ export const VisitsStats: FC = ({ className="ms-0 ms-md-2 mt-3 mt-md-0" isOrphanVisits={isOrphanVisits} botsSupported={botsSupported} - selected={visitsFilter} + selected={resolvedFilter} onChange={(newVisitsFilter) => updateFiltering({ visitsFilter: newVisitsFilter })} /> diff --git a/src/visits/helpers/hooks.ts b/src/visits/helpers/hooks.ts index 2c78b65f..54ccff47 100644 --- a/src/visits/helpers/hooks.ts +++ b/src/visits/helpers/hooks.ts @@ -1,7 +1,7 @@ import { DeepPartial } from '@reduxjs/toolkit'; import { useLocation, useNavigate } from 'react-router-dom'; import { useMemo } from 'react'; -import { isEmpty, mergeDeepRight, pipe } from 'ramda'; +import { isEmpty, isNil, mergeDeepRight, pipe } from 'ramda'; import { DateRange, datesToDateRange } from '../../utils/helpers/dateIntervals'; import { OrphanVisitType, VisitsFilter } from '../types'; import { parseQuery, stringifyQuery } from '../../utils/helpers/query'; @@ -11,7 +11,7 @@ interface VisitsQuery { startDate?: string; endDate?: string; orphanVisitsType?: OrphanVisitType; - excludeBots?: 'true'; + excludeBots?: 'true' | 'false'; domain?: string; } @@ -38,7 +38,7 @@ export const useVisitsQuery = (): [VisitsFiltering, UpdateFiltering] => { domain, filtering: { dateRange: startDate != null || endDate != null ? datesToDateRange(startDate, endDate) : undefined, - visitsFilter: { orphanVisitsType, excludeBots: excludeBots === 'true' }, + visitsFilter: { orphanVisitsType, excludeBots: !isNil(excludeBots) ? excludeBots === 'true' : undefined }, }, }), ), @@ -49,7 +49,7 @@ export const useVisitsQuery = (): [VisitsFiltering, UpdateFiltering] => { const query: VisitsQuery = { startDate: (dateRange?.startDate && formatIsoDate(dateRange.startDate)) || '', endDate: (dateRange?.endDate && formatIsoDate(dateRange.endDate)) || '', - excludeBots: visitsFilter.excludeBots ? 'true' : undefined, + excludeBots: visitsFilter.excludeBots ? 'true' : 'false', orphanVisitsType: visitsFilter.orphanVisitsType, domain: theDomain, };