diff --git a/src/app/groups/[groupId]/expenses/expense-list.tsx b/src/app/groups/[groupId]/expenses/expense-list.tsx index f618700..ef4903c 100644 --- a/src/app/groups/[groupId]/expenses/expense-list.tsx +++ b/src/app/groups/[groupId]/expenses/expense-list.tsx @@ -6,7 +6,7 @@ import { Participant } from '@prisma/client' import { ChevronRight } from 'lucide-react' import Link from 'next/link' import { useRouter } from 'next/navigation' -import { Fragment } from 'react' +import { Fragment, useEffect } from 'react' type Props = { expenses: Awaited> @@ -21,6 +21,21 @@ export function ExpenseList({ participants, groupId, }: Props) { + useEffect(() => { + const activeUser = localStorage.getItem('newGroup-activeUser') + const newUser = localStorage.getItem(`${groupId}-newUser`) + if (activeUser || newUser) { + localStorage.removeItem('newGroup-activeUser') + localStorage.removeItem(`${groupId}-newUser`) + const userId = participants.find( + (p) => p.name === (activeUser || newUser), + )?.id + if (userId) { + localStorage.setItem(`${groupId}-activeUser`, userId) + } + } + }, [groupId, participants]) + const getParticipant = (id: string) => participants.find((p) => p.id === id) const router = useRouter() 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}