Add basic activity log (#141)

* Add basic activity log

* Add database migration

* Fix layout

* Fix types

---------

Co-authored-by: Sebastien Castiel <sebastien@castiel.me>
This commit is contained in:
dcbr
2024-05-30 04:06:45 +02:00
committed by GitHub
parent 10e13d1f6b
commit e619c1a5b4
17 changed files with 400 additions and 29 deletions

View File

@@ -35,6 +35,7 @@ import {
} from '@/components/ui/select'
import { getCategories, getExpense, getGroup, randomId } from '@/lib/api'
import { RuntimeFeatureFlags } from '@/lib/featureFlags'
import { useActiveUser } from '@/lib/hooks'
import {
ExpenseFormValues,
SplittingOptions,
@@ -56,8 +57,8 @@ export type Props = {
group: NonNullable<Awaited<ReturnType<typeof getGroup>>>
expense?: NonNullable<Awaited<ReturnType<typeof getExpense>>>
categories: NonNullable<Awaited<ReturnType<typeof getCategories>>>
onSubmit: (values: ExpenseFormValues) => Promise<void>
onDelete?: () => Promise<void>
onSubmit: (values: ExpenseFormValues, participantId?: string) => Promise<void>
onDelete?: (participantId?: string) => Promise<void>
runtimeFeatureFlags: RuntimeFeatureFlags
}
@@ -235,10 +236,11 @@ export function ExpenseForm({
},
})
const [isCategoryLoading, setCategoryLoading] = useState(false)
const activeUserId = useActiveUser(group.id)
const submit = async (values: ExpenseFormValues) => {
await persistDefaultSplittingOptions(group.id, values)
return onSubmit(values)
return onSubmit(values, activeUserId ?? undefined)
}
return (
@@ -722,7 +724,9 @@ export function ExpenseForm({
{isCreate ? <>Create</> : <>Save</>}
</SubmitButton>
{!isCreate && onDelete && (
<DeletePopup onDelete={onDelete}></DeletePopup>
<DeletePopup
onDelete={() => onDelete(activeUserId ?? undefined)}
></DeletePopup>
)}
<Button variant="ghost" asChild>
<Link href={`/groups/${group.id}`}>Cancel</Link>

View File

@@ -41,7 +41,10 @@ import { useFieldArray, useForm } from 'react-hook-form'
export type Props = {
group?: NonNullable<Awaited<ReturnType<typeof getGroup>>>
onSubmit: (groupFormValues: GroupFormValues) => Promise<void>
onSubmit: (
groupFormValues: GroupFormValues,
participantId?: string,
) => Promise<void>
protectedParticipantIds?: string[]
}
@@ -99,7 +102,11 @@ export function GroupForm({
<Form {...form}>
<form
onSubmit={form.handleSubmit(async (values) => {
await onSubmit(values)
await onSubmit(
values,
group?.participants.find((p) => p.name === activeUser)?.id ??
undefined,
)
})}
>
<Card className="mb-4">