From 09133467412a4218e598e0a6804c70d0a283a54f Mon Sep 17 00:00:00 2001 From: Moheeb Zara Date: Sat, 1 Aug 2026 21:19:29 -0700 Subject: [PATCH] fix(payments): guard nullable display_name in the link-payment picker (L6) The candidate-member initials rendered m.display_name.split(' '); display_name is nullable, so a member with no name crashed the link dialog. Fall back to email then '?'. Co-Authored-By: Claude Opus 4.8 (1M context) --- app/(app)/payments/payments-client.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/(app)/payments/payments-client.tsx b/app/(app)/payments/payments-client.tsx index f347004..40418fa 100644 --- a/app/(app)/payments/payments-client.tsx +++ b/app/(app)/payments/payments-client.tsx @@ -96,7 +96,7 @@ export function PaymentsClient({ payments: initialPayments, members, integration setPayments(prev => [{ ...result.data as Payment, space_members: linkedMember ? { display_name: linkedMember.display_name } : null, - }, ...prev]) + } as Payment, ...prev]) } setShowLogCash(false) setCashForm({ amount: '', from_note: '', member_id: '', date: '' }) @@ -113,7 +113,7 @@ export function PaymentsClient({ payments: initialPayments, members, integration member_id: memberId, link_status: 'linked', space_members: linkedMember ? { display_name: linkedMember.display_name } : null, - } : p)) + } as Payment : p)) setLinkingPayment(null) setLoading(false) } @@ -374,7 +374,7 @@ export function PaymentsClient({ payments: initialPayments, members, integration className="w-full flex items-center gap-3 py-3 hover:bg-muted/30 transition text-left disabled:opacity-50" >
- {m.display_name.split(' ').map(n => n[0]).join('').toUpperCase().slice(0, 2)} + {(m.display_name ?? m.email ?? '?').split(' ').map(n => n[0]).join('').toUpperCase().slice(0, 2)}

{m.display_name}