gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] branch master updated: update more error cases handl


From: gnunet
Subject: [taler-wallet-core] branch master updated: update more error cases handling from bank-core-api
Date: Wed, 25 Oct 2023 23:26:45 +0200

This is an automated email from the git hooks/post-receive script.

sebasjm pushed a commit to branch master
in repository wallet-core.

The following commit(s) were added to refs/heads/master by this push:
     new e812eae32 update more error cases handling from bank-core-api
e812eae32 is described below

commit e812eae32daddad372c7629867298ca28678a44c
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Wed Oct 25 18:26:36 2023 -0300

    update more error cases handling from bank-core-api
---
 .../demobank-ui/src/pages/OperationState/state.ts  | 49 ++++++++++++++++++++--
 packages/demobank-ui/src/pages/QrCodeSection.tsx   | 20 +++++++--
 .../demobank-ui/src/pages/WalletWithdrawForm.tsx   | 28 +++++++++----
 .../src/pages/WithdrawalConfirmationQuestion.tsx   | 26 +++++++++++-
 .../demobank-ui/src/pages/WithdrawalQRCode.tsx     |  8 ++--
 5 files changed, 111 insertions(+), 20 deletions(-)

diff --git a/packages/demobank-ui/src/pages/OperationState/state.ts 
b/packages/demobank-ui/src/pages/OperationState/state.ts
index 136a2b505..a4890d726 100644
--- a/packages/demobank-ui/src/pages/OperationState/state.ts
+++ b/packages/demobank-ui/src/pages/OperationState/state.ts
@@ -50,11 +50,17 @@ export function useComponentState({ currency, onClose }: 
Props): utils.Recursive
         switch (resp.case) {
           case "insufficient-funds": return notify({
             type: "error",
-            title: i18n.str`The operation was rejected due to insufficient 
funds`,
+            title: i18n.str`The operation was rejected due to insufficient 
funds.`,
             description: resp.detail.hint as TranslatedString,
             debug: resp.detail,
           });
-          default: assertUnreachable(resp.case)
+          case "unauthorized": return notify({
+            type: "error",
+            title: i18n.str`Unauthorized to make the opeartion, maybe the 
session has expired or the password changed.`,
+            description: resp.detail.hint as TranslatedString,
+            debug: resp.detail,
+          });
+          default: assertUnreachable(resp)
         }
       }
 
@@ -99,7 +105,19 @@ export function useComponentState({ currency, onClose }: 
Props): utils.Recursive
             description: resp.detail.hint as TranslatedString,
             debug: resp.detail,
           })
-          default: assertUnreachable(resp.case)
+          case "invalid-id": return notify({
+            type: "error",
+            title: i18n.str`The operation id is invalid.`,
+            description: resp.detail.hint as TranslatedString,
+            debug: resp.detail,
+          });
+          case "not-found": return notify({
+            type: "error",
+            title: i18n.str`The operation was not found.`,
+            description: resp.detail.hint as TranslatedString,
+            debug: resp.detail,
+          });
+          default: assertUnreachable(resp)
         }
       }
     })
@@ -128,6 +146,18 @@ export function useComponentState({ currency, onClose }: 
Props): utils.Recursive
             description: resp.detail.hint as TranslatedString,
             debug: resp.detail,
           })
+          case "invalid-id": return notify({
+            type: "error",
+            title: i18n.str`The operation id is invalid.`,
+            description: resp.detail.hint as TranslatedString,
+            debug: resp.detail,
+          });
+          case "not-found": return notify({
+            type: "error",
+            title: i18n.str`The operation was not found.`,
+            description: resp.detail.hint as TranslatedString,
+            debug: resp.detail,
+          });
           default: assertUnreachable(resp)
         }
       }
@@ -183,7 +213,18 @@ export function useComponentState({ currency, onClose }: 
Props): utils.Recursive
             },
           }
         }
-        default: assertUnreachable(result.case)
+        case "invalid-id": {
+          return {
+            status: "aborted",
+            error: undefined,
+            onClose: async () => {
+              updateSettings("currentWithdrawalOperationId", undefined)
+              onClose()
+            },
+          }
+
+        }
+        default: assertUnreachable(result)
       }
     }
 
