@@ -6,25 +6,18 @@ import {
66 TextDescription ,
77 theme ,
88} from '@appquality/unguess-design-system' ;
9- import { createSelector } from '@reduxjs/toolkit' ;
10- import { useEffect , useMemo , useState } from 'react' ;
9+ import { useEffect , useState } from 'react' ;
1110import { useTranslation } from 'react-i18next' ;
12- import { useAppSelector } from 'src/app/hooks' ;
1311import { ReactComponent as GridIcon } from 'src/assets/icons/grid.svg' ;
1412import { ReactComponent as ListIcon } from 'src/assets/icons/list.svg' ;
15- import { useGetWorkspacesByWidCampaignsQuery } from 'src/features/api' ;
16- import {
17- selectFilteredCampaigns ,
18- selectGroupedCampaigns ,
19- } from 'src/features/campaigns' ;
20- import { useActiveWorkspace } from 'src/hooks/useActiveWorkspace' ;
2113import useWindowSize from 'src/hooks/useWindowSize' ;
2214import styled from 'styled-components' ;
2315import { Separator } from '../Separator' ;
2416import { EmptyResults } from '../emptyState' ;
2517import { Filters } from '../filters' ;
2618import { CardList } from './list' ;
2719import { TableList } from './table' ;
20+ import { useCampaignsGroupedByProject } from './useCampaignsGroupedByProject' ;
2821
2922const FloatRight = styled . div `
3023 float: right;
@@ -33,42 +26,10 @@ const FloatRight = styled.div`
3326
3427export const CampaignsList = ( ) => {
3528 const { t } = useTranslation ( ) ;
36- const { activeWorkspace } = useActiveWorkspace ( ) ;
3729 const { width } = useWindowSize ( ) ;
3830 const breakpointMd = parseInt ( theme . breakpoints . md , 10 ) ;
31+ const { count : campaignsCount } = useCampaignsGroupedByProject ( ) ;
3932
40- // Get workspaces campaigns from rtk query and filter them
41- const filters = useAppSelector ( ( state ) => state . filters ) ;
42-
43- const getFilteredCampaigns = useMemo (
44- ( ) => createSelector ( selectFilteredCampaigns , ( campaigns ) => campaigns ) ,
45- [ ]
46- ) ;
47-
48- const { filteredCampaigns, isLoading, isFetching, isError } =
49- useGetWorkspacesByWidCampaignsQuery (
50- {
51- wid : activeWorkspace ?. id . toString ( ) || '' ,
52- orderBy : 'start_date' ,
53- order : 'DESC' ,
54- } ,
55- {
56- selectFromResult : ( result ) => ( {
57- ...result ,
58- filteredCampaigns : getFilteredCampaigns (
59- result ?. data ?. items || [ ] ,
60- filters
61- ) ,
62- } ) ,
63- }
64- ) ;
65-
66- const campaigns = useMemo (
67- ( ) => selectGroupedCampaigns ( filteredCampaigns ) ,
68- [ filteredCampaigns ]
69- ) ;
70-
71- const campaignsCount = filteredCampaigns . length ;
7233 const [ viewType , setViewType ] = useState ( 'list' ) ;
7334
7435 useEffect ( ( ) => {
@@ -77,8 +38,6 @@ export const CampaignsList = () => {
7738 }
7839 } , [ viewType , width ] ) ;
7940
80- if ( isLoading || isError || isFetching ) return null ;
81-
8241 return (
8342 < >
8443 < Row
@@ -120,14 +79,10 @@ export const CampaignsList = () => {
12079 ) }
12180 </ Row >
12281 < Separator style = { { marginTop : '0' , marginBottom : theme . space . sm } } />
123- < Filters campaigns = { filteredCampaigns } />
82+ < Filters />
12483
125- { campaignsCount > 0 && viewType === 'list' && (
126- < TableList campaigns = { campaigns } />
127- ) }
128- { campaignsCount > 0 && viewType === 'grid' && (
129- < CardList campaigns = { campaigns } />
130- ) }
84+ { campaignsCount > 0 && viewType === 'list' && < TableList /> }
85+ { campaignsCount > 0 && viewType === 'grid' && < CardList /> }
13186 { ! campaignsCount && < EmptyResults /> }
13287 </ >
13388 ) ;
0 commit comments