diff --git a/src/features/smartSearch/components/filters/PersonView/DisplayPersonView.tsx b/src/features/smartSearch/components/filters/PersonView/DisplayPersonView.tsx index e59668aebc..d5f175ec98 100644 --- a/src/features/smartSearch/components/filters/PersonView/DisplayPersonView.tsx +++ b/src/features/smartSearch/components/filters/PersonView/DisplayPersonView.tsx @@ -1,7 +1,3 @@ -import { useQuery } from 'react-query'; -import { useRouter } from 'next/router'; - -import getViews from 'features/smartSearch/fetching/getViews'; import { Msg } from 'core/i18n'; import { OPERATION, @@ -12,6 +8,8 @@ import { import messageIds from 'features/smartSearch/l10n/messageIds'; import UnderlinedMsg from '../../UnderlinedMsg'; import UnderlinedText from '../../UnderlinedText'; +import { useNumericRouteParams } from 'core/hooks'; +import useViewTree from 'features/views/hooks/useViewTree'; const localMessageIds = messageIds.filters.personView; interface DisplayPersonViewProps { @@ -19,14 +17,10 @@ interface DisplayPersonViewProps { } const DisplayPersonView = ({ filter }: DisplayPersonViewProps): JSX.Element => { - const { orgId } = useRouter().query; const { config } = filter; - - const personViewsQuery = useQuery( - ['personviews', orgId], - getViews(orgId as string) - ); - const personViews = personViewsQuery?.data || []; + const { orgId } = useNumericRouteParams(); + const viewTree = useViewTree(orgId); + const personViews = viewTree.data?.views ?? []; const view = personViews.find((v) => v.id == config.view); const operator = config.operator; diff --git a/src/features/smartSearch/components/filters/PersonView/index.tsx b/src/features/smartSearch/components/filters/PersonView/index.tsx index 099a37650b..6523841a1a 100644 --- a/src/features/smartSearch/components/filters/PersonView/index.tsx +++ b/src/features/smartSearch/components/filters/PersonView/index.tsx @@ -1,13 +1,12 @@ import { FormEvent } from 'react'; import { MenuItem } from '@mui/material'; -import { useQuery } from 'react-query'; -import { useRouter } from 'next/router'; import FilterForm from '../../FilterForm'; -import getViews from 'features/smartSearch/fetching/getViews'; import { Msg } from 'core/i18n'; import StyledSelect from '../../inputs/StyledSelect'; +import { useNumericRouteParams } from 'core/hooks'; import useSmartSearchFilter from 'features/smartSearch/hooks/useSmartSearchFilter'; +import useViewTree from 'features/views/hooks/useViewTree'; import { IN_OPERATOR, NewSmartSearchFilter, @@ -37,13 +36,9 @@ const PersonView = ({ onCancel, filter: initialFilter, }: PersonViewProps): JSX.Element => { - const { orgId } = useRouter().query; - - const personViewsQuery = useQuery( - ['personviews', orgId], - getViews(orgId as string) - ); - const personViews = personViewsQuery?.data || []; + const { orgId } = useNumericRouteParams(); + const viewTree = useViewTree(orgId); + const personViews = viewTree.data?.views ?? []; const { filter, setConfig, setOp } = useSmartSearchFilter(initialFilter, { diff --git a/src/features/smartSearch/fetching/getViews.ts b/src/features/smartSearch/fetching/getViews.ts deleted file mode 100644 index 5310f79208..0000000000 --- a/src/features/smartSearch/fetching/getViews.ts +++ /dev/null @@ -1,10 +0,0 @@ -import defaultFetch from '../../../utils/fetching/defaultFetch'; -import { ZetkinView } from 'utils/types/zetkin'; - -export default function getViews(orgId: string, fetch = defaultFetch) { - return async (): Promise => { - const viewsRes = await fetch(`/orgs/${orgId}/people/views`); - const viewsBody = await viewsRes.json(); - return viewsBody?.data; - }; -}