Catch recent-updates row errors at the section
The recent-updates rows all come from a single connection query, so a per-row boundary isolated a failure that the rows actually share and left an unrecoverable row (its retry only re-read the same errored store). Let a row's field error bubble to the section boundary instead, so the whole list degrades and recovers as one unit. Signed-off-by: Émile Ré <emile@probo.com>
This commit is contained in:
@@ -94,22 +94,10 @@ function RecentUpdatesSectionContent({ trustCenterKey }: RecentUpdatesSectionPro
|
|||||||
<div aria-hidden className="pointer-events-none absolute inset-0 bg-linear-to-r from-sand-1/0 to-sand-1 to-[96px]" />
|
<div aria-hidden className="pointer-events-none absolute inset-0 bg-linear-to-r from-sand-1/0 to-sand-1 to-[96px]" />
|
||||||
<div className="relative divide-y divide-sand-a2">
|
<div className="relative divide-y divide-sand-a2">
|
||||||
{updates.map(update => (
|
{updates.map(update => (
|
||||||
// A single failing row degrades to a compact horizontal inline error.
|
// Rows share fate (one connection query), so a row's field error
|
||||||
<ErrorBoundary
|
// bubbles to the section boundary above rather than degrading a
|
||||||
key={update.id}
|
// single, unrecoverable row.
|
||||||
fallback={(_, reset) => (
|
<MailingListUpdateListItem key={update.id} updateKey={update} />
|
||||||
<div className="px-6 py-4">
|
|
||||||
<InlineError
|
|
||||||
layout="horizontal"
|
|
||||||
message={t("errors.inline.message")}
|
|
||||||
retryLabel={t("errors.inline.retry")}
|
|
||||||
onRetry={reset}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
>
|
|
||||||
<MailingListUpdateListItem updateKey={update} />
|
|
||||||
</ErrorBoundary>
|
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user