gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]