/* This file is part of GNU Taler (C) 2022 Taler Systems S.A. GNU Taler is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Taler; see the file COPYING. If not, see */ import { ExchangeListItem, ExchangeTosStatus, WalletCoreVersion, } from "@gnu-taler/taler-util"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; import { Fragment, h, VNode } from "preact"; import { Checkbox } from "../components/Checkbox.js"; import { JustInDevMode } from "../components/JustInDevMode.js"; import { Part } from "../components/Part.js"; import { SelectList } from "../components/SelectList.js"; import { DestructiveText, Input, LinkPrimary, SubTitle, SuccessText, WarningText, } from "../components/styled/index.js"; import { useAlertContext } from "../context/alert.js"; import { useBackendContext } from "../context/backend.js"; import { useDevContext } from "../context/devContext.js"; import { useTranslationContext } from "../context/translation.js"; import { useAsyncAsHook } from "../hooks/useAsyncAsHook.js"; import { useAutoOpenPermissions } from "../hooks/useAutoOpenPermissions.js"; import { useBackupDeviceName } from "../hooks/useBackupDeviceName.js"; import { useClipboardPermissions } from "../hooks/useClipboardPermissions.js"; import { ToggleHandler } from "../mui/handlers.js"; import { Pages } from "../NavigationBar.js"; import { platform } from "../platform/foreground.js"; const GIT_HASH = typeof __GIT_HASH__ !== "undefined" ? __GIT_HASH__ : undefined; export function SettingsPage(): VNode { const autoOpenToggle = useAutoOpenPermissions(); const clipboardToggle = useClipboardPermissions(); const { devMode, toggle } = useDevContext(); const { name, update } = useBackupDeviceName(); const { pushAlertOnError } = useAlertContext(); const webex = platform.getWalletWebExVersion(); const api = useBackendContext(); const exchangesHook = useAsyncAsHook(async () => { const list = await api.wallet.call(WalletApiOperation.ListExchanges, {}); const version = await api.wallet.call(WalletApiOperation.GetVersion, {}); return { exchanges: list.exchanges, version }; }); const { exchanges, version } = !exchangesHook || exchangesHook.hasError ? { exchanges: [], version: undefined } : exchangesHook.response; return ( ); } export interface ViewProps { deviceName: string; setDeviceName: (s: string) => Promise; autoOpenToggle: ToggleHandler; clipboardToggle: ToggleHandler; devModeToggle: ToggleHandler; knownExchanges: Array; coreVersion: WalletCoreVersion | undefined; webexVersion: { version: string; hash: string | undefined; }; } export function SettingsView({ knownExchanges, autoOpenToggle, clipboardToggle, devModeToggle, coreVersion, webexVersion, }: ViewProps): VNode { const { i18n, lang, supportedLang, changeLanguage } = useTranslationContext(); return (
{/* Enabling this option below will make using the wallet faster, but requires more permissions from your browser. } enabled={clipboardToggle.value!} onToggle={clipboardToggle.button.onClick!} /> */} Trust {!knownExchanges || !knownExchanges.length ? (
No exchange yet
) : ( {knownExchanges.map((e, idx) => { function Status(): VNode { switch (e.tosStatus) { case ExchangeTosStatus.Accepted: return ( ok ); case ExchangeTosStatus.Changed: return ( changed ); case ExchangeTosStatus.New: case ExchangeTosStatus.NotFound: return ( not accepted ); case ExchangeTosStatus.Unknown: default: return ( unknown (exchange status should be updated) ); } } return ( ); })}
Currency URL Term of Service
{e.currency} {e.exchangeBaseUrl}
)}
Add an exchange
Display Current Language} list={supportedLang} name="lang" value={lang} onChange={(v) => changeLanguage(v)} /> Version {coreVersion && ( {coreVersion.version}{" "} {coreVersion.hash} } /> )} {webexVersion.version}{" "} {webexVersion.hash} } /> {coreVersion && ( {coreVersion.exchange}} /> {coreVersion.merchant}} /> {coreVersion.bank}} /> )} Troubleshooting Navigator Enabling this option below will make using the wallet faster, but requires more permissions from your browser. } enabled={autoOpenToggle.value!} onToggle={autoOpenToggle.button.onClick!} />
); }