refactor: optimize state initialization with lazy initializers

- 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 <noreply@anthropic.com>
This commit is contained in:
2025-12-18 17:57:51 +01:00
parent 0145a2030d
commit b50603a8fe

View File

@@ -26,18 +26,21 @@ export const MultiBillEdit: FC<MultiBillEditProps> = ({ 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<BillState[]>(() =>
locations.flatMap(location =>
location.bills.map(bill => ({
locationId: location._id,
billId: bill._id,
paid: bill.paid,
}))
)
);
const [billStates, setBillStates] = useState<BillState[]>(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) => {