taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 93b73848f7cf47e21ec256094610c03f67659324
parent 049570567ceb4e625f197d719b328b93f4a487d2
Author: Florian Dold <florian@dold.me>
Date:   Tue, 11 Feb 2025 15:57:48 +0100

webext: remove usage of deprecated wallet-core request

Diffstat:
Mpackages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.stories.tsx | 41+++++++++++++++++++++--------------------
Mpackages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.tsx | 48+++++++++++++++++++++++++++---------------------
2 files changed, 48 insertions(+), 41 deletions(-)

diff --git a/packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.stories.tsx b/packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.stories.tsx @@ -18,6 +18,7 @@ * * @author Sebastian Javier Marchano (sebasjm) */ +import { AmountString, ContractTerms } from "@gnu-taler/taler-util"; import * as tests from "@gnu-taler/web-util/testing"; import { ErrorView, @@ -25,42 +26,42 @@ import { LoadingView, ShowView, } from "./ShowFullContractTermPopup.js"; -import { AmountString, WalletContractData } from "@gnu-taler/taler-util"; export default { title: "ShowFullContractTermPopup", }; -const cd: WalletContractData = { +const cd: ContractTerms = { + products: [], + nonce: "123", amount: "ARS:2" as AmountString, - contractTermsHash: - "92X0KSJPZ8XS2XECCGFWTCGW8XMFCXTT2S6WHZDP6H9Y3TSKMTHY94WXEWDERTNN5XWCYGW4VN5CF2D4846HXTW7P06J4CZMHCWKC9G", - fulfillmentUrl: "", - merchantBaseUrl: "https://merchant-backend.taler.ar/", - merchantPub: "JZYHJ13M91GMSQMT75J8Q6ZN0QP8XF8CRHR7K5MMWYE8JQB6AAPG", - merchantSig: - "0YA1WETV15R6K8QKS79QA3QMT16010F42Q49VSKYQ71HVQKAG0A4ZJCA4YTKHE9EA5SP156TJSKZEJJJ87305N6PS80PC48RNKYZE08", - orderId: "2022.220-0281XKKB8W7YE", + merchant_base_url: "https://merchant-backend.taler.ar/", + merchant_pub: "JZYHJ13M91GMSQMT75J8Q6ZN0QP8XF8CRHR7K5MMWYE8JQB6AAPG", + order_id: "2022.220-0281XKKB8W7YE", summary: "w", - payDeadline: { + pay_deadline: { t_s: 1660002673, }, - refundDeadline: { + refund_deadline: { t_s: 1660002673, }, - allowedExchanges: [ + exchanges: [ { - exchangeBaseUrl: "https://exchange.taler.ar/", - exchangePub: "1C2EYE90PYDNVRTQ25A3PA0KW5W4WPAJNNQHVHV49PT6W5CERFV0", + master_pub: "1C2EYE90PYDNVRTQ25A3PA0KW5W4WPAJNNQHVHV49PT6W5CERFV0", + url: "https://exchange.taler.ar/", + priority: 1, }, ], timestamp: { t_s: 1659972710, }, - wireMethod: "x-taler-bank", - wireInfoHash: + wire_transfer_deadline: { + t_s: 1659972710, + }, + wire_method: "x-taler-bank", + h_wire: "QDT28374ZHYJ59WQFZ3TW1D5WKJVDYHQT86VHED3TNMB15ANJSKXDYPPNX01348KDYCX6T4WXA5A8FJJ8YWNEB1JW726C1JPKHM89DR", - maxDepositFee: "ARS:1" as AmountString, + max_fee: "ARS:1" as AmountString, merchant: { name: "Default", address: { @@ -71,8 +72,8 @@ const cd: WalletContractData = { }, }, // products: [], - autoRefund: undefined, - summaryI18n: undefined, + auto_refund: undefined, + summary_i18n: undefined, // deliveryDate: undefined, // deliveryLocation: undefined, }; diff --git a/packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.tsx b/packages/taler-wallet-webextension/src/components/ShowFullContractTermPopup.tsx @@ -15,12 +15,13 @@ */ import { AbsoluteTime, + ContractTerms, Duration, Location, TransactionIdStr, - WalletContractData, } from "@gnu-taler/taler-util"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; +import { useTranslationContext } from "@gnu-taler/web-util/browser"; import { styled } from "@linaria/react"; import { Fragment, h, VNode } from "preact"; import { useState } from "preact/hooks"; @@ -29,14 +30,12 @@ import { Modal } from "../components/Modal.js"; import { Time } from "../components/Time.js"; import { alertFromError, useAlertContext } from "../context/alert.js"; import { useBackendContext } from "../context/backend.js"; -import { useTranslationContext } from "@gnu-taler/web-util/browser"; import { HookError, useAsyncAsHook } from "../hooks/useAsyncAsHook.js"; import { ButtonHandler } from "../mui/handlers.js"; import { compose, StateViewMap } from "../utils/index.js"; import { Amount } from "./Amount.js"; import { ErrorAlertView } from "./CurrentAlerts.js"; import { Link } from "./styled/index.js"; -import { WxApiType } from "../wxApi.js"; const ContractTermsTable = styled.table` width: 100%; @@ -96,7 +95,7 @@ export namespace States { export interface Show { status: "show"; hideHandler: ButtonHandler; - contractTerms: WalletContractData; + contractTerms: ContractTerms; } } @@ -110,8 +109,9 @@ function useComponentState({ transactionId }: Props): State { const { pushAlertOnError } = useAlertContext(); const hook = useAsyncAsHook(async () => { if (!show) return undefined; - return await api.wallet.call(WalletApiOperation.GetContractTermsDetails, { + return await api.wallet.call(WalletApiOperation.GetTransactionById, { transactionId, + includeContractTerms: true, }); }, [show]); @@ -131,9 +131,15 @@ function useComponentState({ transactionId }: Props): State { if (hook.hasError) return { status: "error", transactionId, error: hook, hideHandler }; if (!hook.response) return { status: "loading", hideHandler }; + if ( + !("contractTerms" in hook.response) || + hook.response.contractTerms == null + ) { + throw Error(); + } return { status: "show", - contractTerms: hook.response, + contractTerms: hook.response.contractTerms, hideHandler, }; } @@ -195,7 +201,7 @@ export function ShowView({ contractTerms, hideHandler }: States.Show): VNode { <td> <i18n.Translate>Order Id</i18n.Translate> </td> - <td>{contractTerms.orderId}</td> + <td>{contractTerms.order_id}</td> </tr> <tr> <td> @@ -259,8 +265,8 @@ export function ShowView({ contractTerms, hideHandler }: States.Show): VNode { <i18n.Translate>Merchant public key</i18n.Translate> </td> <td> - <span title={contractTerms.merchantPub}> - {contractTerms.merchantPub.substring(0, 6)}... + <span title={contractTerms.merchant_pub}> + {contractTerms.merchant_pub.substring(0, 6)}... </span> </td> </tr> @@ -320,7 +326,7 @@ export function ShowView({ contractTerms, hideHandler }: States.Show): VNode { { <Time timestamp={AbsoluteTime.fromProtocolTimestamp( - contractTerms.refundDeadline, + contractTerms.refund_deadline, )} format="dd MMMM yyyy, HH:mm" /> @@ -336,11 +342,11 @@ export function ShowView({ contractTerms, hideHandler }: States.Show): VNode { <Time timestamp={AbsoluteTime.addDuration( createdAt, - !contractTerms.autoRefund + !contractTerms.auto_refund ? Duration.getZero() : Duration.fromTalerProtocolDuration( - contractTerms.autoRefund, - ), + contractTerms.auto_refund, + ), )} format="dd MMMM yyyy, HH:mm" /> @@ -355,7 +361,7 @@ export function ShowView({ contractTerms, hideHandler }: States.Show): VNode { { <Time timestamp={AbsoluteTime.fromProtocolTimestamp( - contractTerms.payDeadline, + contractTerms.pay_deadline, )} format="dd MMMM yyyy, HH:mm" /> @@ -366,13 +372,13 @@ export function ShowView({ contractTerms, hideHandler }: States.Show): VNode { <td> <i18n.Translate>Fulfillment URL</i18n.Translate> </td> - <td>{contractTerms.fulfillmentUrl}</td> + <td>{contractTerms.fulfillment_url}</td> </tr> <tr> <td> <i18n.Translate>Fulfillment message</i18n.Translate> </td> - <td>{contractTerms.fulfillmentMessage}</td> + <td>{contractTerms.fulfillment_message}</td> </tr> {/* <tr> <td>Public reorder URL</td> @@ -383,7 +389,7 @@ export function ShowView({ contractTerms, hideHandler }: States.Show): VNode { <i18n.Translate>Max deposit fee</i18n.Translate> </td> <td> - <Amount value={contractTerms.maxDepositFee} /> + <Amount value={contractTerms.max_fee} /> </td> </tr> {/* <tr> @@ -397,10 +403,10 @@ export function ShowView({ contractTerms, hideHandler }: States.Show): VNode { <i18n.Translate>Exchanges</i18n.Translate> </td> <td> - {(contractTerms.allowedExchanges || []).map((e) => ( - <Fragment key={e.exchangePub}> - <a href={e.exchangeBaseUrl} title={e.exchangePub}> - {e.exchangePub.substring(0, 6)}... + {(contractTerms.exchanges || []).map((e) => ( + <Fragment key={e.master_pub}> + <a href={e.url} title={e.master_pub}> + {e.master_pub.substring(0, 6)}... </a> &nbsp; </Fragment>