fix(payments): prepend synced rows instead of full page reload

PayPal sync route now returns the inserted rows; the client prepends
them (mirrors handleLogCash) instead of window.location.reload(),
preserving scroll/filter state. Was the only full reload in the app.
This commit is contained in:
Moheeb Zara
2026-05-17 01:18:05 -07:00
parent 7054b35ddb
commit 521fb1f8a8
2 changed files with 8 additions and 4 deletions
+7 -3
View File
@@ -65,9 +65,13 @@ export function PaymentsClient({ payments: initialPayments, members, integration
const data = await res.json()
if (!res.ok) { toast.error(data.error ?? 'Sync failed'); return }
toast.success(`PayPal sync complete: ${data.imported} transactions imported`)
if (data.imported > 0) {
// Reload page to show new transactions
window.location.reload()
if (data.imported > 0 && Array.isArray(data.rows)) {
// Prepend the freshly imported (unlinked) rows; no full reload, so
// scroll/filter state is preserved (mirrors handleLogCash).
setPayments(prev => [
...(data.rows as Payment[]).map(r => ({ ...r, space_members: null })),
...prev,
])
}
} catch {
toast.error('PayPal sync failed')