diff --git a/packages/web/lib/networking/mutations/updateSubscriptionMutation.ts b/packages/web/lib/networking/mutations/updateSubscriptionMutation.ts index a3f4e20e6..24e7acd9f 100644 --- a/packages/web/lib/networking/mutations/updateSubscriptionMutation.ts +++ b/packages/web/lib/networking/mutations/updateSubscriptionMutation.ts @@ -6,9 +6,15 @@ interface UpdateSubscriptionResult { updateSubscription: UpdateSubscription } +export enum UpdateSubscriptionErrorCode { + BAD_REQUEST = 'BAD_REQUEST', + NOT_FOUND = 'NOT_FOUND', + UNAUTHORIZED = 'UNAUTHORIZED', +} + interface UpdateSubscription { - subscription: Subscription - errorCodes?: unknown[] + subscription?: Subscription + errorCodes?: UpdateSubscriptionErrorCode[] } interface UpdateSubscriptionInput { @@ -20,7 +26,7 @@ interface UpdateSubscriptionInput { export async function updateSubscriptionMutation( input: UpdateSubscriptionInput -): Promise { +): Promise { const mutation = gql` mutation UpdateSubscription($input: UpdateSubscriptionInput!) { updateSubscription(input: $input) { @@ -41,11 +47,13 @@ export async function updateSubscriptionMutation( const data = (await gqlFetcher(mutation, { input, })) as UpdateSubscriptionResult - return data.updateSubscription.errorCodes - ? undefined - : data.updateSubscription.subscription.id + return data } catch (error) { console.log('updateSubscriptionMutation error', error) - return undefined + return { + updateSubscription: { + errorCodes: [UpdateSubscriptionErrorCode.BAD_REQUEST], + }, + } } } diff --git a/packages/web/pages/settings/rss/index.tsx b/packages/web/pages/settings/rss/index.tsx index 332e7f8ab..0312615b4 100644 --- a/packages/web/pages/settings/rss/index.tsx +++ b/packages/web/pages/settings/rss/index.tsx @@ -20,6 +20,7 @@ import { } from '../../../lib/networking/queries/useGetSubscriptionsQuery' import { applyStoredTheme } from '../../../lib/themeUpdater' import { showErrorToast, showSuccessToast } from '../../../lib/toastHelpers' +import { formatMessage } from '../../../locales/en/messages' export default function Rss(): JSX.Element { const router = useRouter() @@ -35,12 +36,18 @@ export default function Rss(): JSX.Element { id: onEditId, name: onEditName, }) - if (result) { - showSuccessToast('RSS feed updated', { position: 'bottom-right' }) - } else { - showErrorToast('Failed to update', { position: 'bottom-right' }) + + if (result.updateSubscription.errorCodes) { + const errorMessage = formatMessage({ + id: `error.${result.updateSubscription.errorCodes[0]}`, + }) + showErrorToast(`failed to update subscription: ${errorMessage}`, { + position: 'bottom-right', + }) + return } + showSuccessToast('RSS feed updated', { position: 'bottom-right' }) revalidate() } @@ -109,6 +116,7 @@ export default function Rss(): JSX.Element { onClick={(e) => { e.stopPropagation() setOnEditId('') + setOnEditName('') }} />