commit 6ddeb1733f58c7a7dc971f53c7602a55abc9f60a
parent a23dbdfff4d5ee6c94c52e77d5dcddab1645f048
Author: Sebastian <sebasjm@gmail.com>
Date: Wed, 9 Apr 2025 12:25:39 -0300
fix #9495
Diffstat:
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);