Remove route interception

This commit is contained in:
Sebastien Castiel
2023-12-14 17:04:39 -05:00
parent 4902271d4b
commit 564f192013
8 changed files with 23 additions and 58 deletions

View File

@@ -1,26 +0,0 @@
import { ExpensePage } from '@/app/groups/[groupId]/expenses/expense-page'
import { ExpenseForm } from '@/components/expense-form'
import { getExpense, getGroup } from '@/lib/api'
import { Metadata } from 'next'
import { notFound } from 'next/navigation'
export const metadata: Metadata = {
title: 'Edit expense',
}
export default async function EditExpensePage({
params: { groupId, expenseId },
}: {
params: { groupId: string; expenseId: string }
}) {
const group = await getGroup(groupId)
if (!group) notFound()
const expense = await getExpense(groupId, expenseId)
if (!expense) notFound()
return (
<ExpensePage title="Edit expense">
<ExpenseForm group={group} expense={expense} />
</ExpensePage>
)
}

View File

@@ -1,24 +0,0 @@
import { ExpensePage } from '@/app/groups/[groupId]/expenses/expense-page'
import { ExpenseForm } from '@/components/expense-form'
import { getGroup } from '@/lib/api'
import { Metadata } from 'next'
import { notFound } from 'next/navigation'
export const metadata: Metadata = {
title: 'Create expense',
}
export default async function CreateExpensePage({
params: { groupId },
}: {
params: { groupId: string }
}) {
const group = await getGroup(groupId)
if (!group) notFound()
return (
<ExpensePage title="Create expense">
<ExpenseForm group={group} />
</ExpensePage>
)
}

View File

@@ -33,7 +33,9 @@ export function ExpenseList({
expense.isReimbursement && 'italic',
)}
onClick={() => {
router.push(`/groups/${groupId}/expenses/${expense.id}/edit`)
router.push(`/groups/${groupId}/expenses/${expense.id}/edit`, {
scroll: false,
})
}}
>
<div>
@@ -66,7 +68,10 @@ export function ExpenseList({
{currency} {(expense.amount / 100).toFixed(2)}
</div>
<Button size="icon" variant="link" className="-my-2" asChild>
<Link href={`/groups/${groupId}/expenses/${expense.id}/edit`}>
<Link
href={`/groups/${groupId}/expenses/${expense.id}/edit`}
scroll={false}
>
<ChevronRight className="w-4 h-4" />
</Link>
</Button>

View File

@@ -35,7 +35,7 @@ export default async function GroupExpensesPage({
</CardHeader>
<CardHeader>
<Button asChild size="icon">
<Link href={`/groups/${groupId}/expenses/create`}>
<Link href={`/groups/${groupId}/expenses/create`} scroll={false}>
<Plus />
</Link>
</Button>

View File

@@ -0,0 +1,8 @@
'use client'
import { redirect, useParams } from 'next/navigation'
export default function NotFound() {
const { groupId } = useParams()
console.log('Not found!', { groupId })
redirect(`/groups/${groupId}`)
}

View File

@@ -65,11 +65,13 @@ export function ExpenseForm({ group, expense }: Props) {
return (
<Form {...form}>
<form
onSubmit={form.handleSubmit((values) =>
expense
? updateExpenseAction(group.id, expense.id, values)
: createExpenseAction(group.id, values),
)}
onSubmit={form.handleSubmit(async (values) => {
if (expense) {
await updateExpenseAction(group.id, expense.id, values)
} else {
await createExpenseAction(group.id, values)
}
})}
>
<div className="grid grid-cols-1 sm:grid-cols-2 gap-6">
<FormField