diff options
Diffstat (limited to 'packages/demobank-ui/src/pages/RegistrationPage.tsx')
-rw-r--r-- | packages/demobank-ui/src/pages/RegistrationPage.tsx | 95 |
1 files changed, 18 insertions, 77 deletions
diff --git a/packages/demobank-ui/src/pages/RegistrationPage.tsx b/packages/demobank-ui/src/pages/RegistrationPage.tsx index 87e284411..18b4c470b 100644 --- a/packages/demobank-ui/src/pages/RegistrationPage.tsx +++ b/packages/demobank-ui/src/pages/RegistrationPage.tsx @@ -16,6 +16,7 @@ import { AccessToken, HttpStatusCode, + OperationFail, TalerErrorCode, TranslatedString, assertUnreachable, @@ -30,7 +31,7 @@ import { Fragment, VNode, h } from "preact"; import { useState } from "preact/hooks"; import { useBankCoreApiContext } from "../context/config.js"; import { useSettingsContext } from "../context/settings.js"; -import { EmptyObject, RouteDefinition } from "../route.js"; +import { RouteDefinition } from "../route.js"; import { undefinedIfEmpty } from "../utils.js"; import { getRandomPassword, getRandomUsername } from "./rnd.js"; @@ -76,7 +77,7 @@ function RegistrationForm({ // const [phone, setPhone] = useState<string | undefined>(); // const [email, setEmail] = useState<string | undefined>(); const [repeatPassword, setRepeatPassword] = useState<string | undefined>(); - const [notification, notify, handleError] = useLocalNotification(); + const [notification, _, handleError] = useLocalNotification(); const settings = useSettingsContext(); const { api } = useBankCoreApiContext(); @@ -114,7 +115,7 @@ function RegistrationForm({ password: string, onComplete: () => void, ) { - await handleError(async () => { + await handleError(async (onError) => { const resp = await api.createAccount("" as AccessToken, { name, username, @@ -123,80 +124,20 @@ function RegistrationForm({ if (resp.type === "ok") { onComplete(); } else { - switch (resp.case) { - case HttpStatusCode.BadRequest: - return notify({ - type: "error", - title: i18n.str`Server replied with invalid phone or email.`, - description: resp.detail.hint as TranslatedString, - debug: resp.detail, - }); - case TalerErrorCode.BANK_UNALLOWED_DEBIT: - return notify({ - type: "error", - title: i18n.str`Registration is disabled because the bank ran out of bonus credit.`, - description: resp.detail.hint as TranslatedString, - debug: resp.detail, - }); - case HttpStatusCode.Unauthorized: - return notify({ - type: "error", - title: i18n.str`No enough permission to create that account.`, - description: resp.detail.hint as TranslatedString, - debug: resp.detail, - }); - case TalerErrorCode.BANK_REGISTER_PAYTO_URI_REUSE: - return notify({ - type: "error", - title: i18n.str`That account id is already taken.`, - description: resp.detail.hint as TranslatedString, - debug: resp.detail, - }); - case TalerErrorCode.BANK_REGISTER_USERNAME_REUSE: - return notify({ - type: "error", - title: i18n.str`That username is already taken.`, - description: resp.detail.hint as TranslatedString, - debug: resp.detail, - }); - case TalerErrorCode.BANK_RESERVED_USERNAME_CONFLICT: - return notify({ - type: "error", - title: i18n.str`That username can't be used because is reserved.`, - description: resp.detail.hint as TranslatedString, - debug: resp.detail, - }); - case TalerErrorCode.BANK_NON_ADMIN_PATCH_DEBT_LIMIT: - return notify({ - type: "error", - title: i18n.str`Only admin is allow to set debt limit.`, - description: resp.detail.hint as TranslatedString, - debug: resp.detail, - }); - case TalerErrorCode.BANK_MISSING_TAN_INFO: - return notify({ - type: "error", - title: i18n.str`No information for the selected authentication channel.`, - description: resp.detail.hint as TranslatedString, - debug: resp.detail, - }); - case TalerErrorCode.BANK_TAN_CHANNEL_NOT_SUPPORTED: - return notify({ - type: "error", - title: i18n.str`Authentication channel is not supported.`, - description: resp.detail.hint as TranslatedString, - debug: resp.detail, - }); - case TalerErrorCode.BANK_NON_ADMIN_SET_TAN_CHANNEL: - return notify({ - type: "error", - title: i18n.str`Only admin can create accounts with second factor authentication.`, - description: resp.detail.hint as TranslatedString, - debug: resp.detail, - }); - default: - assertUnreachable(resp); - } + onError(resp, (_case) => { + switch(_case) { + case HttpStatusCode.BadRequest: return i18n.str`Server replied with invalid phone or email.`; + case HttpStatusCode.Unauthorized: return i18n.str`No enough permission to create that account.`; + case TalerErrorCode.BANK_UNALLOWED_DEBIT: return i18n.str`Registration is disabled because the bank ran out of bonus credit.`; + case TalerErrorCode.BANK_RESERVED_USERNAME_CONFLICT: return i18n.str`That username can't be used because is reserved.`; + case TalerErrorCode.BANK_REGISTER_USERNAME_REUSE: return i18n.str`That username is already taken.`; + case TalerErrorCode.BANK_REGISTER_PAYTO_URI_REUSE: return i18n.str`That account id is already taken.`; + case TalerErrorCode.BANK_MISSING_TAN_INFO: return i18n.str`No information for the selected authentication channel.`; + case TalerErrorCode.BANK_TAN_CHANNEL_NOT_SUPPORTED: return i18n.str`Authentication channel is not supported.`; + case TalerErrorCode.BANK_NON_ADMIN_PATCH_DEBT_LIMIT: return i18n.str`Only admin is allow to set debt limit.`; + case TalerErrorCode.BANK_NON_ADMIN_SET_TAN_CHANNEL: return i18n.str`Only admin can create accounts with second factor authentication.`; + } + }) } }); } |