summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2022-09-06 17:17:44 -0300
committerSebastian <sebasjm@gmail.com>2022-09-06 17:17:50 -0300
commit1e00724a0dcd0d65e6d786a1d8d7cdffc9fe2a85 (patch)
tree34eb327ac3370174cec4365ecc375309462d239b /packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts
parent49c9279c1e06a90757b2bd3e75b4887e71345d1d (diff)
downloadwallet-core-1e00724a0dcd0d65e6d786a1d8d7cdffc9fe2a85.tar.gz
wallet-core-1e00724a0dcd0d65e6d786a1d8d7cdffc9fe2a85.tar.bz2
wallet-core-1e00724a0dcd0d65e6d786a1d8d7cdffc9fe2a85.zip
listExchangesDetailed to getExchangeDetailedInfo & ageRestriction taken from the denoms
Diffstat (limited to 'packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts')
-rw-r--r--packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts25
1 files changed, 17 insertions, 8 deletions
diff --git a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts
index eda755e96..28d34578a 100644
--- a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts
+++ b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts
@@ -25,11 +25,21 @@ export function useComponentState(
{ onCancel, onSelection, currency }: Props,
api: typeof wxApi,
): State {
- const hook = useAsyncAsHook(api.listExchangesDetailled);
-
const initialValue = 0
const [value, setValue] = useState(String(initialValue));
+ const hook = useAsyncAsHook(async () => {
+ const { exchanges } = await api.listExchanges()
+
+ const selectedIdx = parseInt(value, 10)
+ const selectedExchange = exchanges.length == 0 ? undefined : exchanges[selectedIdx]
+ const selected = !selectedExchange ? undefined : await api.getExchangeDetailedInfo(selectedExchange.exchangeBaseUrl)
+
+ const initialExchange = selectedIdx === initialValue ? undefined : exchanges[initialValue]
+ const original = !initialExchange ? undefined : await api.getExchangeDetailedInfo(initialExchange.exchangeBaseUrl)
+ return { exchanges, selected, original }
+ });
+
if (!hook) {
return {
status: "loading",
@@ -43,18 +53,16 @@ export function useComponentState(
};
}
- const exchanges = hook.response.exchanges;
+ const { exchanges, selected, original } = hook.response;
- if (exchanges.length === 0) {
+ if (!selected) {
+ //!selected <=> exchanges.length === 0
return {
status: "no-exchanges",
error: undefined
}
}
- const original = exchanges[initialValue];
- const selected = exchanges[Number(value)];
-
let nextFeeUpdate = TalerProtocolTimestamp.never();
nextFeeUpdate = Object.values(selected.wireInfo.feesForType).reduce(
@@ -97,7 +105,8 @@ export function useComponentState(
const exchangeMap = exchanges.reduce((prev, cur, idx) => ({ ...prev, [cur.exchangeBaseUrl]: String(idx) }), {} as Record<string, string>)
- if (original === selected) {
+ if (!original) {
+ // !original <=> selected == original
return {
status: "ready",
exchanges: {