From 237c4e8adae997e84f5fb7a8fe5c03b1148e99dc Mon Sep 17 00:00:00 2001 From: Sebastian Date: Wed, 27 Mar 2024 01:05:10 -0300 Subject: wip #8655 --- .../src/paths/instance/details/index.tsx | 12 ++++++--- .../src/paths/instance/templates/list/index.tsx | 2 +- .../src/paths/instance/token/DetailPage.tsx | 7 +++-- .../src/paths/instance/token/index.tsx | 12 +++++---- .../src/paths/instance/update/index.tsx | 30 +++++++++++++--------- 5 files changed, 37 insertions(+), 26 deletions(-) (limited to 'packages/merchant-backoffice-ui/src/paths/instance') 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 b76abee30..2714c8e02 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/details/index.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/details/index.tsx @@ -13,12 +13,12 @@ You should have received a copy of the GNU General Public License along with GNU Taler; see the file COPYING. If not, see */ -import { ErrorType, HttpError } from "@gnu-taler/web-util/browser"; +import { ErrorType, HttpError, useMerchantApiContext } from "@gnu-taler/web-util/browser"; import { Fragment, h, VNode } from "preact"; import { useState } from "preact/hooks"; import { Loading } from "../../../components/exception/loading.js"; import { DeleteModal } from "../../../components/modal/index.js"; -import { useInstanceAPI, useInstanceDetails } from "../../../hooks/instance.js"; +import { useInstanceDetails } from "../../../hooks/instance.js"; import { DetailPage } from "./DetailPage.js"; import { HttpStatusCode, TalerErrorDetail } from "@gnu-taler/taler-util"; import { useSessionContext } from "../../../context/session.js"; @@ -42,7 +42,8 @@ export default function Detail({ const result = useInstanceDetails(); const [deleting, setDeleting] = useState(false); - const { deleteInstance } = useInstanceAPI(); + // const { deleteInstance } = useInstanceAPI(); + const { lib } = useMerchantApiContext(); if (result.loading) return ; if (!result.ok) { @@ -71,8 +72,11 @@ export default function Detail({ element={{ name: result.data.name, id: state.instance }} onCancel={() => setDeleting(false)} onConfirm={async (): Promise => { + if (state.status !== "loggedIn") { + return + } try { - await deleteInstance(); + await lib.management.deleteCurrentInstance(state.token); onDelete(); } catch (error) { //FIXME: show message error diff --git a/packages/merchant-backoffice-ui/src/paths/instance/templates/list/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/templates/list/index.tsx index 2138d24a4..40ca6ac98 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/templates/list/index.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/templates/list/index.tsx @@ -92,7 +92,7 @@ export default function ListTemplates({ /> { if (hasToken) { - const oldToken = - `secret-token:${form.old_token}` as AccessToken; + const oldToken = form.old_token as AccessToken; onClearToken(oldToken); } else { onClearToken(undefined); 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 13b5c45f1..f3c9a52ea 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx @@ -13,16 +13,16 @@ You should have received a copy of the GNU General Public License along with GNU Taler; see the file COPYING. If not, see */ -import { AccessToken, HttpStatusCode, TalerErrorDetail } from "@gnu-taler/taler-util"; +import { HttpStatusCode, 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"; import { Loading } from "../../../components/exception/loading.js"; import { NotificationCard } from "../../../components/menu/index.js"; -import { useInstanceAPI, useInstanceDetails } from "../../../hooks/instance.js"; +import { useSessionContext } from "../../../context/session.js"; +import { useInstanceDetails } from "../../../hooks/instance.js"; import { Notification } from "../../../utils/types.js"; import { DetailPage } from "./DetailPage.js"; -import { useSessionContext } from "../../../context/session.js"; interface Props { onUnauthorized: () => VNode; @@ -43,7 +43,7 @@ export default function Token({ const { lib } = useMerchantApiContext(); const { logIn } = useSessionContext(); const [notif, setNotif] = useState(undefined); - const { clearAccessToken } = useInstanceAPI(); + // const { clearAccessToken } = useInstanceAPI(); const result = useInstanceDetails() if (result.loading) return ; @@ -71,7 +71,9 @@ export default function Token({ hasToken={hasToken} onClearToken={async (currentToken): Promise => { try { - await clearAccessToken(currentToken); + await lib.management.updateCurrentInstanceAuthentication(currentToken, { + method: "external", + }) onChange(); } catch (error) { if (error instanceof Error) { 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 d28ca0555..32e4e149c 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/update/index.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/update/index.tsx @@ -13,11 +13,12 @@ You should have received a copy of the GNU General Public License along with GNU Taler; see the file COPYING. If not, see */ -import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util"; +import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi, TalerMerchantInstanceHttpClient } from "@gnu-taler/taler-util"; import { ErrorType, HttpError, HttpResponse, + useMerchantApiContext, useTranslationContext, } from "@gnu-taler/web-util/browser"; import { Fragment, VNode, h } from "preact"; @@ -25,13 +26,12 @@ import { useState } from "preact/hooks"; import { Loading } from "../../../components/exception/loading.js"; import { NotificationCard } from "../../../components/menu/index.js"; import { - useInstanceAPI, useInstanceDetails, useManagedInstanceDetails, - useManagementAPI, } from "../../../hooks/instance.js"; import { Notification } from "../../../utils/types.js"; import { UpdatePage } from "./UpdatePage.js"; +import { useSessionContext } from "../../../context/session.js"; export interface Props { onBack: () => void; @@ -44,19 +44,21 @@ export interface Props { } export default function Update(props: Props): VNode { - const { updateInstance } = useInstanceAPI(); + const { lib } = useMerchantApiContext(); + const updateInstance = lib.management.updateCurrentInstance.bind(lib.management) const result = useInstanceDetails(); - return CommonUpdate(props, result, updateInstance, ); + return CommonUpdate(props, result, updateInstance,); } export function AdminUpdate(props: Props & { instanceId: string }): VNode { - const { updateInstance } = useManagementAPI( - props.instanceId, - ); + const { lib } = useMerchantApiContext(); + const t = lib.instance(props.instanceId) + const updateInstance = lib.instance(props.instanceId).updateCurrentInstance.bind(t) const result = useManagedInstanceDetails(props.instanceId); - return CommonUpdate(props, result, updateInstance, ); + return CommonUpdate(props, result, updateInstance,); } + function CommonUpdate( { onBack, @@ -69,10 +71,11 @@ function CommonUpdate( TalerMerchantApi.QueryInstancesResponse, TalerErrorDetail >, - updateInstance: any, + updateInstance: typeof TalerMerchantInstanceHttpClient.prototype.updateCurrentInstance, ): VNode { const [notif, setNotif] = useState(undefined); const { i18n } = useTranslationContext(); + const { state } = useSessionContext(); if (result.loading) return ; if (!result.ok) { @@ -99,11 +102,14 @@ function CommonUpdate( onUpdate={( d: TalerMerchantApi.InstanceReconfigurationMessage, ): Promise => { - return updateInstance(d) + if (state.status !== "loggedIn") { + return Promise.resolve(); + } + return updateInstance(state.token, d) .then(onConfirm) .catch((error: Error) => setNotif({ - message: i18n.str`Failed to create instance`, + message: i18n.str`Failed to update instance`, type: "ERROR", description: error.message, }), -- cgit v1.2.3