diff --git a/backend/service/apiSender.go b/backend/service/apiSender.go index 88f06b7..906e260 100644 --- a/backend/service/apiSender.go +++ b/backend/service/apiSender.go @@ -630,6 +630,10 @@ func (a *APISender) SendWithCustomURL( customCampaignURL, oauthAccessToken, ) + if err != nil { + a.Logger.Errorw("failed to build api sender request", "error", err) + return err + } resp, respBodyClose, err := a.sendRequest( ctx, @@ -639,7 +643,7 @@ func (a *APISender) SendWithCustomURL( body, ) if err != nil { - a.Logger.Errorw("failed to build and send api sender request", "error", err) + a.Logger.Errorw("failed to send api sender request", "error", err) return err } defer respBodyClose() diff --git a/frontend/src/routes/campaign/[id]/+page.svelte b/frontend/src/routes/campaign/[id]/+page.svelte index b8282c7..1321a76 100644 --- a/frontend/src/routes/campaign/[id]/+page.svelte +++ b/frontend/src/routes/campaign/[id]/+page.svelte @@ -950,24 +950,30 @@ { - await setResults(); - await setCampaign(); - // await refreshCampaignRecipients(); + try { + await setResults(); + await setCampaign(); + // await refreshCampaignRecipients(); - const res = await api.campaign.getAllCampaignRecipients( - $page.params.id, - recipientTableUrlParams - ); - if (!res.success) { - throw res.error; + const res = await api.campaign.getAllCampaignRecipients( + $page.params.id, + recipientTableUrlParams + ); + if (!res.success) { + console.error('failed to refresh campaign recipients', res.error); + return; + } + // bug: svelte does not rerender the usage of campaignRecipients without + // clearing the ref and a tick + campaignRecipients = []; + await tick(); + campaignRecipients = res.data?.rows ?? []; + await getEvents(); + await refreshCampaignEventsSince(); + } catch (e) { + console.error('failed to auto-refresh campaign data', e); + // don't show toast on auto-refresh errors to avoid spam } - // bug: svelte does not rerender the usage of campaignRecipients without - // clearing the ref and a tick - campaignRecipients = []; - await tick(); - campaignRecipients = res.data; - await getEvents(); - await refreshCampaignEventsSince(); }} />