From 6bd3299331265ea2a0c800e3c3199ad4e32ce8de Mon Sep 17 00:00:00 2001 From: Ankit Bahl Date: Tue, 9 Jan 2024 05:08:17 -0800 Subject: Add activeUser for default payer per group (#16) * Add activeUser for default payer per group * Prettier, change labels, use useEffect --------- Co-authored-by: Sebastien Castiel --- src/components/expense-form.tsx | 12 ++++++- src/components/group-form.tsx | 70 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 1 deletion(-) (limited to 'src/components') diff --git a/src/components/expense-form.tsx b/src/components/expense-form.tsx index dff6867..d14d72e 100644 --- a/src/components/expense-form.tsx +++ b/src/components/expense-form.tsx @@ -51,6 +51,15 @@ export type Props = { export function ExpenseForm({ group, expense, onSubmit, onDelete }: Props) { const isCreate = expense === undefined const searchParams = useSearchParams() + const getSelectedPayer = (field?: { value: string }) => { + if (isCreate && typeof window !== 'undefined') { + const activeUser = localStorage.getItem(`${group.id}-activeUser`) + if (activeUser && activeUser !== 'None') { + return activeUser + } + } + return field?.value + } const form = useForm({ resolver: zodResolver(expenseFormSchema), defaultValues: expense @@ -87,6 +96,7 @@ export function ExpenseForm({ group, expense, onSubmit, onDelete }: Props) { expenseDate: new Date(), amount: 0, paidFor: [], + paidBy: getSelectedPayer(), isReimbursement: false, splitMode: 'EVENLY', }, @@ -199,7 +209,7 @@ export function ExpenseForm({ group, expense, onSubmit, onDelete }: Props) { Paid by { + activeUser = value + }} + defaultValue={ + fields.find( + (f) => + f.id === + localStorage.getItem(`${group?.id}-activeUser`), + )?.name || 'None' + } + > + + + + + {[{ name: 'None' }, ...form.watch('participants')] + .filter((item) => item.name.length > 0) + .map(({ name }) => ( + + {name} + + ))} + + + + + User used as default for paying expenses. + + + + + + {group ? <>Save : <> Create} -- cgit v1.3