commit d6a870e280272c1b9df8df8f0edf03bc508b7178
parent 5c9cf3efbcb5dd46861b7478e97ac9fe840709a0
Author: Sebastian <sebasjm@taler-systems.com>
Date: Thu, 5 Feb 2026 15:15:32 -0300
fix #10657
Diffstat:
2 files changed, 41 insertions(+), 21 deletions(-)
diff --git a/packages/merchant-backoffice-ui/src/components/modal/index.tsx b/packages/merchant-backoffice-ui/src/components/modal/index.tsx
@@ -670,7 +670,7 @@ export function Row({
);
}
-function CopyButton({ getContent }: { getContent: () => string }): VNode {
+export function CopyButton({ getContent }: { getContent: () => string }): VNode {
const [copied, setCopied] = useState(false);
function copyText(): void {
navigator.clipboard.writeText(getContent() || "");
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/update/UpdatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/update/UpdatePage.tsx
@@ -22,7 +22,6 @@
import {
AccessToken,
assertUnreachable,
- Duration,
HttpStatusCode,
TalerMerchantApi,
TalerMerchantInstanceHttpClient,
@@ -34,7 +33,7 @@ import {
useLocalNotificationBetter,
useTranslationContext,
} from "@gnu-taler/web-util/browser";
-import { VNode, h } from "preact";
+import { h, VNode } from "preact";
import { useState } from "preact/hooks";
import {
FormErrors,
@@ -42,13 +41,15 @@ import {
TalerForm,
} from "../../../components/form/FormProvider.js";
import { DefaultInstanceFormFields } from "../../../components/instance/DefaultInstanceFormFields.js";
+import { SolveMFAChallenges } from "../../../components/SolveMFA.js";
import { useSessionContext } from "../../../context/session.js";
import { undefinedIfEmpty } from "../../../utils/table.js";
-import { SolveMFAChallenges } from "../../../components/SolveMFA.js";
+import { CopyButton } from "../../../components/modal/index.js";
const TALER_SCREEN_ID = 75;
-export type Entity = TalerMerchantApi.InstanceReconfigurationMessage & TalerForm;
+export type Entity = TalerMerchantApi.InstanceReconfigurationMessage &
+ TalerForm;
export interface Props {
doUpdate: typeof TalerMerchantInstanceHttpClient.prototype.updateCurrentInstance;
@@ -68,12 +69,9 @@ function convert(from: TalerMerchantApi.QueryInstancesResponse): Entity {
const defaults: Partial<Entity> = {
use_stefan: false,
- default_pay_delay: (default_pay_delay),
- default_refund_delay:
- (default_refund_delay),
- default_wire_transfer_delay: (
- default_wire_transfer_delay
- ),
+ default_pay_delay: default_pay_delay,
+ default_refund_delay: default_refund_delay,
+ default_wire_transfer_delay: default_wire_transfer_delay,
};
return { ...defaults, ...rest } as Entity;
}
@@ -84,7 +82,7 @@ export function UpdatePage({
selected,
onBack,
}: Props): VNode {
- const { state, config} = useSessionContext();
+ const { state, config, lib } = useSessionContext();
const [value, valueHandler] = useState<Partial<Entity>>(convert(selected));
@@ -124,15 +122,13 @@ export function UpdatePage({
...rest
} = value as Required<Entity>;
const result: TalerMerchantApi.InstanceReconfigurationMessage = {
- default_pay_delay: !default_pay_delay
- ? undefined
- : (default_pay_delay),
+ default_pay_delay: !default_pay_delay ? undefined : default_pay_delay,
default_refund_delay: !default_refund_delay
? undefined
- : (default_refund_delay),
+ : default_refund_delay,
default_wire_transfer_delay: !default_wire_transfer_delay
? undefined
- : (default_wire_transfer_delay),
+ : default_wire_transfer_delay,
...rest,
};
const [notification, safeFunctionHandler] = useLocalNotificationBetter();
@@ -191,6 +187,19 @@ export function UpdatePage({
</div>
</div>
</div>
+ <div class="level">
+ <div class="level-left">
+ <div class="level-item">
+ <span class="is-size-6">
+ <i18n.Translate>URL</i18n.Translate>:{" "}
+ <b>{lib.instance.baseUrl}</b>
+ </span>
+ <div style={{ marginLeft: 10 }}>
+ <CopyButton getContent={() => lib.instance.baseUrl} />
+ </div>
+ </div>
+ </div>
+ </div>
</div>
</section>
@@ -204,15 +213,26 @@ export function UpdatePage({
object={value}
valueHandler={valueHandler}
>
- <DefaultInstanceFormFields showId={false}
+ <DefaultInstanceFormFields
+ showId={false}
setDefaultPayDelay={() => {
- valueHandler( v => ({...v, default_pay_delay: config.default_pay_delay}))
+ valueHandler((v) => ({
+ ...v,
+ default_pay_delay: config.default_pay_delay,
+ }));
}}
setDefaultRefundDelay={() => {
- valueHandler( v => ({...v, default_refund_delay: config.default_refund_delay}))
+ valueHandler((v) => ({
+ ...v,
+ default_refund_delay: config.default_refund_delay,
+ }));
}}
setDefaultWireDelay={() => {
- valueHandler( v => ({...v, default_wire_transfer_delay: config.default_wire_transfer_delay}))
+ valueHandler((v) => ({
+ ...v,
+ default_wire_transfer_delay:
+ config.default_wire_transfer_delay,
+ }));
}}
/>