aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/wallet
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2022-09-20 20:26:41 -0300
committerSebastian <sebasjm@gmail.com>2022-09-20 20:26:47 -0300
commit859991a40c4a7757d874f9ae6e6db7b76145a3c3 (patch)
tree2d029521929fa63f731e0b62bd3342f6f70ad2f8 /packages/taler-wallet-webextension/src/wallet
parent7adaeff0a57bc2d0633dd6a2c750a91facc03c4d (diff)
downloadwallet-core-859991a40c4a7757d874f9ae6e6db7b76145a3c3.tar.xz
exchange selection for invoices and some fixes
Diffstat (limited to 'packages/taler-wallet-webextension/src/wallet')
-rw-r--r--packages/taler-wallet-webextension/src/wallet/ExchangeSelection/index.ts12
-rw-r--r--packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts7
-rw-r--r--packages/taler-wallet-webextension/src/wallet/ExchangeSelection/views.tsx16
3 files changed, 23 insertions, 12 deletions
diff --git a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/index.ts b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/index.ts
index 2834028c6..4b28904fb 100644
--- a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/index.ts
+++ b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/index.ts
@@ -41,13 +41,16 @@ export interface Props {
onCancel: () => Promise<void>;
onSelection: (exchange: string) => Promise<void>;
}
+import {
+ State as SelectExchangeState
+} from "../../hooks/useSelectedExchange.js";
export type State =
| State.Loading
| State.LoadingUriError
| State.Ready
| State.Comparing
- | State.NoExchanges;
+ | SelectExchangeState.NoExchange;
export namespace State {
export interface Loading {
@@ -66,11 +69,6 @@ export namespace State {
error: undefined;
}
- export interface NoExchanges {
- status: "no-exchanges";
- error: undefined;
- }
-
export interface Ready extends BaseInfo {
status: "ready";
timeline: OperationMap<FeeDescription[]>;
@@ -89,7 +87,7 @@ const viewMapping: StateViewMap<State> = {
loading: Loading,
"error-loading": ErrorLoadingView,
comparing: ComparingView,
- "no-exchanges": NoExchangesView,
+ "no-exchange": NoExchangesView,
ready: ReadyView,
};
diff --git a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts
index db6138f8e..0279f6514 100644
--- a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts
+++ b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts
@@ -47,7 +47,7 @@ export function useComponentState(
? undefined
: await api.getExchangeDetailedInfo(initialExchange.exchangeBaseUrl);
return { exchanges, selected, original };
- });
+ }, [value]);
if (!hook) {
return {
@@ -67,13 +67,14 @@ export function useComponentState(
if (!selected) {
//!selected <=> exchanges.length === 0
return {
- status: "no-exchanges",
+ status: "no-exchange",
error: undefined,
+ currency: undefined,
};
}
const exchangeMap = exchanges.reduce(
- (prev, cur, idx) => ({ ...prev, [cur.exchangeBaseUrl]: String(idx) }),
+ (prev, cur, idx) => ({ ...prev, [String(idx)]: cur.exchangeBaseUrl }),
{} as Record<string, string>,
);
diff --git a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/views.tsx b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/views.tsx
index dd85dff46..47554bfcd 100644
--- a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/views.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/views.tsx
@@ -31,6 +31,9 @@ import { useTranslationContext } from "../../context/translation.js";
import { Button } from "../../mui/Button.js";
import arrowDown from "../../svg/chevron-down.svg";
import { State } from "./index.js";
+import {
+ State as SelectExchangeState
+} from "../../hooks/useSelectedExchange.js";
const ButtonGroup = styled.div`
& > button {
@@ -112,11 +115,20 @@ export function ErrorLoadingView({ error }: State.LoadingUriError): VNode {
);
}
-export function NoExchangesView(state: State.NoExchanges): VNode {
+
+
+export function NoExchangesView({currency}: SelectExchangeState.NoExchange): VNode {
const { i18n } = useTranslationContext();
+ if (!currency) {
+ return (
+ <div>
+ <i18n.Translate>could not find any exchange</i18n.Translate>
+ </div>
+ );
+ }
return (
<div>
- <i18n.Translate>no exchanges</i18n.Translate>
+ <i18n.Translate>could not find any exchange for the currency {currency}</i18n.Translate>
</div>
);
}