From 0cf0a26a97e608f654ed3046c1a46d414557e3ee Mon Sep 17 00:00:00 2001 From: Dries Augustyns Date: Fri, 6 Feb 2026 09:01:25 +0100 Subject: [PATCH] feat: Integrate NuqsAdapter for improved state management and query handling --- apps/web/src/pages/_app.tsx | 25 ++++++++++++++----------- apps/web/src/pages/activity/index.tsx | 6 +++--- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/apps/web/src/pages/_app.tsx b/apps/web/src/pages/_app.tsx index 2aebacb..3f01845 100644 --- a/apps/web/src/pages/_app.tsx +++ b/apps/web/src/pages/_app.tsx @@ -5,6 +5,7 @@ import React, {useEffect} from 'react'; import {Toaster} from 'sonner'; import {SWRConfig} from 'swr'; import {DefaultSeo} from 'next-seo'; +import {NuqsAdapter} from 'nuqs/adapters/next/pages'; import {Loader} from '@plunk/ui'; import {ActiveProjectProvider} from '../lib/contexts/ActiveProjectProvider'; import {useProjects} from '../lib/hooks/useProject'; @@ -103,17 +104,19 @@ function ProjectGuard({children}: {children: React.ReactNode}) { */ export default function WithProviders(props: AppProps) { return ( - network.fetch('GET', url), - shouldRetryOnError: false, - }} - > - - - - - + + network.fetch('GET', url), + shouldRetryOnError: false, + }} + > + + + + + + ); } diff --git a/apps/web/src/pages/activity/index.tsx b/apps/web/src/pages/activity/index.tsx index ebb9b0b..b07af1e 100644 --- a/apps/web/src/pages/activity/index.tsx +++ b/apps/web/src/pages/activity/index.tsx @@ -14,7 +14,7 @@ import {DashboardLayout} from '../../components/DashboardLayout'; import {ActivityFeed} from '../../components/ActivityFeed'; import {Eye, MousePointerClick, Send, Zap} from 'lucide-react'; import {NextSeo} from 'next-seo'; -import {useState} from 'react'; +import {useQueryState, parseAsString} from 'nuqs'; import useSWR from 'swr'; interface ActivityStats { @@ -28,8 +28,8 @@ interface ActivityStats { } export default function ActivityPage() { - const [typeFilter, setTypeFilter] = useState('ALL'); - const [dateRange, setDateRange] = useState('30'); + const [typeFilter, setTypeFilter] = useQueryState('type', parseAsString.withDefault('ALL')); + const [dateRange, setDateRange] = useQueryState('days', parseAsString.withDefault('30')); // Fetch activity stats const {data: stats} = useSWR(`/activity/stats`, {