From b50603a8fed902cfa3759f52dce2470d70a71789 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikola=20Dere=C5=BEi=C4=87?= Date: Thu, 18 Dec 2025 17:57:51 +0100 Subject: [PATCH] refactor: optimize state initialization with lazy initializers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Move billStates calculation into useState lazy initializer to prevent recalculation on re-renders - Initialize allPaidMode based on billStates to reflect actual data state - Use lazy initialization pattern for better performance - Remove intermediate variables to simplify code 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- .../[year]/[month]/MultiBillEdit.tsx | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/app/[locale]/home/multi-bill-edit/[year]/[month]/MultiBillEdit.tsx b/app/[locale]/home/multi-bill-edit/[year]/[month]/MultiBillEdit.tsx index cf483d5..00af55e 100644 --- a/app/[locale]/home/multi-bill-edit/[year]/[month]/MultiBillEdit.tsx +++ b/app/[locale]/home/multi-bill-edit/[year]/[month]/MultiBillEdit.tsx @@ -26,18 +26,21 @@ export const MultiBillEdit: FC = ({ locations, year, month } const t = useTranslations("multi-bill-edit"); const router = useRouter(); - // Initialize bill states from locations - const initialBillStates: BillState[] = locations.flatMap(location => - location.bills.map(bill => ({ - locationId: location._id, - billId: bill._id, - paid: bill.paid, - })) + const [isSaving, setIsSaving] = useState(false); + + const [billStates, setBillStates] = useState(() => + locations.flatMap(location => + location.bills.map(bill => ({ + locationId: location._id, + billId: bill._id, + paid: bill.paid, + })) + ) ); - const [billStates, setBillStates] = useState(initialBillStates); - const [isSaving, setIsSaving] = useState(false); - const [allPaidMode, setAllPaidMode] = useState(false); + const [allPaidMode, setAllPaidMode] = useState(() => + billStates.length > 0 && billStates.every(bill => bill.paid) + ); // Toggle individual bill paid status const handleBillToggle = (locationId: string, billId: string) => {