From 49960c51f73c8b000623a7d8978e9ab6386b04f2 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 1 Apr 2024 12:57:14 -0300 Subject: migrate getInstance --- .../src/components/ErrorLoadingMerchant.tsx | 147 +++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 packages/web-util/src/components/ErrorLoadingMerchant.tsx (limited to 'packages/web-util') diff --git a/packages/web-util/src/components/ErrorLoadingMerchant.tsx b/packages/web-util/src/components/ErrorLoadingMerchant.tsx new file mode 100644 index 000000000..7089266b9 --- /dev/null +++ b/packages/web-util/src/components/ErrorLoadingMerchant.tsx @@ -0,0 +1,147 @@ +/* +/* + This file is part of GNU Taler + (C) 2022 Taler Systems S.A. + + GNU Taler is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + GNU Taler; see the file COPYING. If not, see + */ + +import { TalerError, TalerErrorCode, assertUnreachable } from "@gnu-taler/taler-util"; +import { Fragment, VNode, h } from "preact"; +import { Attention } from "./Attention.js"; +import { useTranslationContext } from "../index.browser.js"; + +export function ErrorLoading({ error, showDetail }: { error: TalerError, showDetail?: boolean }): VNode { + const { i18n } = useTranslationContext() + switch (error.errorDetail.code) { + ////////////////// + // Every error that can be produce in a Http Request + ////////////////// + case TalerErrorCode.GENERIC_TIMEOUT: { + if (error.hasErrorCode(TalerErrorCode.GENERIC_TIMEOUT)) { + const { requestMethod, requestUrl, timeoutMs } = error.errorDetail + return + {error.message} + {showDetail && +
+              {JSON.stringify({ requestMethod, requestUrl, timeoutMs }, undefined, 2)}
+            
+ } +
+ } + assertUnreachable(1 as never) + } + case TalerErrorCode.GENERIC_CLIENT_INTERNAL_ERROR: { + if (error.hasErrorCode(TalerErrorCode.GENERIC_CLIENT_INTERNAL_ERROR)) { + const { requestMethod, requestUrl, timeoutMs } = error.errorDetail + return + {error.message} + {showDetail && +
+              {JSON.stringify({ requestMethod, requestUrl, timeoutMs }, undefined, 2)}
+            
+ } +
+ } + assertUnreachable(1 as never) + } + case TalerErrorCode.WALLET_HTTP_REQUEST_GENERIC_TIMEOUT: { + if (error.hasErrorCode(TalerErrorCode.WALLET_HTTP_REQUEST_GENERIC_TIMEOUT)) { + const { requestMethod, requestUrl, timeoutMs } = error.errorDetail + return + {error.message} + {showDetail && +
+              {JSON.stringify({ requestMethod, requestUrl, timeoutMs }, undefined, 2)}
+            
+ } +
+ } + assertUnreachable(1 as never) + } + case TalerErrorCode.WALLET_HTTP_REQUEST_THROTTLED: { + if (error.hasErrorCode(TalerErrorCode.WALLET_HTTP_REQUEST_THROTTLED)) { + const { requestMethod, requestUrl, throttleStats } = error.errorDetail + return + {error.message} + {showDetail && +
+              {JSON.stringify({ requestMethod, requestUrl, throttleStats }, undefined, 2)}
+            
+ } +
+ } + assertUnreachable(1 as never) + } + case TalerErrorCode.WALLET_RECEIVED_MALFORMED_RESPONSE: { + if (error.hasErrorCode(TalerErrorCode.WALLET_RECEIVED_MALFORMED_RESPONSE)) { + const { requestMethod, requestUrl, httpStatusCode, validationError } = error.errorDetail + return + {error.message} + {showDetail && +
+              {JSON.stringify({ requestMethod, requestUrl, httpStatusCode, validationError }, undefined, 2)}
+            
+ } +
+ } + assertUnreachable(1 as never) + } + case TalerErrorCode.WALLET_NETWORK_ERROR: { + if (error.hasErrorCode(TalerErrorCode.WALLET_NETWORK_ERROR)) { + const { requestMethod, requestUrl } = error.errorDetail + return + {error.message} + {showDetail && +
+              {JSON.stringify({ requestMethod, requestUrl }, undefined, 2)}
+            
+ } +
+ } + assertUnreachable(1 as never) + } + case TalerErrorCode.WALLET_UNEXPECTED_REQUEST_ERROR: { + if (error.hasErrorCode(TalerErrorCode.WALLET_UNEXPECTED_REQUEST_ERROR)) { + const { requestMethod, requestUrl, httpStatusCode, errorResponse } = error.errorDetail + return + {error.message} + {showDetail && +
+              {JSON.stringify({ requestMethod, requestUrl, httpStatusCode, errorResponse }, undefined, 2)}
+            
+ } +
+ } + assertUnreachable(1 as never) + } + ////////////////// + // Every other error + ////////////////// + // case TalerErrorCode.WALLET_UNEXPECTED_REQUEST_ERROR: { + // return + // + // } + ////////////////// + // Default message for unhandled case + ////////////////// + default: return + {error.message} + {showDetail && +
+          {JSON.stringify(error.errorDetail, undefined, 2)}
+        
+ } +
+ } +} + -- cgit v1.2.3