diff options
Diffstat (limited to 'packages/merchant-backoffice-ui/src/paths/instance')
5 files changed, 110 insertions, 81 deletions
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/details/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/details/index.tsx index 2714c8e02..627b5d1be 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/details/index.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/details/index.tsx @@ -20,8 +20,9 @@ import { Loading } from "../../../components/exception/loading.js"; import { DeleteModal } from "../../../components/modal/index.js"; import { useInstanceDetails } from "../../../hooks/instance.js"; import { DetailPage } from "./DetailPage.js"; -import { HttpStatusCode, TalerErrorDetail } from "@gnu-taler/taler-util"; +import { HttpStatusCode, TalerError, TalerErrorDetail } from "@gnu-taler/taler-util"; import { useSessionContext } from "../../../context/session.js"; +import { ErrorLoadingMerchant } from "../../../components/ErrorLoadingMerchant.js"; interface Props { onUnauthorized: () => VNode; @@ -45,31 +46,36 @@ export default function Detail({ // const { deleteInstance } = useInstanceAPI(); const { lib } = useMerchantApiContext(); - if (result.loading) return <Loading />; - if (!result.ok) { - if ( - result.type === ErrorType.CLIENT && - result.status === HttpStatusCode.Unauthorized - ) - return onUnauthorized(); - if ( - result.type === ErrorType.CLIENT && - result.status === HttpStatusCode.NotFound - ) - return onNotFound(); - return onLoadError(result); + if (!result) return <Loading /> + if (result instanceof TalerError) { + return <ErrorLoadingMerchant error={result} /> } + // if (result.loading) return <Loading />; + // if (!result.ok) { + // if ( + // result.type === ErrorType.CLIENT && + // result.status === HttpStatusCode.Unauthorized + // ) + // return onUnauthorized(); + // if ( + // result.type === ErrorType.CLIENT && + // result.status === HttpStatusCode.NotFound + // ) + // return onNotFound(); + // return onLoadError(result); + // } + return ( <Fragment> <DetailPage - selected={result.data} + selected={result.body} onUpdate={onUpdate} onDelete={() => setDeleting(true)} /> {deleting && ( <DeleteModal - element={{ name: result.data.name, id: state.instance }} + element={{ name: result.body.name, id: state.instance }} onCancel={() => setDeleting(false)} onConfirm={async (): Promise<void> => { if (state.status !== "loggedIn") { diff --git a/packages/merchant-backoffice-ui/src/paths/instance/kyc/list/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/kyc/list/index.tsx index 555eb47b9..9d0bd2e16 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/kyc/list/index.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/kyc/list/index.tsx @@ -24,7 +24,8 @@ import { h, VNode } from "preact"; import { Loading } from "../../../../components/exception/loading.js"; import { useInstanceKYCDetails } from "../../../../hooks/instance.js"; import { ListPage } from "./ListPage.js"; -import { HttpStatusCode, TalerErrorDetail } from "@gnu-taler/taler-util"; +import { HttpStatusCode, TalerError, TalerErrorDetail } from "@gnu-taler/taler-util"; +import { ErrorLoadingMerchant } from "../../../../components/ErrorLoadingMerchant.js"; interface Props { onUnauthorized: () => VNode; @@ -38,22 +39,44 @@ export default function ListKYC({ onNotFound, }: Props): VNode { const result = useInstanceKYCDetails(); - if (result.loading) return <Loading />; - if (!result.ok) { - if ( - result.type === ErrorType.CLIENT && - result.status === HttpStatusCode.Unauthorized - ) - return onUnauthorized(); - if ( - result.type === ErrorType.CLIENT && - result.status === HttpStatusCode.NotFound - ) - return onNotFound(); - return onLoadError(result); + if (!result) return <Loading /> + if (result instanceof TalerError) { + return <ErrorLoadingMerchant error={result} /> } + // if (result.loading) return <Loading />; + // if (!result.ok) { + // if ( + // result.type === ErrorType.CLIENT && + // result.status === HttpStatusCode.Unauthorized + // ) + // return onUnauthorized(); + // if ( + // result.type === ErrorType.CLIENT && + // result.status === HttpStatusCode.NotFound + // ) + // return onNotFound(); + // return onLoadError(result); + // } + if (result.type === "fail") { + switch (result.case) { + case HttpStatusCode.GatewayTimeout: { + return <div /> + } + case HttpStatusCode.BadGateway: { + const status = result.body; - const status = result.data.type === "ok" ? undefined : result.data.status; + if (!status) { + return <div>no kyc required</div>; + } + return <ListPage status={status} />; + + } + case HttpStatusCode.ServiceUnavailable: { + return <div /> + } + } + } + const status = result.body; if (!status) { return <div>no kyc required</div>; diff --git a/packages/merchant-backoffice-ui/src/paths/instance/orders/create/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/orders/create/index.tsx index a7165fa41..54d8c7b47 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/orders/create/index.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/orders/create/index.tsx @@ -19,7 +19,7 @@ * @author Sebastian Javier Marchano (sebasjm) */ -import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util"; +import { HttpStatusCode, TalerError, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util"; import { ErrorType, HttpError, useMerchantApiContext } from "@gnu-taler/web-util/browser"; import { Fragment, VNode, h } from "preact"; import { useState } from "preact/hooks"; @@ -30,6 +30,7 @@ import { useInstanceProducts } from "../../../../hooks/product.js"; import { Notification } from "../../../../utils/types.js"; import { CreatePage } from "./CreatePage.js"; import { useSessionContext } from "../../../../context/session.js"; +import { ErrorLoadingMerchant } from "../../../../components/ErrorLoadingMerchant.js"; export type Entity = { request: TalerMerchantApi.PostOrderRequest; @@ -55,22 +56,27 @@ export default function OrderCreate({ const detailsResult = useInstanceDetails(); const inventoryResult = useInstanceProducts(); - if (detailsResult.loading) return <Loading />; + if (!detailsResult) return <Loading /> + if (detailsResult instanceof TalerError) { + return <ErrorLoadingMerchant error={detailsResult} /> + } + + // if (detailsResult.loading) return <Loading />; if (inventoryResult.loading) return <Loading />; - if (!detailsResult.ok) { - if ( - detailsResult.type === ErrorType.CLIENT && - detailsResult.status === HttpStatusCode.Unauthorized - ) - return onUnauthorized(); - if ( - detailsResult.type === ErrorType.CLIENT && - detailsResult.status === HttpStatusCode.NotFound - ) - return onNotFound(); - return onLoadError(detailsResult); - } + // if (!detailsResult.ok) { + // if ( + // detailsResult.type === ErrorType.CLIENT && + // detailsResult.status === HttpStatusCode.Unauthorized + // ) + // return onUnauthorized(); + // if ( + // detailsResult.type === ErrorType.CLIENT && + // detailsResult.status === HttpStatusCode.NotFound + // ) + // return onNotFound(); + // return onLoadError(detailsResult); + // } if (!inventoryResult.ok) { if ( @@ -112,7 +118,7 @@ export default function OrderCreate({ }); }); }} - instanceConfig={detailsResult.data} + instanceConfig={detailsResult.body} instanceInventory={inventoryResult.data} /> </Fragment> diff --git a/packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx index f7129d279..16a4bda22 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx @@ -13,7 +13,7 @@ You should have received a copy of the GNU General Public License along with GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ -import { HttpStatusCode, TalerErrorDetail } from "@gnu-taler/taler-util"; +import { HttpStatusCode, TalerError, TalerErrorDetail } from "@gnu-taler/taler-util"; import { ErrorType, HttpError, useMerchantApiContext, useTranslationContext } from "@gnu-taler/web-util/browser"; import { Fragment, VNode, h } from "preact"; import { useState } from "preact/hooks"; @@ -23,6 +23,7 @@ import { useSessionContext } from "../../../context/session.js"; import { useInstanceDetails } from "../../../hooks/instance.js"; import { Notification } from "../../../utils/types.js"; import { DetailPage } from "./DetailPage.js"; +import { ErrorLoadingMerchant } from "../../../components/ErrorLoadingMerchant.js"; interface Props { onUnauthorized: () => VNode; @@ -46,22 +47,27 @@ export default function Token({ // const { clearAccessToken } = useInstanceAPI(); const result = useInstanceDetails() - if (result.loading) return <Loading />; - if (!result.ok) { - if ( - result.type === ErrorType.CLIENT && - result.status === HttpStatusCode.Unauthorized - ) - return onUnauthorized(); - if ( - result.type === ErrorType.CLIENT && - result.status === HttpStatusCode.NotFound - ) - return onNotFound(); - return onLoadError(result); + if (!result) return <Loading /> + if (result instanceof TalerError) { + return <ErrorLoadingMerchant error={result} /> } - const hasToken = result.data.auth.method === "token" + // if (result.loading) return <Loading />; + // if (!result.ok) { + // if ( + // result.type === ErrorType.CLIENT && + // result.status === HttpStatusCode.Unauthorized + // ) + // return onUnauthorized(); + // if ( + // result.type === ErrorType.CLIENT && + // result.status === HttpStatusCode.NotFound + // ) + // return onNotFound(); + // return onLoadError(result); + // } + + const hasToken = result.body.auth.method === "token" return ( <Fragment> diff --git a/packages/merchant-backoffice-ui/src/paths/instance/update/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/update/index.tsx index 32e4e149c..290bfa214 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/update/index.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/update/index.tsx @@ -13,7 +13,7 @@ You should have received a copy of the GNU General Public License along with GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ -import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi, TalerMerchantInstanceHttpClient } from "@gnu-taler/taler-util"; +import { HttpStatusCode, OperationOk, TalerError, TalerErrorDetail, TalerMerchantApi, TalerMerchantInstanceHttpClient } from "@gnu-taler/taler-util"; import { ErrorType, HttpError, @@ -32,6 +32,7 @@ import { import { Notification } from "../../../utils/types.js"; import { UpdatePage } from "./UpdatePage.js"; import { useSessionContext } from "../../../context/session.js"; +import { ErrorLoadingMerchant } from "../../../components/ErrorLoadingMerchant.js"; export interface Props { onBack: () => void; @@ -67,29 +68,16 @@ function CommonUpdate( onNotFound, onUnauthorized, }: Props, - result: HttpResponse< - TalerMerchantApi.QueryInstancesResponse, - TalerErrorDetail - >, + result: OperationOk<TalerMerchantApi.QueryInstancesResponse> | TalerError | undefined, updateInstance: typeof TalerMerchantInstanceHttpClient.prototype.updateCurrentInstance, ): VNode { const [notif, setNotif] = useState<Notification | undefined>(undefined); const { i18n } = useTranslationContext(); const { state } = useSessionContext(); - if (result.loading) return <Loading />; - if (!result.ok) { - if ( - result.type === ErrorType.CLIENT && - result.status === HttpStatusCode.Unauthorized - ) - return onUnauthorized(); - if ( - result.type === ErrorType.CLIENT && - result.status === HttpStatusCode.NotFound - ) - return onNotFound(); - return onLoadError(result); + if (!result) return <Loading /> + if (result instanceof TalerError) { + return <ErrorLoadingMerchant error={result} /> } return ( @@ -98,7 +86,7 @@ function CommonUpdate( <UpdatePage onBack={onBack} isLoading={false} - selected={result.data} + selected={result.body} onUpdate={( d: TalerMerchantApi.InstanceReconfigurationMessage, ): Promise<void> => { |