diff --git a/packages/demobank-ui/src/pages/QrCodeSection.tsx 
b/packages/demobank-ui/src/pages/QrCodeSection.tsx
index 8948827aa..9ae1cf268 100644
--- a/packages/demobank-ui/src/pages/QrCodeSection.tsx
+++ b/packages/demobank-ui/src/pages/QrCodeSection.tsx
@@ -56,17 +56,29 @@ export function QrCodeSection({
 
   async function doAbort() {
     await withRuntimeErrorHandling(i18n, async () => {
-      const result = await 
api.abortWithdrawalById(withdrawUri.withdrawalOperationId);
-      if (result.type === "ok") {
+      const resp = await 
api.abortWithdrawalById(withdrawUri.withdrawalOperationId);
+      if (resp.type === "ok") {
         onAborted();
       } else {
-        switch (result.case) {
+        switch (resp.case) {
           case "previously-confirmed": return notify({
             type: "info",
             title: i18n.str`The reserve operation has been confirmed 
previously and can't be aborted`
           })
+          case "invalid-id": return notify({
+            type: "error",
+            title: i18n.str`The operation id is invalid.`,
+            description: resp.detail.hint as TranslatedString,
+            debug: resp.detail,
+          })
+          case "not-found": return notify({
+            type: "error",
+            title: i18n.str`The operation was not found.`,
+            description: resp.detail.hint as TranslatedString,
+            debug: resp.detail,
+          })
           default: {
-            assertUnreachable(result.case)
+            assertUnreachable(resp)
           }
         }
       }
diff --git a/packages/demobank-ui/src/pages/WalletWithdrawForm.tsx 
b/packages/demobank-ui/src/pages/WalletWithdrawForm.tsx
index f1ff49068..0637a8af4 100644
--- a/packages/demobank-ui/src/pages/WalletWithdrawForm.tsx
+++ b/packages/demobank-ui/src/pages/WalletWithdrawForm.tsx
@@ -89,26 +89,40 @@ function OldWithdrawalForm({ goToConfirmOperation, limit, 
onCancel, focus }: {
   async function doStart() {
     if (!parsedAmount || !creds) return;
     await withRuntimeErrorHandling(i18n, async () => {
-      const result = await api.createWithdrawal(creds, {
+      const resp = await api.createWithdrawal(creds, {
         amount: Amounts.stringify(parsedAmount),
       });
-      if (result.type === "ok") {
-        const uri = parseWithdrawUri(result.body.taler_withdraw_uri);
+      if (resp.type === "ok") {
+        const uri = parseWithdrawUri(resp.body.taler_withdraw_uri);
         if (!uri) {
           return notifyError(
             i18n.str`Server responded with an invalid  withdraw URI`,
-            i18n.str`Withdraw URI: ${result.body.taler_withdraw_uri}`);
+            i18n.str`Withdraw URI: ${resp.body.taler_withdraw_uri}`);
         } else {
           updateSettings("currentWithdrawalOperationId", 
uri.withdrawalOperationId)
           goToConfirmOperation(uri.withdrawalOperationId);
         }
       } else {
-        switch (result.case) {
+        switch (resp.case) {
           case "insufficient-funds": {
-            notify({ type: "error", title: i18n.str`The operation was rejected 
due to insufficient funds` })
+            notify({
+              type: "error",
+              title: i18n.str`The operation was rejected due to insufficient 
funds`,
+              description: resp.detail.hint as TranslatedString,
+              debug: resp.detail,
+            })
             break;
           }
-          default: assertUnreachable(result.case)
+          case "unauthorized": {
+            notify({
+              type: "error",
+              title: i18n.str`The operation was rejected due to insufficient 
funds`,
+              description: resp.detail.hint as TranslatedString,
+              debug: resp.detail,
+            })
+            break;
+          }
+          default: assertUnreachable(resp)
         }
       }
     })
diff --git a/packages/demobank-ui/src/pages/WithdrawalConfirmationQuestion.tsx 
b/packages/demobank-ui/src/pages/WithdrawalConfirmationQuestion.tsx
index 895094c28..5e0fa322f 100644
--- a/packages/demobank-ui/src/pages/WithdrawalConfirmationQuestion.tsx
+++ b/packages/demobank-ui/src/pages/WithdrawalConfirmationQuestion.tsx
@@ -110,6 +110,18 @@ export function WithdrawalConfirmationQuestion({
             description: resp.detail.hint as TranslatedString,
             debug: resp.detail,
           });
+          case "invalid-id": return notify({
+            type: "error",
+            title: i18n.str`The operation id is invalid.`,
+            description: resp.detail.hint as TranslatedString,
+            debug: resp.detail,
+          })
+          case "not-found": return notify({
+            type: "error",
+            title: i18n.str`The operation was not found.`,
+            description: resp.detail.hint as TranslatedString,
+            debug: resp.detail,
+          })
           default: assertUnreachable(resp)
         }
       }
@@ -129,8 +141,20 @@ export function WithdrawalConfirmationQuestion({
             type: "error",
             title: i18n.str`The reserve operation has been confirmed 
previously and can't be aborted`
           });
+          case "invalid-id": return notify({
+            type: "error",
+            title: i18n.str`The operation id is invalid.`,
+            description: resp.detail.hint as TranslatedString,
+            debug: resp.detail,
+          })
+          case "not-found": return notify({
+            type: "error",
+            title: i18n.str`The operation was not found.`,
+            description: resp.detail.hint as TranslatedString,
+            debug: resp.detail,
+          })
           default: {
-            assertUnreachable(resp.case)
+            assertUnreachable(resp)
           }
         }
       }
diff --git a/packages/demobank-ui/src/pages/WithdrawalQRCode.tsx 
b/packages/demobank-ui/src/pages/WithdrawalQRCode.tsx
index 5c300d0ab..bdd8ea585 100644
--- a/packages/demobank-ui/src/pages/WithdrawalQRCode.tsx
+++ b/packages/demobank-ui/src/pages/WithdrawalQRCode.tsx
@@ -23,14 +23,13 @@ import {
 } from "@gnu-taler/taler-util";
 import { notifyInfo, useTranslationContext } from 
"@gnu-taler/web-util/browser";
 import { Fragment, VNode, h } from "preact";
+import { Attention } from "../components/Attention.js";
 import { ErrorLoading } from "../components/ErrorLoading.js";
 import { Loading } from "../components/Loading.js";
 import { useWithdrawalDetails } from "../hooks/access.js";
-import { assertUnreachable } from "./WithdrawalOperationPage.js";
 import { QrCodeSection } from "./QrCodeSection.js";
 import { WithdrawalConfirmationQuestion } from 
"./WithdrawalConfirmationQuestion.js";
-import { Attention } from "../components/Attention.js";
-import { Pages } from "../pages.js";
+import { assertUnreachable } from "./WithdrawalOperationPage.js";
 
 const logger = new Logger("WithdrawalQRCode");
 
@@ -59,7 +58,8 @@ export function WithdrawalQRCode({
   if (result.type === "fail") {
     switch (result.case) {
       case "not-found": return <OperationNotFound onClose={onClose} />
-      default: assertUnreachable(result.case)
+      case "invalid-id": return <OperationNotFound onClose={onClose} />
+      default: assertUnreachable(result)
     }
   }
 

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]