/* This file is part of GNU Taler (C) 2021-2024 Taler Systems S.A. GNU Taler is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Taler; see the file COPYING. If not, see */ /** * * @author Sebastian Javier Marchano (sebasjm) */ import { useTranslationContext } from "@gnu-taler/web-util/browser"; import { Fragment, h, VNode } from "preact"; import { useState } from "preact/hooks"; import { AsyncButton } from "../../../../components/exception/AsyncButton.js"; import { FormErrors, FormProvider, } from "../../../../components/form/FormProvider.js"; import { Input } from "../../../../components/form/Input.js"; import { InputSelector } from "../../../../components/form/InputSelector.js"; import { TalerMerchantApi } from "@gnu-taler/taler-util"; type Entity = TalerMerchantApi.WebhookAddDetails; interface Props { onCreate: (d: Entity) => Promise; onBack?: () => void; } const validMethod = ["GET", "POST", "PUT", "PATCH", "HEAD"]; export function CreatePage({ onCreate, onBack }: Props): VNode { const { i18n } = useTranslationContext(); const [state, setState] = useState>({}); const errors: FormErrors = { webhook_id: !state.webhook_id ? i18n.str`required` : undefined, event_type: !state.event_type ? i18n.str`required` : state.event_type !== "pay" && state.event_type !== "refund" ? i18n.str`it should be "pay" or "refund"` : undefined, http_method: !state.http_method ? i18n.str`required` : !validMethod.includes(state.http_method) ? i18n.str`should be one of '${validMethod.join(", ")}'` : undefined, url: !state.url ? i18n.str`required` : undefined, }; const hasErrors = Object.keys(errors).some( (k) => (errors as any)[k] !== undefined, ); const submitForm = () => { if (hasErrors) return Promise.reject(); return onCreate(state as any); }; return (
name="webhook_id" label={i18n.str`ID`} tooltip={i18n.str`Webhook ID to use`} /> name="url" label={i18n.str`URL`} tooltip={i18n.str`URL of the webhook where the customer will be redirected`} />

The text below support mustache template engine. Any string between

{{
and
}}
will be replaced with replaced with the value of the corresponding variable.

For example

{{contract_terms.amount}}
will be replaced with the the order's price

The short list of variables are:

{/* name="header_template" label={i18n.str`Http header`} inputType="multiline" tooltip={i18n.str`Header template of the webhook`} /> */} name="body_template" inputType="multiline" label={i18n.str`Http body`} tooltip={i18n.str`Body template by the webhook`} />
{onBack && ( )} Confirm
); }