summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/hooks/useSelectedExchange.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-webextension/src/hooks/useSelectedExchange.ts')
-rw-r--r--packages/taler-wallet-webextension/src/hooks/useSelectedExchange.ts92
1 files changed, 49 insertions, 43 deletions
diff --git a/packages/taler-wallet-webextension/src/hooks/useSelectedExchange.ts b/packages/taler-wallet-webextension/src/hooks/useSelectedExchange.ts
index 7219c30d2..c04dcce84 100644
--- a/packages/taler-wallet-webextension/src/hooks/useSelectedExchange.ts
+++ b/packages/taler-wallet-webextension/src/hooks/useSelectedExchange.ts
@@ -22,21 +22,21 @@ type State = State.Ready | State.NoExchange | State.Selecting;
export namespace State {
export interface NoExchange {
- status: "no-exchange"
+ status: "no-exchange";
error: undefined;
currency: string | undefined;
}
export interface Ready {
- status: "ready",
- doSelect: ButtonHandler,
+ status: "ready";
+ doSelect: ButtonHandler;
selected: ExchangeListItem;
}
export interface Selecting {
- status: "selecting-exchange",
- error: undefined,
+ status: "selecting-exchange";
+ error: undefined;
onSelection: (url: string) => Promise<void>;
onCancel: () => Promise<void>;
- list: ExchangeListItem[],
+ list: ExchangeListItem[];
currency: string;
currentExchange: string;
}
@@ -45,38 +45,42 @@ export namespace State {
interface Props {
currency: string;
//there is a preference for the default at the initial state
- defaultExchange?: string,
+ defaultExchange?: string;
//list of exchanges
- list: ExchangeListItem[],
+ list: ExchangeListItem[];
}
-
-
-export function useSelectedExchange({ currency, defaultExchange, list }: Props): State {
+export function useSelectedExchange({
+ currency,
+ defaultExchange,
+ list,
+}: Props): State {
const [isSelecting, setIsSelecting] = useState(false);
- const [selectedExchange, setSelectedExchange] = useState<string | undefined>(undefined);
+ const [selectedExchange, setSelectedExchange] = useState<string | undefined>(
+ undefined,
+ );
if (!list.length) {
return {
status: "no-exchange",
error: undefined,
currency: undefined,
- }
+ };
}
- const listCurrency = list.filter((e) => e.currency === currency)
+ const listCurrency = list.filter((e) => e.currency === currency);
if (!listCurrency.length) {
// there should be at least one exchange for this currency
return {
status: "no-exchange",
error: undefined,
currency,
- }
+ };
}
-
if (isSelecting) {
- const currentExchange = selectedExchange ?? defaultExchange ?? listCurrency[0].exchangeBaseUrl;
+ const currentExchange =
+ selectedExchange ?? defaultExchange ?? listCurrency[0].exchangeBaseUrl;
return {
status: "selecting-exchange",
error: undefined,
@@ -85,44 +89,46 @@ export function useSelectedExchange({ currency, defaultExchange, list }: Props):
currentExchange: currentExchange,
onSelection: async (exchangeBaseUrl: string) => {
setIsSelecting(false);
- setSelectedExchange(exchangeBaseUrl)
+ setSelectedExchange(exchangeBaseUrl);
},
onCancel: async () => {
setIsSelecting(false);
- }
- }
+ },
+ };
}
{
- const found = !selectedExchange ? undefined : list.find(
- (e) => e.exchangeBaseUrl === selectedExchange,
- )
- if (found) return {
- status: "ready",
- doSelect: {
- onClick: async () => setIsSelecting(true)
- },
- selected: found
- };
+ const found = !selectedExchange
+ ? undefined
+ : list.find((e) => e.exchangeBaseUrl === selectedExchange);
+ if (found)
+ return {
+ status: "ready",
+ doSelect: {
+ onClick: async () => setIsSelecting(true),
+ },
+ selected: found,
+ };
}
{
- const found = !defaultExchange ? undefined : list.find(
- (e) => e.exchangeBaseUrl === defaultExchange,
- )
- if (found) return {
- status: "ready",
- doSelect: {
- onClick: async () => setIsSelecting(true)
- },
- selected: found
- };
+ const found = !defaultExchange
+ ? undefined
+ : list.find((e) => e.exchangeBaseUrl === defaultExchange);
+ if (found)
+ return {
+ status: "ready",
+ doSelect: {
+ onClick: async () => setIsSelecting(true),
+ },
+ selected: found,
+ };
}
return {
status: "ready",
doSelect: {
- onClick: async () => setIsSelecting(true)
+ onClick: async () => setIsSelecting(true),
},
- selected: listCurrency[0]
- }
+ selected: listCurrency[0],
+ };
}