{t("dispatch.transactionalEmail.retentionTitle")}
{t("dispatch.transactionalEmail.retentionNote")}
{appsQuery.isError ? (
void appsQuery.refetch()}
/>
) : null}
{appsQuery.isLoading ? (
) : null}
{!appsQuery.isLoading && apps.length === 0 ? (
{t("dispatch.transactionalEmail.noApps")}
) : null}
{
void sharedQuery.refetch();
for (const query of catalogQueries) void query.refetch();
}}
engagementByTemplate={new Map()}
engagementUnavailable={sharedProviderReason}
engagementLoading={false}
/>
{apps.map((app, index) => {
const query = catalogQueries[index];
const engagementQuery = engagementQueries[index];
const engagementResult = engagementQuery?.data;
const engagementUnavailable =
engagementResult && !engagementResult.available
? engagementResult.reason
: engagementQuery?.isError
? engagementQuery.error instanceof Error
? engagementQuery.error.message
: String(engagementQuery.error)
: null;
const engagementByTemplate = new Map();
if (engagementResult?.available) {
for (const entry of engagementResult.data) {
engagementByTemplate.set(entry.templateId, entry);
}
}
return (
setExpanded((current) => ({ ...current, [app.id]: next }))
}
catalog={query?.data}
isLoading={query?.isLoading ?? false}
isError={query?.isError ?? false}
error={query?.error}
onRetry={() => void query?.refetch()}
engagementByTemplate={engagementByTemplate}
engagementUnavailable={engagementUnavailable}
engagementLoading={engagementQuery?.isLoading ?? false}
/>
);
})}