From 3f5a76751b3bf410ea3df023eef2f5bfd6f730cd Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 5 Sep 2022 21:09:28 +0200 Subject: wallet-core: make listExchanges return less data Since the webextension UI depends on the full response, we have a temporary listExchangesDetailled request. See https://bugs.taler.net/n/7323 for details. --- .../src/cta/InvoiceCreate/state.ts | 2 +- .../src/cta/Withdraw/state.ts | 2 +- .../src/cta/Withdraw/test.ts | 3 +- .../src/wallet/DestinationSelection.tsx | 2 +- .../src/wallet/DeveloperPage.tsx | 2 +- .../src/wallet/ExchangeAddPage.tsx | 2 +- .../src/wallet/ExchangeSelection/example.ts | 9 +++-- .../src/wallet/ExchangeSelection/index.ts | 4 +- .../src/wallet/ExchangeSelection/state.ts | 2 +- .../src/wallet/ExchangeSelection/stories.tsx | 8 ++-- .../src/wallet/ManualWithdrawPage.tsx | 2 +- .../src/wallet/Settings.tsx | 2 +- packages/taler-wallet-webextension/src/wxApi.ts | 44 ++++++++++++++++------ 13 files changed, 55 insertions(+), 29 deletions(-) (limited to 'packages/taler-wallet-webextension') diff --git a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts index 804d216eb..bb0f0d1af 100644 --- a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts +++ b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts @@ -30,7 +30,7 @@ export function useComponentState( const [subject, setSubject] = useState(""); const [talerUri, setTalerUri] = useState("") - const hook = useAsyncAsHook(api.listExchanges); + const hook = useAsyncAsHook(api.listExchangesDetailled); const [exchangeIdx, setExchangeIdx] = useState("0") const [operationError, setOperationError] = useState(undefined) diff --git a/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts b/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts index 3b138e74d..58d3cfedf 100644 --- a/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts +++ b/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts @@ -30,7 +30,7 @@ export function useComponentStateFromParams( const [ageRestricted, setAgeRestricted] = useState(0); - const exchangeHook = useAsyncAsHook(api.listExchanges); + const exchangeHook = useAsyncAsHook(api.listExchangesDetailled); const exchangeHookDep = !exchangeHook || exchangeHook.hasError || !exchangeHook.response diff --git a/packages/taler-wallet-webextension/src/cta/Withdraw/test.ts b/packages/taler-wallet-webextension/src/cta/Withdraw/test.ts index c72f906e5..6c9e0c3ba 100644 --- a/packages/taler-wallet-webextension/src/cta/Withdraw/test.ts +++ b/packages/taler-wallet-webextension/src/cta/Withdraw/test.ts @@ -21,6 +21,7 @@ import { Amounts, + ExchangeFullDetailsListItem, ExchangeListItem, GetExchangeTosResult, } from "@gnu-taler/taler-util"; @@ -29,7 +30,7 @@ import { expect } from "chai"; import { mountHook } from "../../test-utils.js"; import { useComponentStateFromURI } from "./state.js"; -const exchanges: ExchangeListItem[] = [ +const exchanges: ExchangeFullDetailsListItem[] = [ { currency: "ARS", exchangeBaseUrl: "http://exchange.demo.taler.net", diff --git a/packages/taler-wallet-webextension/src/wallet/DestinationSelection.tsx b/packages/taler-wallet-webextension/src/wallet/DestinationSelection.tsx index fa1a606f7..b63bbacaf 100644 --- a/packages/taler-wallet-webextension/src/wallet/DestinationSelection.tsx +++ b/packages/taler-wallet-webextension/src/wallet/DestinationSelection.tsx @@ -171,7 +171,7 @@ export function SelectCurrency({ }): VNode { const { i18n } = useTranslationContext(); - const hook = useAsyncAsHook(wxApi.listExchanges); + const hook = useAsyncAsHook(wxApi.listExchangesDetailled); if (!hook) { return ; diff --git a/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx b/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx index 3406b04ef..8ba92a8f2 100644 --- a/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx +++ b/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx @@ -45,7 +45,7 @@ export function DeveloperPage(): VNode { const response = useAsyncAsHook(async () => { const op = await wxApi.getPendingOperations(); const c = await wxApi.dumpCoins(); - const ex = await wxApi.listExchanges(); + const ex = await wxApi.listExchangesDetailled(); return { operations: op.pendingOperations, coins: c.coins, diff --git a/packages/taler-wallet-webextension/src/wallet/ExchangeAddPage.tsx b/packages/taler-wallet-webextension/src/wallet/ExchangeAddPage.tsx index 859a7f86b..8ba5fb7e9 100644 --- a/packages/taler-wallet-webextension/src/wallet/ExchangeAddPage.tsx +++ b/packages/taler-wallet-webextension/src/wallet/ExchangeAddPage.tsx @@ -36,7 +36,7 @@ export function ExchangeAddPage({ currency, onBack }: Props): VNode { { url: string; config: TalerConfigResponse } | undefined >(undefined); - const knownExchangesResponse = useAsyncAsHook(wxApi.listExchanges); + const knownExchangesResponse = useAsyncAsHook(wxApi.listExchangesDetailled); const knownExchanges = !knownExchangesResponse ? [] : knownExchangesResponse.hasError diff --git a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/example.ts b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/example.ts index 2fbe40407..bdbd36596 100644 --- a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/example.ts +++ b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/example.ts @@ -14,14 +14,17 @@ GNU Taler; see the file COPYING. If not, see */ -import { ExchangeListItem } from "@gnu-taler/taler-util"; +import { + ExchangeFullDetailsListItem, + ExchangeListItem, +} from "@gnu-taler/taler-util"; /** * * @author Sebastian Javier Marchano (sebasjm) */ -export const bitcoinExchanges: ExchangeListItem[] = [ +export const bitcoinExchanges: ExchangeFullDetailsListItem[] = [ { exchangeBaseUrl: "https://bitcoin1.ice.bfh.ch/", currency: "BITCOINBTC", @@ -11778,7 +11781,7 @@ export const bitcoinExchanges: ExchangeListItem[] = [ }, ] as any; -export const kudosExchanges: ExchangeListItem[] = [ +export const kudosExchanges: ExchangeFullDetailsListItem[] = [ { exchangeBaseUrl: "https://exchange1.demo.taler.net/", currency: "KUDOS", diff --git a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/index.ts b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/index.ts index 37fdc8f5e..0dec00b09 100644 --- a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/index.ts +++ b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/index.ts @@ -14,7 +14,7 @@ GNU Taler; see the file COPYING. If not, see */ -import { AbsoluteTime, AmountJson, ExchangeListItem } from "@gnu-taler/taler-util"; +import { AbsoluteTime, AmountJson, ExchangeFullDetailsListItem } from "@gnu-taler/taler-util"; import { Loading } from "../../components/Loading.js"; import { HookError } from "../../hooks/useAsyncAsHook.js"; import { ButtonHandler, SelectFieldHandler } from "../../mui/handlers.js"; @@ -52,7 +52,7 @@ export namespace State { export interface BaseInfo { exchanges: SelectFieldHandler; - selected: ExchangeListItem; + selected: ExchangeFullDetailsListItem; nextFeeUpdate: AbsoluteTime; error: undefined; } diff --git a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts index 70e8487d8..eda755e96 100644 --- a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts +++ b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts @@ -25,7 +25,7 @@ export function useComponentState( { onCancel, onSelection, currency }: Props, api: typeof wxApi, ): State { - const hook = useAsyncAsHook(api.listExchanges); + const hook = useAsyncAsHook(api.listExchangesDetailled); const initialValue = 0 const [value, setValue] = useState(String(initialValue)); diff --git a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/stories.tsx b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/stories.tsx index c4e631b45..094087517 100644 --- a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/stories.tsx +++ b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/stories.tsx @@ -19,7 +19,7 @@ * @author Sebastian Javier Marchano (sebasjm) */ -import { ExchangeListItem } from "@gnu-taler/taler-util"; +import { ExchangeFullDetailsListItem, ExchangeListItem } from "@gnu-taler/taler-util"; import { createExample } from "../../test-utils.js"; import { bitcoinExchanges, kudosExchanges } from "./example.js"; import { FeeDescription, FeeDescriptionPair, OperationMap } from "./index.js"; @@ -34,7 +34,7 @@ export default { }; function timelineForExchange( - ex: ExchangeListItem, + ex: ExchangeFullDetailsListItem, ): OperationMap { return { deposit: createDenominationTimeline( @@ -61,8 +61,8 @@ function timelineForExchange( } function timelinePairForExchange( - ex1: ExchangeListItem, - ex2: ExchangeListItem, + ex1: ExchangeFullDetailsListItem, + ex2: ExchangeFullDetailsListItem, ): OperationMap { const om1 = timelineForExchange(ex1); const om2 = timelineForExchange(ex2); diff --git a/packages/taler-wallet-webextension/src/wallet/ManualWithdrawPage.tsx b/packages/taler-wallet-webextension/src/wallet/ManualWithdrawPage.tsx index a292914fb..5a82c96ed 100644 --- a/packages/taler-wallet-webextension/src/wallet/ManualWithdrawPage.tsx +++ b/packages/taler-wallet-webextension/src/wallet/ManualWithdrawPage.tsx @@ -50,7 +50,7 @@ export function ManualWithdrawPage({ amount, onCancel }: Props): VNode { >(undefined); const [error, setError] = useState(undefined); - const state = useAsyncAsHook(wxApi.listExchanges); + const state = useAsyncAsHook(wxApi.listExchangesDetailled); useEffect(() => { return wxApi.onUpdateNotification([NotificationType.ExchangeAdded], () => { state?.retry(); diff --git a/packages/taler-wallet-webextension/src/wallet/Settings.tsx b/packages/taler-wallet-webextension/src/wallet/Settings.tsx index 4a520c3bb..36a356fba 100644 --- a/packages/taler-wallet-webextension/src/wallet/Settings.tsx +++ b/packages/taler-wallet-webextension/src/wallet/Settings.tsx @@ -49,7 +49,7 @@ export function SettingsPage(): VNode { const webex = platform.getWalletWebExVersion(); const exchangesHook = useAsyncAsHook(async () => { - const list = await wxApi.listExchanges(); + const list = await wxApi.listExchangesDetailled(); const version = await wxApi.getVersion(); return { exchanges: list.exchanges, version }; }); diff --git a/packages/taler-wallet-webextension/src/wxApi.ts b/packages/taler-wallet-webextension/src/wxApi.ts index 074dbbfb0..1b26ea214 100644 --- a/packages/taler-wallet-webextension/src/wxApi.ts +++ b/packages/taler-wallet-webextension/src/wxApi.ts @@ -67,6 +67,7 @@ import { WalletDiagnostics, WalletCoreVersion, WithdrawUriInfoResponse, + ExchangeDetailledListRespose, } from "@gnu-taler/taler-util"; import { AddBackupProviderRequest, @@ -78,7 +79,11 @@ import { } from "@gnu-taler/taler-wallet-core"; import type { DepositGroupFees } from "@gnu-taler/taler-wallet-core/src/operations/deposits"; import type { ExchangeWithdrawDetails } from "@gnu-taler/taler-wallet-core/src/operations/withdraw"; -import { platform, MessageFromBackend, WalletWebExVersion } from "./platform/api.js"; +import { + platform, + MessageFromBackend, + WalletWebExVersion, +} from "./platform/api.js"; /** * @@ -202,8 +207,9 @@ export function getBalance(): Promise { return callBackend("getBalances", {}); } - -export function getContractTermsDetails(proposalId: string): Promise { +export function getContractTermsDetails( + proposalId: string, +): Promise { return callBackend("getContractTermsDetails", { proposalId }); } @@ -250,9 +256,15 @@ export function listKnownCurrencies(): Promise { export function listExchanges(): Promise { return callBackend("listExchanges", {}); } + +export function listExchangesDetailled(): Promise { + return callBackend("listExchangesDetailled", {}); +} + export function getVersion(): Promise { return callBackend("getVersion", {}); } + export function listKnownBankAccounts( currency?: string, ): Promise { @@ -487,23 +499,33 @@ export function onUpdateNotification( return platform.listenToWalletBackground(onNewMessage); } -export function initiatePeerPushPayment(req: InitiatePeerPushPaymentRequest): Promise { +export function initiatePeerPushPayment( + req: InitiatePeerPushPaymentRequest, +): Promise { return callBackend("initiatePeerPushPayment", req); } -export function checkPeerPushPayment(req: CheckPeerPushPaymentRequest): Promise { +export function checkPeerPushPayment( + req: CheckPeerPushPaymentRequest, +): Promise { return callBackend("checkPeerPushPayment", req); } -export function acceptPeerPushPayment(req: AcceptPeerPushPaymentRequest): Promise { +export function acceptPeerPushPayment( + req: AcceptPeerPushPaymentRequest, +): Promise { return callBackend("acceptPeerPushPayment", req); } -export function initiatePeerPullPayment(req: InitiatePeerPullPaymentRequest): Promise { +export function initiatePeerPullPayment( + req: InitiatePeerPullPaymentRequest, +): Promise { return callBackend("initiatePeerPullPayment", req); } -export function checkPeerPullPayment(req: CheckPeerPullPaymentRequest): Promise { +export function checkPeerPullPayment( + req: CheckPeerPullPaymentRequest, +): Promise { return callBackend("checkPeerPullPayment", req); } -export function acceptPeerPullPayment(req: AcceptPeerPullPaymentRequest): Promise { +export function acceptPeerPullPayment( + req: AcceptPeerPullPaymentRequest, +): Promise { return callBackend("acceptPeerPullPayment", req); } - - -- cgit v1.2.3