[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-typescript-core] 04/04: fix #9520
From: |
Admin |
Subject: |
[taler-typescript-core] 04/04: fix #9520 |
Date: |
Tue, 11 Feb 2025 16:45:21 +0100 |
This is an automated email from the git hooks/post-receive script.
sebasjm pushed a commit to branch master
in repository taler-typescript-core.
commit f040aa1126775f462cea46369386e01efef3459d
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Tue Feb 11 12:45:09 2025 -0300
fix #9520
---
.../paths/instance/orders/create/CreatePage.tsx | 68 +++++++++++++++++-----
1 file changed, 55 insertions(+), 13 deletions(-)
diff --git
a/packages/merchant-backoffice-ui/src/paths/instance/orders/create/CreatePage.tsx
b/packages/merchant-backoffice-ui/src/paths/instance/orders/create/CreatePage.tsx
index 149a0cd5c..3f237eb2b 100644
---
a/packages/merchant-backoffice-ui/src/paths/instance/orders/create/CreatePage.tsx
+++
b/packages/merchant-backoffice-ui/src/paths/instance/orders/create/CreatePage.tsx
@@ -26,6 +26,8 @@ import {
Duration,
TalerMerchantApi,
TalerProtocolDuration,
+ codecForURL,
+ getURLHostnamePortPath,
} from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { format, isFuture } from "date-fns";
@@ -113,7 +115,8 @@ interface Pricing extends TalerForm {
interface Shipping extends TalerForm {
delivery_date?: Date;
delivery_location?: TalerMerchantApi.Location;
- fullfilment_url?: string;
+ fulfillment_url?: string;
+ fulfillment_message?: string;
}
interface Payments extends TalerForm {
refund_deadline: Duration;
@@ -133,6 +136,15 @@ interface Entity extends TalerForm {
extra: Record<string, string>;
}
+function isInvalidUrl(url: string) {
+ try {
+ const asd = new URL("./", url);
+ return false;
+ } catch (e) {
+ return true;
+ }
+}
+
export function CreatePage({
onCreate,
onBack,
@@ -209,6 +221,19 @@ export function CreatePage({
: !isFuture(value.shipping.delivery_date)
? i18n.str`Must be in the future`
: undefined,
+ fulfillment_message:
+ !!value.shipping?.fulfillment_message &&
+ !!value.shipping?.fulfillment_url
+ ? i18n.str`Either fulfillment url or fulfillment message must be
specified.`
+ : undefined,
+ fulfillment_url:
+ !!value.shipping?.fulfillment_message &&
+ !!value.shipping?.fulfillment_url
+ ? i18n.str`Either fulfillment url or fulfillment message must be
specified.`
+ : !!value.shipping?.fulfillment_url &&
+ isInvalidUrl(value.shipping.fulfillment_url)
+ ? i18n.str`is not a valid URL`
+ : undefined,
}),
});
const hasErrors = errors !== undefined;
@@ -255,7 +280,8 @@ export function CreatePage({
? { t_s: value.shipping.delivery_date.getTime() / 1000 }
: undefined,
delivery_location: value.shipping.delivery_location,
- fulfillment_url: value.shipping.fullfilment_url,
+ fulfillment_url: value.shipping.fulfillment_url,
+ fulfillment_message: value.shipping.fulfillment_message,
minimum_age: value.payments.minimum_age,
},
inventory_products: inventoryList.map((p) => ({
@@ -491,7 +517,7 @@ export function CreatePage({
tooltip={i18n.str`Title of the order to be shown to the
customer`}
/>
- {(pref.advanceOrderMode|| errors?.shipping) && (
+ {(pref.advanceOrderMode || errors?.shipping) && (
<InputGroup
name="shipping"
label={i18n.str`Shipping and fulfillment`}
@@ -512,20 +538,29 @@ export function CreatePage({
</InputGroup>
)}
<Input
- name="shipping.fullfilment_url"
+ name="shipping.fulfillment_url"
label={i18n.str`Fulfillment URL`}
tooltip={i18n.str`URL to which the user will be redirected
after successful payment.`}
/>
+ <Input
+ name="shipping.fulfillment_message"
+ label={i18n.str`Fulfillment message`}
+ tooltip={i18n.str`Message shown to the customer after
paying for the order.`}
+ />
</InputGroup>
)}
- {(pref.advanceOrderMode || requiresSomeTalerOptions ||
errors?.payments) && (
+ {(pref.advanceOrderMode ||
+ requiresSomeTalerOptions ||
+ errors?.payments) && (
<InputGroup
name="payments"
label={i18n.str`Taler payment options`}
tooltip={i18n.str`Override default Taler payment settings
for this order`}
>
- {(pref.advanceOrderMode || noDefault_payDeadline ||
errors?.payments?.pay_deadline !== undefined) && (
+ {(pref.advanceOrderMode ||
+ noDefault_payDeadline ||
+ errors?.payments?.pay_deadline !== undefined) && (
<InputDuration
name="payments.pay_deadline"
label={i18n.str`Payment time`}
@@ -557,7 +592,8 @@ export function CreatePage({
}
/>
)}
- {(pref.advanceOrderMode || errors?.payments?.refund_deadline
!== undefined) && (
+ {(pref.advanceOrderMode ||
+ errors?.payments?.refund_deadline !== undefined) && (
<InputDuration
name="payments.refund_deadline"
label={i18n.str`Refund time`}
@@ -590,7 +626,9 @@ export function CreatePage({
}
/>
)}
- {(pref.advanceOrderMode || noDefault_wireDeadline ||
errors?.payments?.wire_transfer_deadline !== undefined) && (
+ {(pref.advanceOrderMode ||
+ noDefault_wireDeadline ||
+ errors?.payments?.wire_transfer_deadline !== undefined) &&
(
<InputDuration
name="payments.wire_transfer_deadline"
label={i18n.str`Wire transfer time`}
@@ -624,7 +662,8 @@ export function CreatePage({
}
/>
)}
- {(pref.advanceOrderMode ||
errors?.payments?.auto_refund_deadline !== undefined) && (
+ {(pref.advanceOrderMode ||
+ errors?.payments?.auto_refund_deadline !== undefined) && (
<InputDuration
name="payments.auto_refund_deadline"
label={i18n.str`Auto-refund time`}
@@ -638,21 +677,24 @@ export function CreatePage({
/>
)}
- {(pref.advanceOrderMode || errors?.payments?.max_fee !==
undefined) && (
+ {(pref.advanceOrderMode ||
+ errors?.payments?.max_fee !== undefined) && (
<InputCurrency
name="payments.max_fee"
label={i18n.str`Maximum fee`}
tooltip={i18n.str`Maximum fees the merchant is willing
to cover for this order. Higher deposit fees must be covered in full by the
consumer.`}
/>
)}
- {(pref.advanceOrderMode|| errors?.payments?.createToken !==
undefined) && (
+ {(pref.advanceOrderMode ||
+ errors?.payments?.createToken !== undefined) && (
<InputToggle
name="payments.createToken"
label={i18n.str`Create token`}
tooltip={i18n.str`If the order ID is easy to guess the
token will prevent users to steal orders from others.`}
/>
)}
- {(pref.advanceOrderMode|| errors?.payments?.minimum_age !==
undefined) && (
+ {(pref.advanceOrderMode ||
+ errors?.payments?.minimum_age !== undefined) && (
<InputNumber
name="payments.minimum_age"
label={i18n.str`Minimum age required`}
@@ -667,7 +709,7 @@ export function CreatePage({
</InputGroup>
)}
- {(pref.advanceOrderMode|| errors?.extra !== undefined) && (
+ {(pref.advanceOrderMode || errors?.extra !== undefined) && (
<InputGroup
name="extra"
label={i18n.str`Additional information`}
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.