/* 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 } from "@gnu-taler/taler-util"; import { Fragment, h, VNode } from "preact"; import { Checkbox } from "../components/Checkbox.js"; import { ErrorTalerOperation } from "../components/ErrorTalerOperation.js"; import { JustInDevMode } from "../components/JustInDevMode.js"; import { SelectList } from "../components/SelectList.js"; import { DestructiveText, Input, LinkPrimary, SubTitle, SuccessText, WarningText, } from "../components/styled/index.js"; import { useDevContext } from "../context/devContext.js"; import { useTranslationContext } from "../context/translation.js"; import { useAsyncAsHook } from "../hooks/useAsyncAsHook.js"; import { useBackupDeviceName } from "../hooks/useBackupDeviceName.js"; import { useExtendedPermissions } from "../hooks/useExtendedPermissions.js"; import { ToggleHandler } from "../mui/handlers.js"; import { Pages } from "../NavigationBar.js"; import { buildTermsOfServiceStatus } from "../utils/index.js"; import * as wxApi from "../wxApi.js"; export function SettingsPage(): VNode { const permissionToggle = useExtendedPermissions(); const { devMode, toggleDevMode } = useDevContext(); const { name, update } = useBackupDeviceName(); const exchangesHook = useAsyncAsHook(wxApi.listExchanges); return ( ); } export interface ViewProps { deviceName: string; setDeviceName: (s: string) => Promise; permissionToggle: ToggleHandler; developerMode: boolean; toggleDeveloperMode: () => Promise; knownExchanges: Array; } export function SettingsView({ knownExchanges, permissionToggle, developerMode, toggleDeveloperMode, }: ViewProps): VNode { const { i18n, lang, supportedLang, changeLanguage } = useTranslationContext(); return (
{permissionToggle.button.error && ( Could not toggle auto-open} error={permissionToggle.button.error.errorDetail} /> )} Navigator Automatically open wallet based on page content } name="perm" description={ Enabling this option below will make using the wallet faster, but requires more permissions from your browser. } enabled={permissionToggle.value!} onToggle={permissionToggle.button.onClick!} /> Trust {!knownExchanges || !knownExchanges.length ? (
No exchange yet
) : ( {knownExchanges.map((e, idx) => { function Status(): VNode { const status = buildTermsOfServiceStatus( e.tos.content, e.tos.acceptedVersion, e.tos.currentVersion, ); switch (status) { case "accepted": return ( ok ); case "changed": return ( changed ); case "new": case "notfound": return ( not accepted ); } } return ( ); })}
Currency URL Term of Service
{e.currency} {e.exchangeBaseUrl}
)}
Add an exchange
Troubleshooting Developer mode} name="devMode" description={ (More options and information useful for debugging) } enabled={developerMode} onToggle={toggleDeveloperMode} /> Display Current Language} list={supportedLang} name="lang" value={lang} onChange={(v) => changeLanguage(v)} />
); }