11import { generateFilters } from "@/lib/ai/generate-filters" ;
22import { VALID_ANALYTICS_FILTERS } from "@/lib/analytics/constants" ;
33import useCustomer from "@/lib/swr/use-customer" ;
4- import useDomains from "@/lib/swr/use-domains" ;
5- import useDomainsCount from "@/lib/swr/use-domains-count" ;
64import usePartner from "@/lib/swr/use-partner" ;
75import usePartnerCustomer from "@/lib/swr/use-partner-customer" ;
8- import useTagsCount from "@/lib/swr/use-tags-count" ;
96import { LinkProps } from "@/lib/types" ;
10- import { DOMAINS_MAX_PAGE_SIZE } from "@/lib/zod/schemas/domains" ;
11- import { TAGS_MAX_PAGE_SIZE } from "@/lib/zod/schemas/tags" ;
127import {
138 BlurImage ,
149 Filter ,
@@ -64,7 +59,6 @@ import {
6459 useMemo ,
6560 useState ,
6661} from "react" ;
67- import { useDebounce } from "use-debounce" ;
6862import { FolderIcon } from "../folders/folder-icon" ;
6963import { LinkIcon } from "../links/link-icon" ;
7064import TagBadge from "../links/tag-badge" ;
@@ -102,28 +96,6 @@ export function useAnalyticsFilters({
10296
10397 const { queryParams, searchParamsObj } = useRouterStuff ( ) ;
10498
105- // Determine whether filters should be fetched async
106- const { data : tagsCount } = useTagsCount ( ) ;
107- const { data : domainsCount } = useDomainsCount ( { ignoreParams : true } ) ;
108- const tagsAsync = Boolean ( tagsCount && tagsCount > TAGS_MAX_PAGE_SIZE ) ;
109- const domainsAsync = domainsCount && domainsCount > DOMAINS_MAX_PAGE_SIZE ;
110-
111- const [ selectedFilter , setSelectedFilter ] = useState < string | null > ( null ) ;
112- const [ search , setSearch ] = useState ( "" ) ;
113- const [ debouncedSearch ] = useDebounce ( search , 500 ) ;
114-
115- const {
116- allDomains : domains ,
117- primaryDomain,
118- loading : loadingDomains ,
119- } = useDomains ( {
120- ignoreParams : true ,
121- opts : {
122- search :
123- domainsAsync && selectedFilter === "domain" ? debouncedSearch : "" ,
124- } ,
125- } ) ;
126-
12799 const selectedTagIds = useMemo (
128100 ( ) => searchParamsObj . tagIds ?. split ( "," ) ?. filter ( Boolean ) ?? [ ] ,
129101 [ searchParamsObj . tagIds ] ,
@@ -223,8 +195,8 @@ export function useAnalyticsFilters({
223195 omitGroupByFilterKey : true ,
224196 context,
225197 } ) ;
226- const { data : partners } = useAnalyticsFilterOption ( "top_partners " , {
227- disabled : ! isRequested ( "partnerId " ) ,
198+ const { data : folders } = useAnalyticsFilterOption ( "top_folders " , {
199+ disabled : ! isRequested ( "folderId " ) ,
228200 omitGroupByFilterKey : true ,
229201 context,
230202 } ) ;
@@ -233,8 +205,13 @@ export function useAnalyticsFilters({
233205 omitGroupByFilterKey : true ,
234206 context,
235207 } ) ;
236- const { data : linkFolders } = useAnalyticsFilterOption ( "top_link_folders" , {
237- disabled : ! isRequested ( "folderId" ) ,
208+ const { data : domains } = useAnalyticsFilterOption ( "top_domains" , {
209+ disabled : ! isRequested ( "domain" ) ,
210+ omitGroupByFilterKey : true ,
211+ context,
212+ } ) ;
213+ const { data : partners } = useAnalyticsFilterOption ( "top_partners" , {
214+ disabled : ! isRequested ( "partnerId" ) ,
238215 omitGroupByFilterKey : true ,
239216 context,
240217 } ) ;
@@ -339,14 +316,6 @@ export function useAnalyticsFilters({
339316 // Some suggestions will only appear if previously requested (see isRequested above)
340317 const aiFilterSuggestions = useMemo (
341318 ( ) => [
342- ...( dashboardProps || partnerPage
343- ? [ ]
344- : [
345- {
346- value : `Clicks on ${ primaryDomain } domain this year` ,
347- icon : Globe2 ,
348- } ,
349- ] ) ,
350319 {
351320 value : "Mobile users, US only" ,
352321 icon : MobilePhone ,
@@ -364,7 +333,7 @@ export function useAnalyticsFilters({
364333 icon : QRCode ,
365334 } ,
366335 ] ,
367- [ primaryDomain , dashboardProps , partnerPage ] ,
336+ [ dashboardProps , partnerPage ] ,
368337 ) ;
369338
370339 const [ streaming , setStreaming ] = useState < boolean > ( false ) ;
@@ -473,7 +442,7 @@ export function useAnalyticsFilters({
473442 ) : null ;
474443 } ,
475444 options :
476- linkFolders ?. map ( ( { folder, ...rest } ) => ( {
445+ folders ?. map ( ( { folder, ...rest } ) => ( {
477446 value : folder . id ,
478447 icon : (
479448 < FolderIcon
@@ -492,7 +461,6 @@ export function useAnalyticsFilters({
492461 icon : Tag ,
493462 label : "Tag" ,
494463 multiple : true ,
495- shouldFilter : ! tagsAsync ,
496464 getOptionIcon : ( _value , props ) => {
497465 const tagColor = props . option ?. data ?. color ;
498466 return tagColor ? (
@@ -514,7 +482,6 @@ export function useAnalyticsFilters({
514482 key : "domain" ,
515483 icon : Globe2 ,
516484 label : "Domain" ,
517- shouldFilter : ! domainsAsync ,
518485 getOptionIcon : ( value ) => (
519486 < BlurImage
520487 src = { `${ GOOGLE_FAVICON_URL } ${ value } ` }
@@ -524,25 +491,12 @@ export function useAnalyticsFilters({
524491 height = { 16 }
525492 />
526493 ) ,
527- options : loadingDomains
528- ? null
529- : [
530- ...domains . map ( ( domain ) => ( {
531- value : domain . slug ,
532- label : domain . slug ,
533- } ) ) ,
534- // Add currently filtered domain if not already in the list
535- ...( ! searchParamsObj . domain ||
536- domains . some ( ( d ) => d . slug === searchParamsObj . domain )
537- ? [ ]
538- : [
539- {
540- value : searchParamsObj . domain ,
541- label : searchParamsObj . domain ,
542- hideDuringSearch : true ,
543- } ,
544- ] ) ,
545- ] ,
494+ options :
495+ domains ?. map ( ( { domain, ...rest } ) => ( {
496+ value : domain ,
497+ label : domain ,
498+ right : getFilterOptionTotal ( rest ) ,
499+ } ) ) ?? null ,
546500 } ,
547501 LinkFilterItem ,
548502 {
@@ -823,7 +777,7 @@ export function useAnalyticsFilters({
823777 domains ,
824778 links ,
825779 linkTags ,
826- linkFolders ,
780+ folders ,
827781 selectedTagIds ,
828782 selectedCustomerId ,
829783 countries ,
@@ -835,9 +789,6 @@ export function useAnalyticsFilters({
835789 refererUrls ,
836790 urls ,
837791 utmData ,
838- tagsAsync ,
839- domainsAsync ,
840- loadingDomains ,
841792 searchParamsObj . tagIds ,
842793 searchParamsObj . domain ,
843794 ] ,
@@ -943,8 +894,6 @@ export function useAnalyticsFilters({
943894 return {
944895 filters,
945896 activeFilters,
946- setSearch,
947- setSelectedFilter,
948897 onSelect,
949898 onRemove,
950899 onRemoveAll,
0 commit comments