summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/wallet/Settings.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-webextension/src/wallet/Settings.tsx')
-rw-r--r--packages/taler-wallet-webextension/src/wallet/Settings.tsx93
1 files changed, 72 insertions, 21 deletions
diff --git a/packages/taler-wallet-webextension/src/wallet/Settings.tsx b/packages/taler-wallet-webextension/src/wallet/Settings.tsx
index ff47620eb..8456ca550 100644
--- a/packages/taler-wallet-webextension/src/wallet/Settings.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/Settings.tsx
@@ -14,16 +14,19 @@
TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { ExchangeListItem, i18n } from "@gnu-taler/taler-util";
+import { ExchangeListItem, i18n, Translate } from "@gnu-taler/taler-util";
import { Fragment, h, VNode } from "preact";
import { Checkbox } from "../components/Checkbox";
+import { SelectList } from "../components/SelectList";
import {
DestructiveText,
+ Input,
LinkPrimary,
SuccessText,
WarningText,
} from "../components/styled";
import { useDevContext } from "../context/devContext";
+import { useTranslationContext } from "../context/translation";
import { useAsyncAsHook } from "../hooks/useAsyncAsHook";
import { useBackupDeviceName } from "../hooks/useBackupDeviceName";
import { useExtendedPermissions } from "../hooks/useExtendedPermissions";
@@ -36,13 +39,13 @@ export function SettingsPage(): VNode {
const [permissionsEnabled, togglePermissions] = useExtendedPermissions();
const { devMode, toggleDevMode } = useDevContext();
const { name, update } = useBackupDeviceName();
- const [lang, changeLang] = useLang();
+ // const [lang, changeLang] = useLang();
const exchangesHook = useAsyncAsHook(wxApi.listExchanges);
return (
<SettingsView
- lang={lang}
- changeLang={changeLang}
+ // lang={lang}
+ // changeLang={changeLang}
knownExchanges={
!exchangesHook || exchangesHook.hasError
? []
@@ -59,8 +62,8 @@ export function SettingsPage(): VNode {
}
export interface ViewProps {
- lang: string;
- changeLang: (s: string) => void;
+ // lang: string;
+ // changeLang: (s: string) => void;
deviceName: string;
setDeviceName: (s: string) => Promise<void>;
permissionsEnabled: boolean;
@@ -77,33 +80,65 @@ export function SettingsView({
developerMode,
toggleDeveloperMode,
}: ViewProps): VNode {
+ const { lang, supportedLang, changeLanguage } = useTranslationContext();
+
return (
<Fragment>
<section>
<h2>
- <i18n.Translate>Permissions</i18n.Translate>
+ <i18n.Translate>Display</i18n.Translate>
+ </h2>
+ <Input>
+ <SelectList
+ label={<i18n.Translate>Current Language</i18n.Translate>}
+ list={supportedLang}
+ name="lang"
+ value={lang}
+ onChange={(v) => changeLanguage(v)}
+ />
+ </Input>
+
+ <h2>
+ <i18n.Translate>Navigator</i18n.Translate>
</h2>
<Checkbox
- label="Automatically open wallet based on page content"
+ label={
+ <i18n.Translate>
+ Automatically open wallet based on page content
+ </i18n.Translate>
+ }
name="perm"
- description="(Enabling this option below will make using the wallet faster, but requires more permissions from your browser.)"
+ description={
+ <i18n.Translate>
+ Enabling this option below will make using the wallet faster, but
+ requires more permissions from your browser.
+ </i18n.Translate>
+ }
enabled={permissionsEnabled}
onToggle={togglePermissions}
/>
<h2>
- <i18n.Translate>Known exchanges</i18n.Translate>
+ <i18n.Translate>Trust</i18n.Translate>
</h2>
{!knownExchanges || !knownExchanges.length ? (
- <div>No exchange yet!</div>
+ <div>
+ <i18n.Translate>No exchange yet</i18n.Translate>
+ </div>
) : (
<Fragment>
<table>
<thead>
<tr>
- <th>currency</th>
- <th>url</th>
- <th>term of service</th>
+ <th>
+ <i18n.Translate>Currency</i18n.Translate>
+ </th>
+ <th>
+ <i18n.Translate>URL</i18n.Translate>
+ </th>
+ <th>
+ <i18n.Translate>Term of Service</i18n.Translate>
+ </th>
</tr>
</thead>
<tbody>
@@ -116,12 +151,24 @@ export function SettingsView({
);
switch (status) {
case "accepted":
- return <SuccessText>ok</SuccessText>;
+ return (
+ <SuccessText>
+ <i18n.Translate>ok</i18n.Translate>
+ </SuccessText>
+ );
case "changed":
- return <WarningText>changed!</WarningText>;
+ return (
+ <WarningText>
+ <i18n.Translate>changed</i18n.Translate>
+ </WarningText>
+ );
case "new":
case "notfound":
- return <DestructiveText>not accepted</DestructiveText>;
+ return (
+ <DestructiveText>
+ <i18n.Translate>not accepted</i18n.Translate>
+ </DestructiveText>
+ );
}
}
return (
@@ -143,15 +190,19 @@ export function SettingsView({
<div style={{ display: "flex", justifyContent: "space-between" }}>
<div />
<LinkPrimary href={Pages.settings_exchange_add}>
- Add an exchange
+ <i18n.Translate>Add an exchange</i18n.Translate>
</LinkPrimary>
</div>
- <h2>Config</h2>
+ <h2>Troubleshooting</h2>
<Checkbox
- label="Developer mode"
+ label={<i18n.Translate>Developer mode</i18n.Translate>}
name="devMode"
- description="(More options and information useful for debugging)"
+ description={
+ <i18n.Translate>
+ (More options and information useful for debugging)
+ </i18n.Translate>
+ }
enabled={developerMode}
onToggle={toggleDeveloperMode}
/>