taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 6ddeb1733f58c7a7dc971f53c7602a55abc9f60a
parent a23dbdfff4d5ee6c94c52e77d5dcddab1645f048
Author: Sebastian <sebasjm@gmail.com>
Date:   Wed,  9 Apr 2025 12:25:39 -0300

fix #9495

Diffstat:
Mpackages/bank-ui/src/hooks/preferences.ts | 25++++++++++++++++++-------
Mpackages/bank-ui/src/pages/AccountPage/views.tsx | 9++++++---
Mpackages/bank-ui/src/pages/BankFrame.tsx | 2+-
Mpackages/bank-ui/src/settings.ts | 5+++++
Mpackages/kyc-ui/src/pages/FillForm.tsx | 1+
5 files changed, 31 insertions(+), 11 deletions(-)

diff --git a/packages/bank-ui/src/hooks/preferences.ts b/packages/bank-ui/src/hooks/preferences.ts @@ -25,12 +25,13 @@ import { useLocalStorage, useTranslationContext, } from "@gnu-taler/web-util/browser"; +import { UiSettings } from "../settings.js"; const TALER_SCREEN_ID = 102; interface Preferences { showWithdrawalSuccess: boolean; - showDemoDescription: boolean; + hideDemo: boolean; showInstallWallet: boolean; showDebugInfo: boolean; allowsSimplePassword: boolean; @@ -41,7 +42,7 @@ interface Preferences { export const codecForPreferences = (): Codec<Preferences> => buildCodecForObject<Preferences>() .property("showWithdrawalSuccess", codecForBoolean()) - .property("showDemoDescription", codecForBoolean()) + .property("hideDemo", codecForBoolean()) .property("showInstallWallet", codecForBoolean()) .property("showDebugInfo", codecForBoolean()) .property("allowsSimplePassword", codecForBoolean()) @@ -51,7 +52,7 @@ export const codecForPreferences = (): Codec<Preferences> => const defaultPreferences: Preferences = { showWithdrawalSuccess: true, - showDemoDescription: true, + hideDemo: true, allowsSimplePassword: false, showInstallWallet: true, showDebugInfo: false, @@ -84,15 +85,25 @@ export function usePreferences(): [ return [value, updateField]; } -export function getAllBooleanPreferences(): Array<keyof Preferences> { +export function getAllBooleanPreferences(settings: UiSettings): Array<keyof Preferences> { + if (settings.showDemoDescription) { + return [ + "showDebugInfo", + "hideDemo", + "showInstallWallet", + "showWithdrawalSuccess", + "fastWithdrawalForm", + "showCopyAccount", + ]; + } return [ "showDebugInfo", - "showDemoDescription", "showInstallWallet", "showWithdrawalSuccess", "fastWithdrawalForm", "showCopyAccount", ]; + } export function getLabelForPreferences( @@ -106,8 +117,8 @@ export function getLabelForPreferences( return i18n.str`Withdraw without setting amount`; case "showCopyAccount": return i18n.str`Show copy account letter`; - case "showDemoDescription": - return i18n.str`Show demo description`; + case "hideDemo": + return i18n.str`Hide demo hint.`; case "showInstallWallet": return i18n.str`Show install wallet first`; case "allowsSimplePassword": diff --git a/packages/bank-ui/src/pages/AccountPage/views.tsx b/packages/bank-ui/src/pages/AccountPage/views.tsx @@ -23,6 +23,7 @@ import { usePreferences } from "../../hooks/preferences.js"; import { PaymentOptions } from "../PaymentOptions.js"; import { State } from "./index.js"; import { RouteDefinition } from "@gnu-taler/web-util/browser"; +import { useSettingsContext } from "../../context/settings.js"; const TALER_SCREEN_ID = 5; @@ -43,13 +44,15 @@ function ShowDemoInfo({ routePublicAccounts: RouteDefinition; }): VNode { const { i18n } = useTranslationContext(); - const [settings, updateSettings] = usePreferences(); - if (!settings.showDemoDescription) return <Fragment />; + const settings = useSettingsContext(); + const [preferences, updatePreferences] = usePreferences(); + if (!settings.showDemoDescription || preferences.hideDemo) + return <Fragment />; return ( <Attention title={i18n.str`This is a demo`} onClose={() => { - updateSettings("showDemoDescription", false); + updatePreferences("hideDemo", true); }} > {IS_PUBLIC_ACCOUNT_ENABLED ? ( diff --git a/packages/bank-ui/src/pages/BankFrame.tsx b/packages/bank-ui/src/pages/BankFrame.tsx @@ -128,7 +128,7 @@ export function BankFrame({ <i18n.Translate>Preferences</i18n.Translate> </div> <ul role="list" class="space-y-4"> - {getAllBooleanPreferences().map((set) => { + {getAllBooleanPreferences(settings).map((set) => { const isOn: boolean = !!preferences[set]; return ( <li key={set} class="pl-2"> diff --git a/packages/bank-ui/src/settings.ts b/packages/bank-ui/src/settings.ts @@ -50,6 +50,9 @@ export interface UiSettings { // will send a default value that the user can change. // default: 10 defaultSuggestedAmount?: number; + // Show a "This is a demo" info in the home screen. + // default: false + showDemoDescription?: boolean; } /** @@ -60,6 +63,7 @@ const defaultSettings: UiSettings = { iconLinkURL: undefined, simplePasswordForRandomAccounts: false, allowRandomAccountCreation: false, + showDemoDescription: false, topNavSites: {}, defaultSuggestedAmount: 10, }; @@ -68,6 +72,7 @@ const codecForUISettings = (): Codec<UiSettings> => buildCodecForObject<UiSettings>() .property("backendBaseURL", codecOptional(codecForString())) .property("allowRandomAccountCreation", codecOptional(codecForBoolean())) + .property("showDemoDescription", codecOptional(codecForBoolean())) .property("defaultSuggestedAmount", codecOptional(codecForNumber())) .property( "simplePasswordForRandomAccounts", diff --git a/packages/kyc-ui/src/pages/FillForm.tsx b/packages/kyc-ui/src/pages/FillForm.tsx @@ -106,6 +106,7 @@ export function FillForm({ ? undefined : withErrorHandler( async () => { + // FIXME: remove this one after https://bugs.gnunet.org/view.php?id=9715 is closed validatedForm.form_id = formId validatedForm[TalerFormAttributes.FORM_ID] = formId return lib.exchange.uploadKycForm(reqId, validatedForm);