From cc242d4e1093b83012d2c8a3d5bfcf3d6014e5dd Mon Sep 17 00:00:00 2001 From: RKWojs Date: Mon, 27 Oct 2025 10:52:03 +0100 Subject: [PATCH] feat: load phoneOnly filter from localStorage after component mount --- src/app/projects/page.js | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/app/projects/page.js b/src/app/projects/page.js index a6be4c7..4f6079b 100644 --- a/src/app/projects/page.js +++ b/src/app/projects/page.js @@ -20,21 +20,26 @@ export default function ProjectListPage() { const [projects, setProjects] = useState([]); const [searchTerm, setSearchTerm] = useState(""); const [filteredProjects, setFilteredProjects] = useState([]); - const [filters, setFilters] = useState(() => { - // Load phoneOnly filter from localStorage - const savedPhoneOnly = typeof window !== 'undefined' - ? localStorage.getItem('projectsPhoneOnlyFilter') === 'true' - : false; - return { - status: 'all', - type: 'all', - customer: 'all', - mine: false, - phoneOnly: savedPhoneOnly - }; + const [filters, setFilters] = useState({ + status: 'all', + type: 'all', + customer: 'all', + mine: false, + phoneOnly: false }); const [customers, setCustomers] = useState([]); + + // Load phoneOnly filter from localStorage after mount to avoid hydration issues + useEffect(() => { + const savedPhoneOnly = localStorage.getItem('projectsPhoneOnlyFilter') === 'true'; + if (savedPhoneOnly) { + setFilters(prev => ({ + ...prev, + phoneOnly: savedPhoneOnly + })); + } + }, []); const [filtersExpanded, setFiltersExpanded] = useState(true); // Start expanded on mobile so users know filters exist const [searchMatchType, setSearchMatchType] = useState(null); // Track what type of match was found