Skip to content

Commit c1b8f78

Browse files
committed
fix adding recipients
1 parent bae7d7e commit c1b8f78

File tree

2 files changed

+22
-20
lines changed

2 files changed

+22
-20
lines changed

app/routes/recipients+/__editor.server.tsx

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import {
1616
RecipientEditorSchema,
1717
deleteRecipientActionIntent,
1818
sendVerificationActionIntent,
19-
updateRecipientActionIntent,
19+
upsertRecipientActionIntent,
2020
} from './__editor.tsx'
2121

2222
export async function handleVerification({ submission }: VerifyFunctionArgs) {
@@ -60,25 +60,25 @@ export async function action({ request, params }: ActionFunctionArgs) {
6060
const userId = await requireUserId(request)
6161
const { recipientId } = params
6262

63-
invariantResponse(recipientId, 'Invalid recipient id')
64-
65-
const recipient = await prisma.recipient.findUnique({
66-
where: { id: recipientId, userId },
67-
select: { id: true, phoneNumber: true, verified: true },
68-
})
69-
70-
invariantResponse(recipient, 'Recipient not found', { status: 404 })
63+
const recipient = recipientId
64+
? await prisma.recipient.findUnique({
65+
where: { id: recipientId, userId },
66+
select: { id: true, phoneNumber: true, verified: true },
67+
})
68+
: null
7169

7270
const formData = await request.formData()
7371

7472
switch (formData.get('intent')) {
7573
case deleteRecipientActionIntent: {
74+
invariantResponse(recipient, 'Recipient not found', { status: 404 })
7675
return deleteRecipientAction({ formData, userId, request, recipient })
7776
}
78-
case updateRecipientActionIntent: {
79-
return updateRecipientAction({ formData, userId, request, recipient })
77+
case upsertRecipientActionIntent: {
78+
return usertRecipientAction({ formData, userId, request, recipient })
8079
}
8180
case sendVerificationActionIntent: {
81+
invariantResponse(recipient, 'Recipient not found', { status: 404 })
8282
return sendVerificationAction({ formData, userId, request, recipient })
8383
}
8484
default: {
@@ -87,12 +87,14 @@ export async function action({ request, params }: ActionFunctionArgs) {
8787
}
8888
}
8989

90-
export async function updateRecipientAction({
90+
export async function usertRecipientAction({
9191
formData,
9292
userId,
9393
request,
9494
recipient,
95-
}: RecipientActionArgs) {
95+
}: Pick<RecipientActionArgs, 'formData' | 'request' | 'userId'> & {
96+
recipient: RecipientActionArgs['recipient'] | null
97+
}) {
9698
const submission = await parseWithZod(formData, {
9799
schema: RecipientEditorSchema,
98100
async: true,
@@ -135,8 +137,8 @@ export async function updateRecipientAction({
135137
return sendVerificationAction({ formData, userId, request, recipient })
136138
}
137139
} else {
138-
await prisma.recipient.create({
139-
select: { id: true },
140+
recipient = await prisma.recipient.create({
141+
select: { id: true, phoneNumber: true, verified: true },
140142
data: {
141143
name,
142144
phoneNumber,

app/routes/recipients+/__editor.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ import { useDoubleCheck, useIsPending } from '#app/utils/misc.tsx'
1313
import {
1414
type deleteRecipientAction,
1515
type sendVerificationAction,
16-
type updateRecipientAction,
16+
type usertRecipientAction,
1717
} from './__editor.server.tsx'
1818

1919
export const deleteRecipientActionIntent = 'delete-recipient'
20-
export const updateRecipientActionIntent = 'update-recipient'
20+
export const upsertRecipientActionIntent = 'upsert-recipient'
2121
export const sendVerificationActionIntent = 'send-verification'
2222

2323
export const RecipientEditorSchema = z.object({
@@ -39,7 +39,7 @@ export function RecipientEditor({
3939
Pick<Recipient, 'id' | 'name' | 'phoneNumber' | 'scheduleCron' | 'verified'>
4040
>
4141
}) {
42-
const actionData = useActionData<typeof updateRecipientAction>()
42+
const actionData = useActionData<typeof usertRecipientAction>()
4343
const isPending = useIsPending()
4444

4545
const [form, fields] = useForm({
@@ -69,7 +69,7 @@ export function RecipientEditor({
6969
type="submit"
7070
className="hidden"
7171
name="intent"
72-
value={updateRecipientActionIntent}
72+
value={upsertRecipientActionIntent}
7373
/>
7474
{recipient ? (
7575
<input type="hidden" name="id" value={recipient.id} />
@@ -109,7 +109,7 @@ export function RecipientEditor({
109109
disabled={isPending}
110110
status={isPending ? 'pending' : 'idle'}
111111
name="intent"
112-
value={updateRecipientActionIntent}
112+
value={upsertRecipientActionIntent}
113113
>
114114
Submit
115115
</StatusButton>

0 commit comments

Comments
 (0)