summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2024-03-22 15:15:15 -0300
committerSebastian <sebasjm@gmail.com>2024-03-26 16:57:58 -0300
commit5181d060cf09ffc7250c9f1069920da0724e0284 (patch)
tree477312c567976c63caa101202bc525490727c096 /packages
parente2bfbced7ab027c901913e83ff7dd82240661990 (diff)
downloadwallet-core-5181d060cf09ffc7250c9f1069920da0724e0284.tar.gz
wallet-core-5181d060cf09ffc7250c9f1069920da0724e0284.tar.bz2
wallet-core-5181d060cf09ffc7250c9f1069920da0724e0284.zip
wip, doesn't compile. now merchant doesn't have it's own definition of types... it uses the one defined by taler-util
Diffstat (limited to 'packages')
-rw-r--r--packages/merchant-backoffice-ui/src/Routing.tsx11
-rw-r--r--packages/merchant-backoffice-ui/src/components/form/InputCurrency.tsx4
-rw-r--r--packages/merchant-backoffice-ui/src/components/form/InputPaytoForm.tsx4
-rw-r--r--packages/merchant-backoffice-ui/src/components/form/InputStock.tsx6
-rw-r--r--packages/merchant-backoffice-ui/src/components/form/InputTaxes.tsx4
-rw-r--r--packages/merchant-backoffice-ui/src/components/product/InventoryProductForm.tsx8
-rw-r--r--packages/merchant-backoffice-ui/src/components/product/NonInventoryProductForm.tsx14
-rw-r--r--packages/merchant-backoffice-ui/src/components/product/ProductForm.tsx13
-rw-r--r--packages/merchant-backoffice-ui/src/components/product/ProductList.tsx9
-rw-r--r--packages/merchant-backoffice-ui/src/context/instance.ts1
-rw-r--r--packages/merchant-backoffice-ui/src/declaration.d.ts26
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/backend.ts115
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/bank.ts32
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/instance.test.ts100
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/instance.ts51
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/merchant.ts32
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/order.test.ts21
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/order.ts56
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/otp.ts45
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/product.test.ts44
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/product.ts34
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/reserve.test.ts207
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/reserves.ts94
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/templates.ts48
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/transfer.test.ts10
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/transfer.ts26
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/urls.ts120
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/webhooks.ts31
-rw-r--r--packages/merchant-backoffice-ui/src/paths/admin/create/CreatePage.tsx11
-rw-r--r--packages/merchant-backoffice-ui/src/paths/admin/create/index.tsx10
-rw-r--r--packages/merchant-backoffice-ui/src/paths/admin/list/TableActive.tsx18
-rw-r--r--packages/merchant-backoffice-ui/src/paths/admin/list/View.tsx8
-rw-r--r--packages/merchant-backoffice-ui/src/paths/admin/list/index.tsx13
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/accounts/create/CreatePage.tsx8
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/accounts/create/index.tsx6
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/accounts/list/ListPage.tsx11
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/accounts/list/Table.tsx10
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/accounts/list/index.tsx10
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/accounts/update/UpdatePage.tsx14
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/accounts/update/index.tsx7
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/details/DetailPage.tsx8
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/details/index.tsx5
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/details/stories.tsx2
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/kyc/list/ListPage.stories.tsx13
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/kyc/list/ListPage.tsx8
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/kyc/list/index.tsx5
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/orders/create/CreatePage.tsx75
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/orders/create/index.tsx13
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/orders/details/Detail.stories.tsx33
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/orders/details/DetailPage.tsx75
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/orders/details/index.tsx11
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/orders/list/List.stories.tsx11
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/orders/list/ListPage.tsx12
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/orders/list/Table.tsx13
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/orders/list/index.tsx15
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/otp_devices/create/CreatePage.tsx6
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/otp_devices/create/CreatedSuccessfully.tsx4
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/otp_devices/create/index.tsx11
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/otp_devices/list/ListPage.tsx11
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/otp_devices/list/Table.tsx9
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/otp_devices/list/index.tsx7
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/otp_devices/update/UpdatePage.tsx5
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/otp_devices/update/index.tsx17
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/products/create/CreatePage.tsx4
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/products/create/index.tsx6
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/products/list/List.stories.tsx5
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/products/list/Table.tsx19
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/products/list/index.tsx15
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/products/update/Update.stories.tsx7
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/products/update/UpdatePage.tsx4
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/products/update/index.tsx9
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/templates/create/CreatePage.tsx6
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/templates/create/index.tsx6
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/templates/list/ListPage.tsx15
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/templates/list/Table.tsx9
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/templates/list/index.tsx15
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/templates/qr/QrPage.tsx7
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/templates/qr/index.tsx15
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/templates/update/UpdatePage.tsx6
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/templates/update/index.tsx9
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/templates/use/UsePage.tsx6
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/templates/use/index.tsx11
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx7
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/transfers/create/CreatePage.tsx6
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/transfers/create/index.tsx9
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/transfers/list/List.stories.tsx15
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/transfers/list/ListPage.tsx4
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/transfers/list/Table.tsx9
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/transfers/list/index.tsx10
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/update/Update.stories.tsx4
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/update/UpdatePage.tsx19
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/update/index.tsx13
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/webhooks/create/CreatePage.tsx4
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/webhooks/create/index.tsx6
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/webhooks/list/ListPage.tsx8
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/webhooks/list/Table.tsx9
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/webhooks/list/index.tsx7
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/webhooks/update/UpdatePage.tsx4
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/webhooks/update/index.tsx7
-rw-r--r--packages/merchant-backoffice-ui/src/paths/login/index.tsx7
-rw-r--r--packages/merchant-backoffice-ui/src/schemas/index.ts4
-rw-r--r--packages/merchant-backoffice-ui/src/utils/amount.ts8
-rw-r--r--packages/merchant-backoffice-ui/src/utils/table.ts1
-rw-r--r--packages/merchant-backoffice-ui/src/utils/types.ts2
-rw-r--r--packages/taler-util/src/http-client/merchant.ts246
-rw-r--r--packages/taler-util/src/http-client/types.ts6
106 files changed, 935 insertions, 1315 deletions
diff --git a/packages/merchant-backoffice-ui/src/Routing.tsx b/packages/merchant-backoffice-ui/src/Routing.tsx
index 4ed5850e7..c30b1912a 100644
--- a/packages/merchant-backoffice-ui/src/Routing.tsx
+++ b/packages/merchant-backoffice-ui/src/Routing.tsx
@@ -19,7 +19,7 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { AbsoluteTime, TranslatedString } from "@gnu-taler/taler-util";
+import { AbsoluteTime, TalerErrorDetail, TranslatedString } from "@gnu-taler/taler-util";
import {
ErrorType,
HttpError,
@@ -35,7 +35,6 @@ import {
NotConnectedAppMenu,
NotificationCard,
} from "./components/menu/index.js";
-import { MerchantBackend } from "./declaration.js";
import { useInstanceBankAccounts } from "./hooks/bank.js";
import { useInstanceKYCDetails } from "./hooks/instance.js";
import { usePreference } from "./hooks/preference.js";
@@ -164,7 +163,7 @@ export function Routing(_p: Props): VNode {
function ServerErrorRedirectTo(to: InstancePaths | AdminPaths) {
return function ServerErrorRedirectToImpl(
- error: HttpError<MerchantBackend.ErrorDetail>,
+ error: HttpError<TalerErrorDetail>,
) {
if (error.type === ErrorType.TIMEOUT) {
setGlobalNotification({
@@ -179,7 +178,7 @@ export function Routing(_p: Props): VNode {
description: i18n.str`Diagnostic from ${error.info.url} is '${error.message}'`,
details:
error.type === ErrorType.CLIENT || error.type === ErrorType.SERVER
- ? error.payload.detail
+ ? error.payload.hint
: undefined,
type: "ERROR",
to,
@@ -679,7 +678,7 @@ function AdminInstanceUpdatePage({
<InstanceAdminUpdatePage
{...rest}
instanceId={id}
- onLoadError={(error: HttpError<MerchantBackend.ErrorDetail>) => {
+ onLoadError={(error: HttpError<TalerErrorDetail>) => {
const notif =
error.type === ErrorType.TIMEOUT
? {
@@ -693,7 +692,7 @@ function AdminInstanceUpdatePage({
details:
error.type === ErrorType.CLIENT ||
error.type === ErrorType.SERVER
- ? error.payload.detail
+ ? error.payload.hint
: undefined,
type: "ERROR" as const,
};
diff --git a/packages/merchant-backoffice-ui/src/components/form/InputCurrency.tsx b/packages/merchant-backoffice-ui/src/components/form/InputCurrency.tsx
index f60508504..76d38db84 100644
--- a/packages/merchant-backoffice-ui/src/components/form/InputCurrency.tsx
+++ b/packages/merchant-backoffice-ui/src/components/form/InputCurrency.tsx
@@ -20,9 +20,9 @@
*/
import { useMerchantApiContext } from "@gnu-taler/web-util/browser";
import { ComponentChildren, h, VNode } from "preact";
-import { Amount } from "../../declaration.js";
import { InputWithAddon } from "./InputWithAddon.js";
import { InputProps } from "./useField.js";
+import { AmountString } from "@gnu-taler/taler-util";
export interface Props<T> extends InputProps<T> {
expand?: boolean;
@@ -57,7 +57,7 @@ export function InputCurrency<T>({
addonAfter={addonAfter}
inputType="number"
expand={expand}
- toStr={(v?: Amount) => v?.split(":")[1] || ""}
+ toStr={(v?: AmountString) => v?.split(":")[1] || ""}
fromStr={(v: string) => (!v ? undefined : `${config.currency}:${v}`)}
inputExtra={{ min: 0 }}
>
diff --git a/packages/merchant-backoffice-ui/src/components/form/InputPaytoForm.tsx b/packages/merchant-backoffice-ui/src/components/form/InputPaytoForm.tsx
index 7eba8b0b5..3337e5f57 100644
--- a/packages/merchant-backoffice-ui/src/components/form/InputPaytoForm.tsx
+++ b/packages/merchant-backoffice-ui/src/components/form/InputPaytoForm.tsx
@@ -233,11 +233,11 @@ export function InputPaytoForm<T>({
}, [str])
// const submit = useCallback((): void => {
- // // const accounts: MerchantBackend.BankAccounts.AccountAddDetails[] = paytos;
+ // // const accounts: TalerMerchantApi.AccountAddDetails[] = paytos;
// // const alreadyExists =
// // accounts.findIndex((x) => x.payto_uri === paytoURL) !== -1;
// // if (!alreadyExists) {
- // const newValue: MerchantBackend.BankAccounts.AccountAddDetails = {
+ // const newValue: TalerMerchantApi.AccountAddDetails = {
// payto_uri: paytoURL,
// };
// if (value.auth) {
diff --git a/packages/merchant-backoffice-ui/src/components/form/InputStock.tsx b/packages/merchant-backoffice-ui/src/components/form/InputStock.tsx
index 5c98f7311..e47259732 100644
--- a/packages/merchant-backoffice-ui/src/components/form/InputStock.tsx
+++ b/packages/merchant-backoffice-ui/src/components/form/InputStock.tsx
@@ -18,16 +18,16 @@
*
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { useTranslationContext } from "@gnu-taler/web-util/browser";
+import { Location, useTranslationContext } from "@gnu-taler/web-util/browser";
import { Fragment, h } from "preact";
import { useLayoutEffect, useState } from "preact/hooks";
-import { MerchantBackend, Timestamp } from "../../declaration.js";
import { FormErrors, FormProvider } from "./FormProvider.js";
import { InputDate } from "./InputDate.js";
import { InputGroup } from "./InputGroup.js";
import { InputLocation } from "./InputLocation.js";
import { InputNumber } from "./InputNumber.js";
import { InputProps, useField } from "./useField.js";
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
export interface Props<T> extends InputProps<T> {
alreadyExist?: boolean;
@@ -39,7 +39,7 @@ export interface Stock {
current: number;
lost: number;
sold: number;
- address?: MerchantBackend.Location;
+ address?: TalerMerchantApi.Location;
nextRestock?: Timestamp;
}
diff --git a/packages/merchant-backoffice-ui/src/components/form/InputTaxes.tsx b/packages/merchant-backoffice-ui/src/components/form/InputTaxes.tsx
index 984b496e7..4392c7659 100644
--- a/packages/merchant-backoffice-ui/src/components/form/InputTaxes.tsx
+++ b/packages/merchant-backoffice-ui/src/components/form/InputTaxes.tsx
@@ -22,18 +22,18 @@ import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { h, VNode } from "preact";
import { useCallback, useState } from "preact/hooks";
import * as yup from "yup";
-import { MerchantBackend } from "../../declaration.js";
import { TaxSchema as schema } from "../../schemas/index.js";
import { FormErrors, FormProvider } from "./FormProvider.js";
import { Input } from "./Input.js";
import { InputGroup } from "./InputGroup.js";
import { InputProps, useField } from "./useField.js";
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
export interface Props<T> extends InputProps<T> {
isValid?: (e: any) => boolean;
}
-type Entity = MerchantBackend.Tax;
+type Entity = TalerMerchantApi.Tax;
export function InputTaxes<T>({
name,
readonly,
diff --git a/packages/merchant-backoffice-ui/src/components/product/InventoryProductForm.tsx b/packages/merchant-backoffice-ui/src/components/product/InventoryProductForm.tsx
index 25b1f0e2d..52ac2a1fe 100644
--- a/packages/merchant-backoffice-ui/src/components/product/InventoryProductForm.tsx
+++ b/packages/merchant-backoffice-ui/src/components/product/InventoryProductForm.tsx
@@ -16,24 +16,24 @@
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { h, VNode } from "preact";
import { useState } from "preact/hooks";
-import { MerchantBackend, WithId } from "../../declaration.js";
import { ProductMap } from "../../paths/instance/orders/create/CreatePage.js";
import { FormErrors, FormProvider } from "../form/FormProvider.js";
import { InputNumber } from "../form/InputNumber.js";
import { InputSearchOnList } from "../form/InputSearchOnList.js";
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
type Form = {
- product: MerchantBackend.Products.ProductDetail & WithId;
+ product: TalerMerchantApi.ProductDetail & WithId;
quantity: number;
};
interface Props {
currentProducts: ProductMap;
onAddProduct: (
- product: MerchantBackend.Products.ProductDetail & WithId,
+ product: TalerMerchantApi.ProductDetail & WithId,
quantity: number,
) => void;
- inventory: (MerchantBackend.Products.ProductDetail & WithId)[];
+ inventory: (TalerMerchantApi.ProductDetail & WithId)[];
}
export function InventoryProductForm({
diff --git a/packages/merchant-backoffice-ui/src/components/product/NonInventoryProductForm.tsx b/packages/merchant-backoffice-ui/src/components/product/NonInventoryProductForm.tsx
index 8ddd9fa95..a127999fc 100644
--- a/packages/merchant-backoffice-ui/src/components/product/NonInventoryProductForm.tsx
+++ b/packages/merchant-backoffice-ui/src/components/product/NonInventoryProductForm.tsx
@@ -13,11 +13,11 @@
You should have received a copy of the GNU General Public License along with
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
+import { AmountString, TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { Fragment, h, VNode } from "preact";
import { useCallback, useEffect, useState } from "preact/hooks";
import * as yup from "yup";
-import { MerchantBackend } from "../../declaration.js";
import { useListener } from "../../hooks/listener.js";
import { NonInventoryProductSchema as schema } from "../../schemas/index.js";
import { FormErrors, FormProvider } from "../form/FormProvider.js";
@@ -27,7 +27,7 @@ import { InputImage } from "../form/InputImage.js";
import { InputNumber } from "../form/InputNumber.js";
import { InputTaxes } from "../form/InputTaxes.js";
-type Entity = MerchantBackend.Product;
+type Entity = TalerMerchantApi.Product;
interface Props {
onAddProduct: (p: Entity) => Promise<void>;
@@ -46,7 +46,7 @@ export function NonInventoryProductFrom({
}, [isEditing]);
const [submitForm, addFormSubmitter] = useListener<
- Partial<MerchantBackend.Product> | undefined
+ Partial<TalerMerchantApi.Product> | undefined
>((result) => {
if (result) {
setShowCreateProduct(false);
@@ -55,7 +55,7 @@ export function NonInventoryProductFrom({
taxes: result.taxes || [],
description: result.description || "",
image: result.image || "",
- price: result.price || "",
+ price: (result.price || "") as AmountString,
unit: result.unit || "",
});
}
@@ -136,7 +136,7 @@ interface NonInventoryProduct {
unit: string;
price: string;
image: string;
- taxes: MerchantBackend.Tax[];
+ taxes: TalerMerchantApi.Tax[];
}
export function ProductForm({ onSubscribe, initial }: ProductProps): VNode {
@@ -144,7 +144,7 @@ export function ProductForm({ onSubscribe, initial }: ProductProps): VNode {
taxes: [],
...initial,
});
- let errors: FormErrors<Entity> = {};
+ let errors: FormErrors<NonInventoryProduct> = {};
try {
schema.validateSync(value, { abortEarly: false });
} catch (err) {
@@ -159,7 +159,7 @@ export function ProductForm({ onSubscribe, initial }: ProductProps): VNode {
}
const submit = useCallback((): Entity | undefined => {
- return value as MerchantBackend.Product;
+ return value as TalerMerchantApi.Product;
}, [value]);
const hasErrors = Object.keys(errors).some(
diff --git a/packages/merchant-backoffice-ui/src/components/product/ProductForm.tsx b/packages/merchant-backoffice-ui/src/components/product/ProductForm.tsx
index 11344cde3..468e5f635 100644
--- a/packages/merchant-backoffice-ui/src/components/product/ProductForm.tsx
+++ b/packages/merchant-backoffice-ui/src/components/product/ProductForm.tsx
@@ -20,13 +20,12 @@
*/
import {
- useMerchantApiContext,
- useTranslationContext,
+ useTranslationContext
} from "@gnu-taler/web-util/browser";
import { h } from "preact";
import { useCallback, useEffect, useState } from "preact/hooks";
import * as yup from "yup";
-import { MerchantBackend } from "../../declaration.js";
+import { useSessionContext } from "../../context/session.js";
import {
ProductCreateSchema as createSchema,
ProductUpdateSchema as updateSchema,
@@ -39,9 +38,9 @@ import { InputNumber } from "../form/InputNumber.js";
import { InputStock, Stock } from "../form/InputStock.js";
import { InputTaxes } from "../form/InputTaxes.js";
import { InputWithAddon } from "../form/InputWithAddon.js";
-import { useSessionContext } from "../../context/session.js";
+import { AmountString, TalerMerchantApi } from "@gnu-taler/taler-util";
-type Entity = MerchantBackend.Products.ProductDetail & { product_id: string };
+type Entity = TalerMerchantApi.ProductDetail & { product_id: string };
interface Props {
onSubscribe: (c?: () => Entity | undefined) => void;
@@ -55,7 +54,7 @@ export function ProductForm({ onSubscribe, initial, alreadyExist }: Props) {
description_i18n: {},
taxes: [],
next_restock: { t_s: "never" },
- price: ":0",
+ price: ":0" as AmountString,
...initial,
stock:
!initial || initial.total_stock === -1
@@ -108,7 +107,7 @@ export function ProductForm({ onSubscribe, initial, alreadyExist }: Props) {
delete value.minimum_age;
}
- return value as MerchantBackend.Products.ProductDetail & {
+ return value as TalerMerchantApi.ProductDetail & {
product_id: string;
};
}, [value]);
diff --git a/packages/merchant-backoffice-ui/src/components/product/ProductList.tsx b/packages/merchant-backoffice-ui/src/components/product/ProductList.tsx
index d89c5371b..4fff66fd7 100644
--- a/packages/merchant-backoffice-ui/src/components/product/ProductList.tsx
+++ b/packages/merchant-backoffice-ui/src/components/product/ProductList.tsx
@@ -13,18 +13,17 @@
You should have received a copy of the GNU General Public License along with
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { Amounts } from "@gnu-taler/taler-util";
+import { Amounts, TalerMerchantApi } from "@gnu-taler/taler-util";
import { h, VNode } from "preact";
import emptyImage from "../../assets/empty.png";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
-import { MerchantBackend } from "../../declaration.js";
interface Props {
- list: MerchantBackend.Product[];
+ list: TalerMerchantApi.Product[];
actions?: {
name: string;
tooltip: string;
- handler: (d: MerchantBackend.Product, index: number) => void;
+ handler: (d: TalerMerchantApi.Product, index: number) => void;
}[];
}
export function ProductList({ list, actions = [] }: Props): VNode {
@@ -60,7 +59,7 @@ export function ProductList({ list, actions = [] }: Props): VNode {
: Amounts.stringify(
Amounts.mult(
Amounts.parseOrThrow(entry.price),
- entry.quantity,
+ entry.quantity ?? 0
).amount,
);
diff --git a/packages/merchant-backoffice-ui/src/context/instance.ts b/packages/merchant-backoffice-ui/src/context/instance.ts
index f969a99d6..9b67f7170 100644
--- a/packages/merchant-backoffice-ui/src/context/instance.ts
+++ b/packages/merchant-backoffice-ui/src/context/instance.ts
@@ -21,7 +21,6 @@
import { createContext } from "preact";
import { useContext } from "preact/hooks";
-import { LoginToken } from "../declaration.js";
interface Type {
id: string;
diff --git a/packages/merchant-backoffice-ui/src/declaration.d.ts b/packages/merchant-backoffice-ui/src/declaration.d.ts
index e39257a79..93fecd9c4 100644
--- a/packages/merchant-backoffice-ui/src/declaration.d.ts
+++ b/packages/merchant-backoffice-ui/src/declaration.d.ts
@@ -28,7 +28,7 @@ type ImageDataUrl = string;
type MerchantUserType = "business" | "individual";
-export interface WithId {
+interface WithId {
id: string;
}
@@ -118,7 +118,7 @@ interface LoginToken {
// must forget after used
declare const __ac_token: unique symbol;
-export namespace ExchangeBackend {
+namespace dead_ExchangeBackend2 {
interface WireResponse {
// Master public key of the exchange, must match the key returned in /keys.
master_public_key: EddsaPublicKey;
@@ -153,7 +153,7 @@ export namespace ExchangeBackend {
sig: EddsaSignature;
}
}
-export namespace MerchantBackend {
+namespace dead_MerchantBackend2 {
interface ErrorDetail {
// Numeric error code unique to the condition.
// The other arguments are specific to the error value reported here.
@@ -344,7 +344,7 @@ export namespace MerchantBackend {
// Free-form address lines, should not exceed 7 elements.
address_lines?: string[];
}
- namespace Instances {
+ namespace dead_Instances2 {
//POST /private/instances/$INSTANCE/auth
interface InstanceAuthConfigurationMessage {
// Type of authentication.
@@ -570,7 +570,7 @@ export namespace MerchantBackend {
}
}
- namespace KYC {
+ namespace dead_KYC {
//GET /private/instances/$INSTANCE/kyc
interface AccountKycRedirects {
// Array of pending KYCs.
@@ -612,7 +612,7 @@ export namespace MerchantBackend {
}
- namespace BankAccounts {
+ namespace dead_BankAccounts {
interface AccountAddDetails {
@@ -706,7 +706,7 @@ export namespace MerchantBackend {
}
- namespace Products {
+ namespace dead_Products {
// POST /private/products
interface ProductAddDetail {
// product ID to use.
@@ -865,7 +865,7 @@ export namespace MerchantBackend {
// DELETE /private/products/$PRODUCT_ID
}
- namespace Orders {
+ namespace dead_Orders {
type MerchantOrderStatusResponse =
| CheckPaymentPaidResponse
| CheckPaymentClaimedResponse
@@ -1147,7 +1147,7 @@ export namespace MerchantBackend {
}
}
- namespace Rewards {
+ namespace dead_Rewards {
// GET /private/reserves
interface RewardReserveStatus {
// Array of all known reserves (possibly empty!)
@@ -1303,7 +1303,7 @@ export namespace MerchantBackend {
}
}
- namespace Transfers {
+ namespace dead_Transfers {
interface TransferList {
// list of all the transfers that fit the filter that we know
transfers: TransferDetails[];
@@ -1355,7 +1355,7 @@ export namespace MerchantBackend {
}
}
- namespace OTP {
+ namespace dead_OTP {
interface OtpDeviceAddDetails {
// Device ID to use.
otp_device_id: string;
@@ -1412,7 +1412,7 @@ export namespace MerchantBackend {
}
- namespace Template {
+ namespace dead_Template {
interface TemplateAddDetails {
// Template ID to use.
template_id: string;
@@ -1494,7 +1494,7 @@ export namespace MerchantBackend {
}
}
- namespace Webhooks {
+ namespace dead_Webhooks {
type MerchantWebhookType = "pay" | "refund";
interface WebhookAddDetails {
// Webhook ID to use.
diff --git a/packages/merchant-backoffice-ui/src/hooks/backend.ts b/packages/merchant-backoffice-ui/src/hooks/backend.ts
index 37dfd8fd6..8eb9b4cf2 100644
--- a/packages/merchant-backoffice-ui/src/hooks/backend.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/backend.ts
@@ -20,24 +20,21 @@
*/
import {
- AbsoluteTime,
- AccessToken,
- HttpStatusCode,
+ TalerErrorDetail,
+ TalerMerchantApi
} from "@gnu-taler/taler-util";
import {
EmptyObject,
- ErrorType,
HttpError,
HttpResponse,
HttpResponseOk,
RequestError,
RequestOptions,
- useApiContext,
+ useApiContext
} from "@gnu-taler/web-util/browser";
import { useCallback, useEffect, useState } from "preact/hooks";
import { useSWRConfig } from "swr";
import { useSessionContext } from "../context/session.js";
-import { LoginToken, MerchantBackend, Timestamp } from "../declaration.js";
export function useMatchMutate(): (
re?: RegExp,
@@ -72,21 +69,21 @@ export function useMatchMutate(): (
}
export function useBackendInstancesTestForAdmin(): HttpResponse<
- MerchantBackend.Instances.InstancesResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.InstancesResponse,
+ TalerErrorDetail
> {
const { request } = useBackendBaseRequest();
- type Type = MerchantBackend.Instances.InstancesResponse;
+ type Type = TalerMerchantApi.InstancesResponse;
const [result, setResult] = useState<
- HttpResponse<Type, MerchantBackend.ErrorDetail>
+ HttpResponse<Type, TalerErrorDetail>
>({ loading: true });
useEffect(() => {
request<Type>(`/management/instances`)
.then((data) => setResult(data))
- .catch((error: RequestError<MerchantBackend.ErrorDetail>) =>
+ .catch((error: RequestError<TalerErrorDetail>) =>
setResult(error.cause),
);
}, [request]);
@@ -98,14 +95,14 @@ const CHECK_CONFIG_INTERVAL_OK = 5 * 60 * 1000;
const CHECK_CONFIG_INTERVAL_FAIL = 2 * 1000;
export function useBackendConfig(): HttpResponse<
- MerchantBackend.VersionResponse | undefined,
- RequestError<MerchantBackend.ErrorDetail>
+ TalerMerchantApi.VersionResponse | undefined,
+ RequestError<TalerErrorDetail>
> {
const { request } = useBackendBaseRequest();
- type Type = MerchantBackend.VersionResponse;
+ type Type = TalerMerchantApi.VersionResponse;
type State = {
- data: HttpResponse<Type, RequestError<MerchantBackend.ErrorDetail>>;
+ data: HttpResponse<Type, RequestError<TalerErrorDetail>>;
timer: number;
};
const [result, setResult] = useState<State>({
@@ -191,94 +188,6 @@ type LoginResult =
cause: HttpError<EmptyObject>;
};
-export function useCredentialsChecker() {
- const { request } = useApiContext();
- //check against instance details endpoint
- //while merchant backend doesn't have a login endpoint
- async function requestNewLoginToken(
- baseUrl: string,
- token: AccessToken,
- ): Promise<LoginResult> {
- const data: MerchantBackend.Instances.LoginTokenRequest = {
- scope: "write",
- duration: {
- d_us: "forever",
- },
- refreshable: true,
- };
- try {
- const response =
- await request<MerchantBackend.Instances.LoginTokenSuccessResponse>(
- baseUrl,
- `/private/token`,
- {
- method: "POST",
- token,
- data,
- },
- );
- return {
- valid: true,
- token: response.data.token,
- expiration: response.data.expiration,
- };
- } catch (error) {
- if (error instanceof RequestError) {
- return { valid: false, cause: error.cause };
- }
-
- return {
- valid: false,
- cause: {
- type: ErrorType.UNEXPECTED,
- loading: false,
- info: {
- hasToken: true,
- status: 0,
- options: {},
- url: `/private/token`,
- payload: {},
- },
- exception: error,
- message:
- error instanceof Error ? error.message : "unpexepected error",
- },
- };
- }
- }
-
- async function refreshLoginToken(
- baseUrl: string,
- token: LoginToken,
- ): Promise<LoginResult> {
- if (
- AbsoluteTime.isExpired(
- AbsoluteTime.fromProtocolTimestamp(token.expiration),
- )
- ) {
- return {
- valid: false,
- cause: {
- type: ErrorType.CLIENT,
- status: HttpStatusCode.Unauthorized,
- message: "login token expired, login again.",
- info: {
- hasToken: true,
- status: 401,
- options: {},
- url: `/private/token`,
- payload: {},
- },
- payload: {},
- },
- };
- }
-
- return requestNewLoginToken(baseUrl, token.token as AccessToken);
- }
- return { requestNewLoginToken, refreshLoginToken };
-}
-
/**
*
* @param root the request is intended to the base URL and no the instance URL
diff --git a/packages/merchant-backoffice-ui/src/hooks/bank.ts b/packages/merchant-backoffice-ui/src/hooks/bank.ts
index d01b579b9..3cf9c7846 100644
--- a/packages/merchant-backoffice-ui/src/hooks/bank.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/bank.ts
@@ -20,15 +20,15 @@ import {
RequestError,
} from "@gnu-taler/web-util/browser";
import { useEffect, useState } from "preact/hooks";
-import { MerchantBackend } from "../declaration.js";
import { MAX_RESULT_SIZE, PAGE_SIZE } from "../utils/constants.js";
import { useBackendInstanceRequest, useMatchMutate } from "./backend.js";
// FIX default import https://github.com/microsoft/TypeScript/issues/49189
import _useSWR, { SWRHook, mutate } from "swr";
+import { TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
const useSWR = _useSWR as unknown as SWRHook;
-// const MOCKED_ACCOUNTS: Record<string, MerchantBackend.BankAccounts.AccountAddDetails> = {
+// const MOCKED_ACCOUNTS: Record<string, TalerMerchantApi.AccountAddDetails> = {
// "hwire1": {
// h_wire: "hwire1",
// payto_uri: "payto://fake/iban/123",
@@ -46,7 +46,7 @@ export function useBankAccountAPI(): BankAccountAPI {
const { request } = useBackendInstanceRequest();
const createBankAccount = async (
- data: MerchantBackend.BankAccounts.AccountAddDetails,
+ data: TalerMerchantApi.AccountAddDetails,
): Promise<HttpResponseOk<void>> => {
// MOCKED_ACCOUNTS[data.h_wire] = data
// return Promise.resolve({ ok: true, data: undefined });
@@ -60,7 +60,7 @@ export function useBankAccountAPI(): BankAccountAPI {
const updateBankAccount = async (
h_wire: string,
- data: MerchantBackend.BankAccounts.AccountPatchDetails,
+ data: TalerMerchantApi.AccountPatchDetails,
): Promise<HttpResponseOk<void>> => {
// MOCKED_ACCOUNTS[h_wire].credit_facade_credentials = data.credit_facade_credentials
// MOCKED_ACCOUNTS[h_wire].credit_facade_url = data.credit_facade_url
@@ -94,11 +94,11 @@ export function useBankAccountAPI(): BankAccountAPI {
export interface BankAccountAPI {
createBankAccount: (
- data: MerchantBackend.BankAccounts.AccountAddDetails,
+ data: TalerMerchantApi.AccountAddDetails,
) => Promise<HttpResponseOk<void>>;
updateBankAccount: (
id: string,
- data: MerchantBackend.BankAccounts.AccountPatchDetails,
+ data: TalerMerchantApi.AccountPatchDetails,
) => Promise<HttpResponseOk<void>>;
deleteBankAccount: (id: string) => Promise<HttpResponseOk<void>>;
}
@@ -114,8 +114,8 @@ export function useInstanceBankAccounts(
args?: InstanceBankAccountFilter,
updatePosition?: (id: string) => void,
): HttpResponsePaginated<
- MerchantBackend.BankAccounts.AccountsSummaryResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.AccountsSummaryResponse,
+ TalerErrorDetail
> {
const { fetcher } = useBackendInstanceRequest();
@@ -128,14 +128,14 @@ export function useInstanceBankAccounts(
error: afterError,
isValidating: loadingAfter,
} = useSWR<
- HttpResponseOk<MerchantBackend.BankAccounts.AccountsSummaryResponse>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.AccountsSummaryResponse>,
+ RequestError<TalerErrorDetail>
>([`/private/accounts`], fetcher);
const [lastAfter, setLastAfter] = useState<
HttpResponse<
- MerchantBackend.BankAccounts.AccountsSummaryResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.AccountsSummaryResponse,
+ TalerErrorDetail
>
>({ loading: true });
useEffect(() => {
@@ -179,8 +179,8 @@ export function useInstanceBankAccounts(
export function useBankAccountDetails(
h_wire: string,
): HttpResponse<
- MerchantBackend.BankAccounts.BankAccountEntry,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.BankAccountEntry,
+ TalerErrorDetail
> {
// return {
// ok: true,
@@ -192,8 +192,8 @@ export function useBankAccountDetails(
const { fetcher } = useBackendInstanceRequest();
const { data, error, isValidating } = useSWR<
- HttpResponseOk<MerchantBackend.BankAccounts.BankAccountEntry>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.BankAccountEntry>,
+ RequestError<TalerErrorDetail>
>([`/private/accounts/${h_wire}`], fetcher, {
refreshInterval: 0,
refreshWhenHidden: false,
diff --git a/packages/merchant-backoffice-ui/src/hooks/instance.test.ts b/packages/merchant-backoffice-ui/src/hooks/instance.test.ts
index a1bb3d5d4..f73f07d68 100644
--- a/packages/merchant-backoffice-ui/src/hooks/instance.test.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/instance.test.ts
@@ -19,9 +19,9 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { AccessToken, TalerMerchantApi } from "@gnu-taler/taler-util";
import * as tests from "@gnu-taler/web-util/testing";
import { expect } from "chai";
-import { MerchantBackend } from "../declaration.js";
import {
useAdminAPI,
useBackendInstances,
@@ -35,12 +35,10 @@ import {
API_DELETE_INSTANCE,
API_GET_CURRENT_INSTANCE,
API_LIST_INSTANCES,
- API_NEW_LOGIN,
API_UPDATE_CURRENT_INSTANCE,
API_UPDATE_CURRENT_INSTANCE_AUTH,
API_UPDATE_INSTANCE_BY_ID,
} from "./urls.js";
-import { AccessToken } from "@gnu-taler/taler-util";
describe("instance api interaction with details", () => {
it("should evict cache when updating an instance", async () => {
@@ -49,7 +47,7 @@ describe("instance api interaction with details", () => {
env.addRequestExpectation(API_GET_CURRENT_INSTANCE, {
response: {
name: "instance_name",
- } as MerchantBackend.Instances.QueryInstancesResponse,
+ } as TalerMerchantApi.QueryInstancesResponse,
});
const hookBehavior = await tests.hookBehaveLikeThis(
@@ -77,16 +75,16 @@ describe("instance api interaction with details", () => {
env.addRequestExpectation(API_UPDATE_CURRENT_INSTANCE, {
request: {
name: "other_name",
- } as MerchantBackend.Instances.InstanceReconfigurationMessage,
+ } as TalerMerchantApi.InstanceReconfigurationMessage,
});
env.addRequestExpectation(API_GET_CURRENT_INSTANCE, {
response: {
name: "other_name",
- } as MerchantBackend.Instances.QueryInstancesResponse,
+ } as TalerMerchantApi.QueryInstancesResponse,
});
api.updateInstance({
name: "other_name",
- } as MerchantBackend.Instances.InstanceReconfigurationMessage);
+ } as TalerMerchantApi.InstanceReconfigurationMessage);
},
({ query, api }) => {
expect(env.assertJustExpectedRequestWereMade()).deep.eq({
@@ -110,15 +108,15 @@ describe("instance api interaction with details", () => {
it("should evict cache when setting the instance's token", async () => {
const env = new ApiMockEnvironment();
- env.addRequestExpectation(API_GET_CURRENT_INSTANCE, {
- response: {
- name: "instance_name",
- auth: {
- method: "token",
- // token: "not-secret",
- },
- } as MerchantBackend.Instances.QueryInstancesResponse,
- });
+ // env.addRequestExpectation(API_GET_CURRENT_INSTANCE, {
+ // response: {
+ // name: "instance_name",
+ // auth: {
+ // method: "token",
+ // // token: "not-secret",
+ // },
+ // } as TalerMerchantApi.QueryInstancesResponse,
+ // });
const hookBehavior = await tests.hookBehaveLikeThis(
() => {
@@ -148,26 +146,26 @@ describe("instance api interaction with details", () => {
request: {
method: "token",
token: "secret",
- } as MerchantBackend.Instances.InstanceAuthConfigurationMessage,
- });
- env.addRequestExpectation(API_NEW_LOGIN, {
- auth: "secret",
- request: {
- scope: "write",
- duration: {
- "d_us": "forever",
- },
- refreshable: true,
- },
- });
+ } as TalerMerchantApi.InstanceAuthConfigurationMessage,
+ });
+ // env.addRequestExpectation(API_NEW_LOGIN, {
+ // auth: "secret",
+ // request: {
+ // scope: "write",
+ // duration: {
+ // "d_us": "forever",
+ // },
+ // refreshable: true,
+ // },
+ // });
env.addRequestExpectation(API_GET_CURRENT_INSTANCE, {
response: {
name: "instance_name",
auth: {
- method: "token",
+ type: "token",
// token: "secret",
},
- } as MerchantBackend.Instances.QueryInstancesResponse,
+ } as TalerMerchantApi.QueryInstancesResponse,
});
api.setNewAccessToken(undefined, "secret" as AccessToken);
},
@@ -200,10 +198,10 @@ describe("instance api interaction with details", () => {
response: {
name: "instance_name",
auth: {
- method: "token",
+ type: "token",
// token: "not-secret",
},
- } as MerchantBackend.Instances.QueryInstancesResponse,
+ } as TalerMerchantApi.QueryInstancesResponse,
});
const hookBehavior = await tests.hookBehaveLikeThis(
@@ -234,15 +232,15 @@ describe("instance api interaction with details", () => {
env.addRequestExpectation(API_UPDATE_CURRENT_INSTANCE_AUTH, {
request: {
method: "external",
- } as MerchantBackend.Instances.InstanceAuthConfigurationMessage,
+ } as TalerMerchantApi.InstanceAuthConfigurationMessage,
});
env.addRequestExpectation(API_GET_CURRENT_INSTANCE, {
response: {
name: "instance_name",
auth: {
- method: "external",
+ type: "external",
},
- } as MerchantBackend.Instances.QueryInstancesResponse,
+ } as TalerMerchantApi.QueryInstancesResponse,
});
api.clearAccessToken(undefined);
@@ -332,7 +330,7 @@ describe("instance admin api interaction with listing", () => {
instances: [
{
name: "instance_name",
- } as MerchantBackend.Instances.Instance,
+ } as TalerMerchantApi.Instance,
],
},
});
@@ -366,24 +364,24 @@ describe("instance admin api interaction with listing", () => {
env.addRequestExpectation(API_CREATE_INSTANCE, {
request: {
name: "other_name",
- } as MerchantBackend.Instances.InstanceConfigurationMessage,
+ } as TalerMerchantApi.InstanceConfigurationMessage,
});
env.addRequestExpectation(API_LIST_INSTANCES, {
response: {
instances: [
{
name: "instance_name",
- } as MerchantBackend.Instances.Instance,
+ } as TalerMerchantApi.Instance,
{
name: "other_name",
- } as MerchantBackend.Instances.Instance,
+ } as TalerMerchantApi.Instance,
],
},
});
api.createInstance({
name: "other_name",
- } as MerchantBackend.Instances.InstanceConfigurationMessage);
+ } as TalerMerchantApi.InstanceConfigurationMessage);
},
({ query, api }) => {
expect(env.assertJustExpectedRequestWereMade()).deep.eq({
@@ -419,11 +417,11 @@ describe("instance admin api interaction with listing", () => {
{
id: "default",
name: "instance_name",
- } as MerchantBackend.Instances.Instance,
+ } as TalerMerchantApi.Instance,
{
id: "the_id",
name: "second_instance",
- } as MerchantBackend.Instances.Instance,
+ } as TalerMerchantApi.Instance,
],
},
});
@@ -466,7 +464,7 @@ describe("instance admin api interaction with listing", () => {
{
id: "default",
name: "instance_name",
- } as MerchantBackend.Instances.Instance,
+ } as TalerMerchantApi.Instance,
],
},
});
@@ -543,7 +541,7 @@ describe("instance admin api interaction with listing", () => {
// instances: [{
// id: 'default',
// name: 'instance_name'
- // } as MerchantBackend.Instances.Instance]
+ // } as TalerMerchantApi.Instance]
// },
// });
@@ -573,11 +571,11 @@ describe("instance admin api interaction with listing", () => {
{
id: "default",
name: "instance_name",
- } as MerchantBackend.Instances.Instance,
+ } as TalerMerchantApi.Instance,
{
id: "the_id",
name: "second_instance",
- } as MerchantBackend.Instances.Instance,
+ } as TalerMerchantApi.Instance,
],
},
});
@@ -624,7 +622,7 @@ describe("instance admin api interaction with listing", () => {
{
id: "default",
name: "instance_name",
- } as MerchantBackend.Instances.Instance,
+ } as TalerMerchantApi.Instance,
],
},
});
@@ -665,7 +663,7 @@ describe("instance management api interaction with listing", () => {
{
id: "managed",
name: "instance_name",
- } as MerchantBackend.Instances.Instance,
+ } as TalerMerchantApi.Instance,
],
},
});
@@ -700,7 +698,7 @@ describe("instance management api interaction with listing", () => {
env.addRequestExpectation(API_UPDATE_INSTANCE_BY_ID("managed"), {
request: {
name: "other_name",
- } as MerchantBackend.Instances.InstanceReconfigurationMessage,
+ } as TalerMerchantApi.InstanceReconfigurationMessage,
});
env.addRequestExpectation(API_LIST_INSTANCES, {
response: {
@@ -708,14 +706,14 @@ describe("instance management api interaction with listing", () => {
{
id: "managed",
name: "other_name",
- } as MerchantBackend.Instances.Instance,
+ } as TalerMerchantApi.Instance,
],
},
});
api.updateInstance({
name: "other_name",
- } as MerchantBackend.Instances.InstanceConfigurationMessage);
+ } as TalerMerchantApi.InstanceConfigurationMessage);
},
({ query, api }) => {
expect(env.assertJustExpectedRequestWereMade()).deep.eq({
diff --git a/packages/merchant-backoffice-ui/src/hooks/instance.ts b/packages/merchant-backoffice-ui/src/hooks/instance.ts
index dfe97fd61..2da82989b 100644
--- a/packages/merchant-backoffice-ui/src/hooks/instance.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/instance.ts
@@ -16,26 +16,23 @@
import {
HttpResponse,
HttpResponseOk,
- RequestError,
- useMerchantApiContext,
+ RequestError
} from "@gnu-taler/web-util/browser";
-import { MerchantBackend } from "../declaration.js";
import {
useBackendBaseRequest,
useBackendInstanceRequest,
- useCredentialsChecker,
useMatchMutate,
} from "./backend.js";
// FIX default import https://github.com/microsoft/TypeScript/issues/49189
+import { AccessToken, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import _useSWR, { SWRHook, useSWRConfig } from "swr";
import { useSessionContext } from "../context/session.js";
-import { AccessToken } from "@gnu-taler/taler-util";
const useSWR = _useSWR as unknown as SWRHook;
interface InstanceAPI {
updateInstance: (
- data: MerchantBackend.Instances.InstanceReconfigurationMessage,
+ data: TalerMerchantApi.InstanceReconfigurationMessage,
) => Promise<void>;
deleteInstance: () => Promise<void>;
clearAccessToken: (currentToken: AccessToken | undefined) => Promise<void>;
@@ -50,7 +47,7 @@ export function useAdminAPI(): AdminAPI {
const mutateAll = useMatchMutate();
const createInstance = async (
- instance: MerchantBackend.Instances.InstanceConfigurationMessage,
+ instance: TalerMerchantApi.InstanceConfigurationMessage,
): Promise<void> => {
await request(`/management/instances`, {
method: "POST",
@@ -84,7 +81,7 @@ export function useAdminAPI(): AdminAPI {
export interface AdminAPI {
createInstance: (
- data: MerchantBackend.Instances.InstanceConfigurationMessage,
+ data: TalerMerchantApi.InstanceConfigurationMessage,
) => Promise<void>;
deleteInstance: (id: string) => Promise<void>;
purgeInstance: (id: string) => Promise<void>;
@@ -98,10 +95,9 @@ export function useManagementAPI(instanceId: string): InstanceAPI {
logOut,
} = useSessionContext();
const { request } = useBackendBaseRequest();
- const { requestNewLoginToken } = useCredentialsChecker();
const updateInstance = async (
- instance: MerchantBackend.Instances.InstanceReconfigurationMessage,
+ instance: TalerMerchantApi.InstanceReconfigurationMessage,
): Promise<void> => {
await request(`/management/instances/${instanceId}`, {
method: "PATCH",
@@ -166,14 +162,13 @@ export function useInstanceAPI(): InstanceAPI {
} = useSessionContext();
const { request } = useBackendInstanceRequest();
- const { requestNewLoginToken } = useCredentialsChecker();
const { state, logIn, logOut } = useSessionContext();
const adminToken =
state.status === "loggedIn" && state.isAdmin ? state.token : undefined;
const updateInstance = async (
- instance: MerchantBackend.Instances.InstanceReconfigurationMessage,
+ instance: TalerMerchantApi.InstanceReconfigurationMessage,
): Promise<void> => {
await request(`/private/`, {
method: "PATCH",
@@ -239,14 +234,14 @@ export function useInstanceAPI(): InstanceAPI {
}
export function useInstanceDetails(): HttpResponse<
- MerchantBackend.Instances.QueryInstancesResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.QueryInstancesResponse,
+ TalerErrorDetail
> {
const { fetcher } = useBackendInstanceRequest();
const { data, error, isValidating } = useSWR<
- HttpResponseOk<MerchantBackend.Instances.QueryInstancesResponse>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.QueryInstancesResponse>,
+ RequestError<TalerErrorDetail>
>([`/private/`], fetcher, {
refreshInterval: 0,
refreshWhenHidden: false,
@@ -267,17 +262,17 @@ export function useInstanceDetails(): HttpResponse<
type KYCStatus =
| { type: "ok" }
- | { type: "redirect"; status: MerchantBackend.KYC.AccountKycRedirects };
+ | { type: "redirect"; status: TalerMerchantApi.AccountKycRedirects };
export function useInstanceKYCDetails(): HttpResponse<
KYCStatus,
- MerchantBackend.ErrorDetail
+ TalerErrorDetail
> {
const { fetcher } = useBackendInstanceRequest();
const { data, error } = useSWR<
- HttpResponseOk<MerchantBackend.KYC.AccountKycRedirects>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.AccountKycRedirects>,
+ RequestError<TalerErrorDetail>
>([`/private/kyc`], fetcher, {
refreshInterval: 60 * 1000,
refreshWhenHidden: false,
@@ -303,14 +298,14 @@ export function useInstanceKYCDetails(): HttpResponse<
export function useManagedInstanceDetails(
instanceId: string,
): HttpResponse<
- MerchantBackend.Instances.QueryInstancesResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.QueryInstancesResponse,
+ TalerErrorDetail
> {
const { request } = useBackendBaseRequest();
const { data, error, isValidating } = useSWR<
- HttpResponseOk<MerchantBackend.Instances.QueryInstancesResponse>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.QueryInstancesResponse>,
+ RequestError<TalerErrorDetail>
>([`/management/instances/${instanceId}`], request, {
refreshInterval: 0,
refreshWhenHidden: false,
@@ -329,14 +324,14 @@ export function useManagedInstanceDetails(
}
export function useBackendInstances(): HttpResponse<
- MerchantBackend.Instances.InstancesResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.InstancesResponse,
+ TalerErrorDetail
> {
const { request } = useBackendBaseRequest();
const { data, error, isValidating } = useSWR<
- HttpResponseOk<MerchantBackend.Instances.InstancesResponse>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.InstancesResponse>,
+ RequestError<TalerErrorDetail>
>(["/management/instances"], request);
if (isValidating) return { loading: true, data: data?.data };
diff --git a/packages/merchant-backoffice-ui/src/hooks/merchant.ts b/packages/merchant-backoffice-ui/src/hooks/merchant.ts
index d01b579b9..47d9e5624 100644
--- a/packages/merchant-backoffice-ui/src/hooks/merchant.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/merchant.ts
@@ -20,15 +20,15 @@ import {
RequestError,
} from "@gnu-taler/web-util/browser";
import { useEffect, useState } from "preact/hooks";
-import { MerchantBackend } from "../declaration.js";
import { MAX_RESULT_SIZE, PAGE_SIZE } from "../utils/constants.js";
import { useBackendInstanceRequest, useMatchMutate } from "./backend.js";
// FIX default import https://github.com/microsoft/TypeScript/issues/49189
+import { TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import _useSWR, { SWRHook, mutate } from "swr";
const useSWR = _useSWR as unknown as SWRHook;
-// const MOCKED_ACCOUNTS: Record<string, MerchantBackend.BankAccounts.AccountAddDetails> = {
+// const MOCKED_ACCOUNTS: Record<string, TalerMerchantApi.AccountAddDetails> = {
// "hwire1": {
// h_wire: "hwire1",
// payto_uri: "payto://fake/iban/123",
@@ -46,7 +46,7 @@ export function useBankAccountAPI(): BankAccountAPI {
const { request } = useBackendInstanceRequest();
const createBankAccount = async (
- data: MerchantBackend.BankAccounts.AccountAddDetails,
+ data: TalerMerchantApi.AccountAddDetails,
): Promise<HttpResponseOk<void>> => {
// MOCKED_ACCOUNTS[data.h_wire] = data
// return Promise.resolve({ ok: true, data: undefined });
@@ -60,7 +60,7 @@ export function useBankAccountAPI(): BankAccountAPI {
const updateBankAccount = async (
h_wire: string,
- data: MerchantBackend.BankAccounts.AccountPatchDetails,
+ data: TalerMerchantApi.AccountPatchDetails,
): Promise<HttpResponseOk<void>> => {
// MOCKED_ACCOUNTS[h_wire].credit_facade_credentials = data.credit_facade_credentials
// MOCKED_ACCOUNTS[h_wire].credit_facade_url = data.credit_facade_url
@@ -94,11 +94,11 @@ export function useBankAccountAPI(): BankAccountAPI {
export interface BankAccountAPI {
createBankAccount: (
- data: MerchantBackend.BankAccounts.AccountAddDetails,
+ data: TalerMerchantApi.AccountAddDetails,
) => Promise<HttpResponseOk<void>>;
updateBankAccount: (
id: string,
- data: MerchantBackend.BankAccounts.AccountPatchDetails,
+ data: TalerMerchantApi.AccountPatchDetails,
) => Promise<HttpResponseOk<void>>;
deleteBankAccount: (id: string) => Promise<HttpResponseOk<void>>;
}
@@ -114,8 +114,8 @@ export function useInstanceBankAccounts(
args?: InstanceBankAccountFilter,
updatePosition?: (id: string) => void,
): HttpResponsePaginated<
- MerchantBackend.BankAccounts.AccountsSummaryResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.AccountsSummaryResponse,
+ TalerErrorDetail
> {
const { fetcher } = useBackendInstanceRequest();
@@ -128,14 +128,14 @@ export function useInstanceBankAccounts(
error: afterError,
isValidating: loadingAfter,
} = useSWR<
- HttpResponseOk<MerchantBackend.BankAccounts.AccountsSummaryResponse>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.AccountsSummaryResponse>,
+ RequestError<TalerErrorDetail>
>([`/private/accounts`], fetcher);
const [lastAfter, setLastAfter] = useState<
HttpResponse<
- MerchantBackend.BankAccounts.AccountsSummaryResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.AccountsSummaryResponse,
+ TalerErrorDetail
>
>({ loading: true });
useEffect(() => {
@@ -179,8 +179,8 @@ export function useInstanceBankAccounts(
export function useBankAccountDetails(
h_wire: string,
): HttpResponse<
- MerchantBackend.BankAccounts.BankAccountEntry,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.BankAccountEntry,
+ TalerErrorDetail
> {
// return {
// ok: true,
@@ -192,8 +192,8 @@ export function useBankAccountDetails(
const { fetcher } = useBackendInstanceRequest();
const { data, error, isValidating } = useSWR<
- HttpResponseOk<MerchantBackend.BankAccounts.BankAccountEntry>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.BankAccountEntry>,
+ RequestError<TalerErrorDetail>
>([`/private/accounts/${h_wire}`], fetcher, {
refreshInterval: 0,
refreshWhenHidden: false,
diff --git a/packages/merchant-backoffice-ui/src/hooks/order.test.ts b/packages/merchant-backoffice-ui/src/hooks/order.test.ts
index 86f53a342..08fffbcf0 100644
--- a/packages/merchant-backoffice-ui/src/hooks/order.test.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/order.test.ts
@@ -19,9 +19,9 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { AmountString, TalerMerchantApi } from "@gnu-taler/taler-util";
import * as tests from "@gnu-taler/web-util/testing";
import { expect } from "chai";
-import { MerchantBackend } from "../declaration.js";
import { useInstanceOrders, useOrderAPI, useOrderDetails } from "./order.js";
import { ApiMockEnvironment } from "./testing.js";
import {
@@ -40,7 +40,7 @@ describe("order api interaction with listing", () => {
env.addRequestExpectation(API_LIST_ORDERS, {
qparam: { delta: -20, paid: "yes" },
response: {
- orders: [{ order_id: "1" }, { order_id: "2" } as MerchantBackend.Orders.OrderHistoryEntry],
+ orders: [{ order_id: "1" }, { order_id: "2" } as TalerMerchantApi.OrderHistoryEntry],
},
});
@@ -72,7 +72,8 @@ describe("order api interaction with listing", () => {
env.addRequestExpectation(API_CREATE_ORDER, {
request: {
- order: { amount: "ARS:12", summary: "pay me" },
+ order: { amount: "ARS:12" as AmountString, summary: "pay me" },
+ lock_uuids: []
},
response: { order_id: "3" },
});
@@ -116,7 +117,7 @@ describe("order api interaction with listing", () => {
order_id: "1",
amount: "EUR:12",
refundable: true,
- } as MerchantBackend.Orders.OrderHistoryEntry] },
+ } as TalerMerchantApi.OrderHistoryEntry] },
});
const newDate = (d: Date) => {
@@ -202,7 +203,7 @@ describe("order api interaction with listing", () => {
env.addRequestExpectation(API_LIST_ORDERS, {
qparam: { delta: -20, paid: "yes" },
response: {
- orders: [{ order_id: "1" }, { order_id: "2" } as MerchantBackend.Orders.OrderHistoryEntry],
+ orders: [{ order_id: "1" }, { order_id: "2" } as TalerMerchantApi.OrderHistoryEntry],
},
});
@@ -271,7 +272,7 @@ describe("order api interaction with details", () => {
response: {
summary: "description",
refund_amount: "EUR:0",
- } as unknown as MerchantBackend.Orders.CheckPaymentPaidResponse,
+ } as unknown as TalerMerchantApi.CheckPaymentPaidResponse,
});
const newDate = (d: Date) => {
@@ -311,12 +312,12 @@ describe("order api interaction with details", () => {
response: {
summary: "description",
refund_amount: "EUR:1",
- } as unknown as MerchantBackend.Orders.CheckPaymentPaidResponse,
+ } as unknown as TalerMerchantApi.CheckPaymentPaidResponse,
});
api.refundOrder("1", {
reason: "double pay",
- refund: "EUR:1",
+ refund: "EUR:1" as AmountString,
});
},
({ query, api }) => {
@@ -347,7 +348,7 @@ describe("order api interaction with details", () => {
response: {
summary: "description",
refund_amount: "EUR:0",
- } as unknown as MerchantBackend.Orders.CheckPaymentPaidResponse,
+ } as unknown as TalerMerchantApi.CheckPaymentPaidResponse,
});
const newDate = (d: Date) => {
@@ -385,7 +386,7 @@ describe("order api interaction with details", () => {
env.addRequestExpectation(API_GET_ORDER_BY_ID("1"), {
response: {
summary: undefined,
- } as unknown as MerchantBackend.Orders.CheckPaymentPaidResponse,
+ } as unknown as TalerMerchantApi.CheckPaymentPaidResponse,
});
api.forgetOrder("1", {
diff --git a/packages/merchant-backoffice-ui/src/hooks/order.ts b/packages/merchant-backoffice-ui/src/hooks/order.ts
index efc7bdcbe..39bc1725b 100644
--- a/packages/merchant-backoffice-ui/src/hooks/order.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/order.ts
@@ -20,27 +20,27 @@ import {
RequestError,
} from "@gnu-taler/web-util/browser";
import { useEffect, useState } from "preact/hooks";
-import { MerchantBackend } from "../declaration.js";
import { MAX_RESULT_SIZE, PAGE_SIZE } from "../utils/constants.js";
import { useBackendInstanceRequest, useMatchMutate } from "./backend.js";
// FIX default import https://github.com/microsoft/TypeScript/issues/49189
+import { TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import _useSWR, { SWRHook } from "swr";
const useSWR = _useSWR as unknown as SWRHook;
export interface OrderAPI {
//FIXME: add OutOfStockResponse on 410
createOrder: (
- data: MerchantBackend.Orders.PostOrderRequest,
- ) => Promise<HttpResponseOk<MerchantBackend.Orders.PostOrderResponse>>;
+ data: TalerMerchantApi.PostOrderRequest,
+ ) => Promise<HttpResponseOk<TalerMerchantApi.PostOrderResponse>>;
forgetOrder: (
id: string,
- data: MerchantBackend.Orders.ForgetRequest,
+ data: TalerMerchantApi.ForgetRequest,
) => Promise<HttpResponseOk<void>>;
refundOrder: (
id: string,
- data: MerchantBackend.Orders.RefundRequest,
- ) => Promise<HttpResponseOk<MerchantBackend.Orders.MerchantRefundResponse>>;
+ data: TalerMerchantApi.RefundRequest,
+ ) => Promise<HttpResponseOk<TalerMerchantApi.MerchantRefundResponse>>;
deleteOrder: (id: string) => Promise<HttpResponseOk<void>>;
getPaymentURL: (id: string) => Promise<HttpResponseOk<string>>;
}
@@ -52,9 +52,9 @@ export function useOrderAPI(): OrderAPI {
const { request } = useBackendInstanceRequest();
const createOrder = async (
- data: MerchantBackend.Orders.PostOrderRequest,
- ): Promise<HttpResponseOk<MerchantBackend.Orders.PostOrderResponse>> => {
- const res = await request<MerchantBackend.Orders.PostOrderResponse>(
+ data: TalerMerchantApi.PostOrderRequest,
+ ): Promise<HttpResponseOk<TalerMerchantApi.PostOrderResponse>> => {
+ const res = await request<TalerMerchantApi.PostOrderResponse>(
`/private/orders`,
{
method: "POST",
@@ -67,10 +67,10 @@ export function useOrderAPI(): OrderAPI {
};
const refundOrder = async (
orderId: string,
- data: MerchantBackend.Orders.RefundRequest,
- ): Promise<HttpResponseOk<MerchantBackend.Orders.MerchantRefundResponse>> => {
+ data: TalerMerchantApi.RefundRequest,
+ ): Promise<HttpResponseOk<TalerMerchantApi.MerchantRefundResponse>> => {
mutateAll(/@"\/private\/orders"@/);
- const res = request<MerchantBackend.Orders.MerchantRefundResponse>(
+ const res = request<TalerMerchantApi.MerchantRefundResponse>(
`/private/orders/${orderId}/refund`,
{
method: "POST",
@@ -85,7 +85,7 @@ export function useOrderAPI(): OrderAPI {
const forgetOrder = async (
orderId: string,
- data: MerchantBackend.Orders.ForgetRequest,
+ data: TalerMerchantApi.ForgetRequest,
): Promise<HttpResponseOk<void>> => {
mutateAll(/@"\/private\/orders"@/);
const res = request<void>(`/private/orders/${orderId}/forget`, {
@@ -110,7 +110,7 @@ export function useOrderAPI(): OrderAPI {
const getPaymentURL = async (
orderId: string,
): Promise<HttpResponseOk<string>> => {
- return request<MerchantBackend.Orders.MerchantOrderStatusResponse>(
+ return request<TalerMerchantApi.MerchantOrderStatusResponse>(
`/private/orders/${orderId}`,
{
method: "GET",
@@ -132,14 +132,14 @@ export function useOrderAPI(): OrderAPI {
export function useOrderDetails(
oderId: string,
): HttpResponse<
- MerchantBackend.Orders.MerchantOrderStatusResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.MerchantOrderStatusResponse,
+ TalerErrorDetail
> {
const { fetcher } = useBackendInstanceRequest();
const { data, error, isValidating } = useSWR<
- HttpResponseOk<MerchantBackend.Orders.MerchantOrderStatusResponse>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.MerchantOrderStatusResponse>,
+ RequestError<TalerErrorDetail>
>([`/private/orders/${oderId}`], fetcher, {
refreshInterval: 0,
refreshWhenHidden: false,
@@ -165,8 +165,8 @@ export function useInstanceOrders(
args?: InstanceOrderFilter,
updateFilter?: (d: Date) => void,
): HttpResponsePaginated<
- MerchantBackend.Orders.OrderHistory,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.OrderHistory,
+ TalerErrorDetail
> {
const { orderFetcher } = useBackendInstanceRequest();
@@ -187,8 +187,8 @@ export function useInstanceOrders(
error: beforeError,
isValidating: loadingBefore,
} = useSWR<
- HttpResponseOk<MerchantBackend.Orders.OrderHistory>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.OrderHistory>,
+ RequestError<TalerErrorDetail>
>(
[
`/private/orders`,
@@ -205,8 +205,8 @@ export function useInstanceOrders(
error: afterError,
isValidating: loadingAfter,
} = useSWR<
- HttpResponseOk<MerchantBackend.Orders.OrderHistory>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.OrderHistory>,
+ RequestError<TalerErrorDetail>
>(
[
`/private/orders`,
@@ -222,14 +222,14 @@ export function useInstanceOrders(
//this will save last result
const [lastBefore, setLastBefore] = useState<
HttpResponse<
- MerchantBackend.Orders.OrderHistory,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.OrderHistory,
+ TalerErrorDetail
>
>({ loading: true });
const [lastAfter, setLastAfter] = useState<
HttpResponse<
- MerchantBackend.Orders.OrderHistory,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.OrderHistory,
+ TalerErrorDetail
>
>({ loading: true });
useEffect(() => {
diff --git a/packages/merchant-backoffice-ui/src/hooks/otp.ts b/packages/merchant-backoffice-ui/src/hooks/otp.ts
index 76ece7055..4b45dcf06 100644
--- a/packages/merchant-backoffice-ui/src/hooks/otp.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/otp.ts
@@ -20,35 +20,20 @@ import {
RequestError,
} from "@gnu-taler/web-util/browser";
import { useEffect, useState } from "preact/hooks";
-import { MerchantBackend } from "../declaration.js";
import { MAX_RESULT_SIZE, PAGE_SIZE } from "../utils/constants.js";
import { useBackendInstanceRequest, useMatchMutate } from "./backend.js";
// FIX default import https://github.com/microsoft/TypeScript/issues/49189
+import { TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import _useSWR, { SWRHook } from "swr";
const useSWR = _useSWR as unknown as SWRHook;
-const MOCKED_DEVICES: Record<string, MerchantBackend.OTP.OtpDeviceAddDetails> = {
- "1": {
- otp_device_description: "first device",
- otp_algorithm: 1,
- otp_device_id: "1",
- otp_key: "123",
- },
- "2": {
- otp_device_description: "second device",
- otp_algorithm: 0,
- otp_device_id: "2",
- otp_key: "456",
- }
-}
-
export function useOtpDeviceAPI(): OtpDeviceAPI {
const mutateAll = useMatchMutate();
const { request } = useBackendInstanceRequest();
const createOtpDevice = async (
- data: MerchantBackend.OTP.OtpDeviceAddDetails,
+ data: TalerMerchantApi.OtpDeviceAddDetails,
): Promise<HttpResponseOk<void>> => {
// MOCKED_DEVICES[data.otp_device_id] = data
// return Promise.resolve({ ok: true, data: undefined });
@@ -62,7 +47,7 @@ export function useOtpDeviceAPI(): OtpDeviceAPI {
const updateOtpDevice = async (
deviceId: string,
- data: MerchantBackend.OTP.OtpDevicePatchDetails,
+ data: TalerMerchantApi.OtpDevicePatchDetails,
): Promise<HttpResponseOk<void>> => {
// MOCKED_DEVICES[deviceId].otp_algorithm = data.otp_algorithm
// MOCKED_DEVICES[deviceId].otp_ctr = data.otp_ctr
@@ -98,11 +83,11 @@ export function useOtpDeviceAPI(): OtpDeviceAPI {
export interface OtpDeviceAPI {
createOtpDevice: (
- data: MerchantBackend.OTP.OtpDeviceAddDetails,
+ data: TalerMerchantApi.OtpDeviceAddDetails,
) => Promise<HttpResponseOk<void>>;
updateOtpDevice: (
id: string,
- data: MerchantBackend.OTP.OtpDevicePatchDetails,
+ data: TalerMerchantApi.OtpDevicePatchDetails,
) => Promise<HttpResponseOk<void>>;
deleteOtpDevice: (id: string) => Promise<HttpResponseOk<void>>;
}
@@ -114,8 +99,8 @@ export function useInstanceOtpDevices(
args?: InstanceOtpDeviceFilter,
updatePosition?: (id: string) => void,
): HttpResponsePaginated<
- MerchantBackend.OTP.OtpDeviceSummaryResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.OtpDeviceSummaryResponse,
+ TalerErrorDetail
> {
// return {
// ok: true,
@@ -139,14 +124,14 @@ export function useInstanceOtpDevices(
error: afterError,
isValidating: loadingAfter,
} = useSWR<
- HttpResponseOk<MerchantBackend.OTP.OtpDeviceSummaryResponse>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.OtpDeviceSummaryResponse>,
+ RequestError<TalerErrorDetail>
>([`/private/otp-devices`], fetcher);
const [lastAfter, setLastAfter] = useState<
HttpResponse<
- MerchantBackend.OTP.OtpDeviceSummaryResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.OtpDeviceSummaryResponse,
+ TalerErrorDetail
>
>({ loading: true });
useEffect(() => {
@@ -190,8 +175,8 @@ export function useInstanceOtpDevices(
export function useOtpDeviceDetails(
deviceId: string,
): HttpResponse<
- MerchantBackend.OTP.OtpDeviceDetails,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.OtpDeviceDetails,
+ TalerErrorDetail
> {
// return {
// ok: true,
@@ -204,8 +189,8 @@ export function useOtpDeviceDetails(
const { fetcher } = useBackendInstanceRequest();
const { data, error, isValidating } = useSWR<
- HttpResponseOk<MerchantBackend.OTP.OtpDeviceDetails>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.OtpDeviceDetails>,
+ RequestError<TalerErrorDetail>
>([`/private/otp-devices/${deviceId}`], fetcher, {
refreshInterval: 0,
refreshWhenHidden: false,
diff --git a/packages/merchant-backoffice-ui/src/hooks/product.test.ts b/packages/merchant-backoffice-ui/src/hooks/product.test.ts
index fd2b83ecc..64dbd0103 100644
--- a/packages/merchant-backoffice-ui/src/hooks/product.test.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/product.test.ts
@@ -21,7 +21,6 @@
import * as tests from "@gnu-taler/web-util/testing";
import { expect } from "chai";
-import { MerchantBackend } from "../declaration.js";
import {
useInstanceProducts,
useProductAPI,
@@ -35,6 +34,7 @@ import {
API_LIST_PRODUCTS,
API_UPDATE_PRODUCT_BY_ID,
} from "./urls.js";
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
describe("product api interaction with listing", () => {
it("should evict cache when creating a product", async () => {
@@ -42,11 +42,11 @@ describe("product api interaction with listing", () => {
env.addRequestExpectation(API_LIST_PRODUCTS, {
response: {
- products: [{ product_id: "1234" }],
+ products: [{ product_id: "1234", product_serial: 1 }],
},
});
env.addRequestExpectation(API_GET_PRODUCT_BY_ID("1234"), {
- response: { price: "ARS:12" } as MerchantBackend.Products.ProductDetail,
+ response: { price: "ARS:12" } as TalerMerchantApi.ProductDetail,
});
const hookBehavior = await tests.hookBehaveLikeThis(
@@ -70,33 +70,33 @@ describe("product api interaction with listing", () => {
expect(query.loading).undefined;
expect(query.ok).true;
if (!query.ok) return;
- expect(query.data).deep.equals([{ id: "1234", price: "ARS:12" }]);
+ expect(query.data).deep.equals([{ id: "1234" , price: "ARS:12" }]);
env.addRequestExpectation(API_CREATE_PRODUCT, {
request: {
price: "ARS:23",
- } as MerchantBackend.Products.ProductAddDetail,
+ } as TalerMerchantApi.ProductAddDetail,
});
env.addRequestExpectation(API_LIST_PRODUCTS, {
response: {
- products: [{ product_id: "1234" }, { product_id: "2345" }],
+ products: [{ product_id: "1234", product_serial: 1 }, { product_id: "2345", product_serial: 2 }],
},
});
env.addRequestExpectation(API_GET_PRODUCT_BY_ID("1234"), {
response: {
price: "ARS:12",
- } as MerchantBackend.Products.ProductDetail,
+ } as TalerMerchantApi.ProductDetail,
});
env.addRequestExpectation(API_GET_PRODUCT_BY_ID("1234"), {
response: {
price: "ARS:12",
- } as MerchantBackend.Products.ProductDetail,
+ } as TalerMerchantApi.ProductDetail,
});
env.addRequestExpectation(API_GET_PRODUCT_BY_ID("2345"), {
response: {
price: "ARS:23",
- } as MerchantBackend.Products.ProductDetail,
+ } as TalerMerchantApi.ProductDetail,
});
api.createProduct({
@@ -140,11 +140,11 @@ describe("product api interaction with listing", () => {
env.addRequestExpectation(API_LIST_PRODUCTS, {
response: {
- products: [{ product_id: "1234" }],
+ products: [{ product_id: "1234", product_serial: 1 }],
},
});
env.addRequestExpectation(API_GET_PRODUCT_BY_ID("1234"), {
- response: { price: "ARS:12" } as MerchantBackend.Products.ProductDetail,
+ response: { price: "ARS:12" } as TalerMerchantApi.ProductDetail,
});
const hookBehavior = await tests.hookBehaveLikeThis(
@@ -173,18 +173,18 @@ describe("product api interaction with listing", () => {
env.addRequestExpectation(API_UPDATE_PRODUCT_BY_ID("1234"), {
request: {
price: "ARS:13",
- } as MerchantBackend.Products.ProductPatchDetail,
+ } as TalerMerchantApi.ProductPatchDetail,
});
env.addRequestExpectation(API_LIST_PRODUCTS, {
response: {
- products: [{ product_id: "1234" }],
+ products: [{ product_id: "1234", product_serial: 1 }],
},
});
env.addRequestExpectation(API_GET_PRODUCT_BY_ID("1234"), {
response: {
price: "ARS:13",
- } as MerchantBackend.Products.ProductDetail,
+ } as TalerMerchantApi.ProductDetail,
});
api.updateProduct("1234", {
@@ -218,14 +218,14 @@ describe("product api interaction with listing", () => {
env.addRequestExpectation(API_LIST_PRODUCTS, {
response: {
- products: [{ product_id: "1234" }, { product_id: "2345" }],
+ products: [{ product_id: "1234" , product_serial: 1}, { product_id: "2345", product_serial: 2 }],
},
});
env.addRequestExpectation(API_GET_PRODUCT_BY_ID("1234"), {
- response: { price: "ARS:12" } as MerchantBackend.Products.ProductDetail,
+ response: { price: "ARS:12" } as TalerMerchantApi.ProductDetail,
});
env.addRequestExpectation(API_GET_PRODUCT_BY_ID("2345"), {
- response: { price: "ARS:23" } as MerchantBackend.Products.ProductDetail,
+ response: { price: "ARS:23" } as TalerMerchantApi.ProductDetail,
});
const hookBehavior = await tests.hookBehaveLikeThis(
@@ -258,14 +258,14 @@ describe("product api interaction with listing", () => {
env.addRequestExpectation(API_LIST_PRODUCTS, {
response: {
- products: [{ product_id: "1234" }],
+ products: [{ product_id: "1234", product_serial: 1 }],
},
});
env.addRequestExpectation(API_GET_PRODUCT_BY_ID("1234"), {
response: {
price: "ARS:12",
- } as MerchantBackend.Products.ProductDetail,
+ } as TalerMerchantApi.ProductDetail,
});
api.deleteProduct("2345");
},
@@ -300,7 +300,7 @@ describe("product api interaction with details", () => {
env.addRequestExpectation(API_GET_PRODUCT_BY_ID("12"), {
response: {
description: "this is a description",
- } as MerchantBackend.Products.ProductDetail,
+ } as TalerMerchantApi.ProductDetail,
});
const hookBehavior = await tests.hookBehaveLikeThis(
@@ -328,13 +328,13 @@ describe("product api interaction with details", () => {
env.addRequestExpectation(API_UPDATE_PRODUCT_BY_ID("12"), {
request: {
description: "other description",
- } as MerchantBackend.Products.ProductPatchDetail,
+ } as TalerMerchantApi.ProductPatchDetail,
});
env.addRequestExpectation(API_GET_PRODUCT_BY_ID("12"), {
response: {
description: "other description",
- } as MerchantBackend.Products.ProductDetail,
+ } as TalerMerchantApi.ProductDetail,
});
api.updateProduct("12", {
diff --git a/packages/merchant-backoffice-ui/src/hooks/product.ts b/packages/merchant-backoffice-ui/src/hooks/product.ts
index 345ca5bf2..c0ace0d32 100644
--- a/packages/merchant-backoffice-ui/src/hooks/product.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/product.ts
@@ -18,11 +18,11 @@ import {
HttpResponseOk,
RequestError,
} from "@gnu-taler/web-util/browser";
-import { MerchantBackend, WithId } from "../declaration.js";
import { useBackendInstanceRequest, useMatchMutate } from "./backend.js";
// FIX default import https://github.com/microsoft/TypeScript/issues/49189
import _useSWR, { SWRHook, useSWRConfig } from "swr";
+import { TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
const useSWR = _useSWR as unknown as SWRHook;
export interface ProductAPI {
@@ -30,16 +30,16 @@ export interface ProductAPI {
id: string,
) => Promise<void>;
createProduct: (
- data: MerchantBackend.Products.ProductAddDetail,
+ data: TalerMerchantApi.ProductAddDetail,
) => Promise<void>;
updateProduct: (
id: string,
- data: MerchantBackend.Products.ProductPatchDetail,
+ data: TalerMerchantApi.ProductPatchDetail,
) => Promise<void>;
deleteProduct: (id: string) => Promise<void>;
lockProduct: (
id: string,
- data: MerchantBackend.Products.LockRequest,
+ data: TalerMerchantApi.LockRequest,
) => Promise<void>;
}
@@ -50,7 +50,7 @@ export function useProductAPI(): ProductAPI {
const { request } = useBackendInstanceRequest();
const createProduct = async (
- data: MerchantBackend.Products.ProductAddDetail,
+ data: TalerMerchantApi.ProductAddDetail,
): Promise<void> => {
const res = await request(`/private/products`, {
method: "POST",
@@ -62,7 +62,7 @@ export function useProductAPI(): ProductAPI {
const updateProduct = async (
productId: string,
- data: MerchantBackend.Products.ProductPatchDetail,
+ data: TalerMerchantApi.ProductPatchDetail,
): Promise<void> => {
const r = await request(`/private/products/${productId}`, {
method: "PATCH",
@@ -81,7 +81,7 @@ export function useProductAPI(): ProductAPI {
const lockProduct = async (
productId: string,
- data: MerchantBackend.Products.LockRequest,
+ data: TalerMerchantApi.LockRequest,
): Promise<void> => {
await request(`/private/products/${productId}/lock`, {
method: "POST",
@@ -105,14 +105,14 @@ export function useProductAPI(): ProductAPI {
}
export function useInstanceProducts(): HttpResponse<
- (MerchantBackend.Products.ProductDetail & WithId)[],
- MerchantBackend.ErrorDetail
+ (TalerMerchantApi.ProductDetail & WithId)[],
+ TalerErrorDetail
> {
const { fetcher, multiFetcher } = useBackendInstanceRequest();
const { data: list, error: listError } = useSWR<
- HttpResponseOk<MerchantBackend.Products.InventorySummaryResponse>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.InventorySummaryResponse>,
+ RequestError<TalerErrorDetail>
>([`/private/products`], fetcher, {
refreshInterval: 0,
refreshWhenHidden: false,
@@ -125,8 +125,8 @@ export function useInstanceProducts(): HttpResponse<
(p) => `/private/products/${p.product_id}`,
);
const { data: products, error: productError } = useSWR<
- HttpResponseOk<MerchantBackend.Products.ProductDetail>[],
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.ProductDetail>[],
+ RequestError<TalerErrorDetail>
>([paths], multiFetcher, {
refreshInterval: 0,
refreshWhenHidden: false,
@@ -154,14 +154,14 @@ export function useInstanceProducts(): HttpResponse<
export function useProductDetails(
productId: string,
): HttpResponse<
- MerchantBackend.Products.ProductDetail,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.ProductDetail,
+ TalerErrorDetail
> {
const { fetcher } = useBackendInstanceRequest();
const { data, error, isValidating } = useSWR<
- HttpResponseOk<MerchantBackend.Products.ProductDetail>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.ProductDetail>,
+ RequestError<TalerErrorDetail>
>([`/private/products/${productId}`], fetcher, {
refreshInterval: 0,
refreshWhenHidden: false,
diff --git a/packages/merchant-backoffice-ui/src/hooks/reserve.test.ts b/packages/merchant-backoffice-ui/src/hooks/reserve.test.ts
deleted file mode 100644
index 58472399f..000000000
--- a/packages/merchant-backoffice-ui/src/hooks/reserve.test.ts
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- 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 <http://www.gnu.org/licenses/>
- */
-
-/**
- *
- * @author Sebastian Javier Marchano (sebasjm)
- */
-
-import * as tests from "@gnu-taler/web-util/testing";
-import { expect } from "chai";
-import { MerchantBackend } from "../declaration.js";
-import {
- useInstanceReserves,
- useReservesAPI,
-} from "./reserves.js";
-import { ApiMockEnvironment } from "./testing.js";
-import {
- API_CREATE_RESERVE,
- API_DELETE_RESERVE,
- API_LIST_RESERVES
-} from "./urls.js";
-
-describe("reserve api interaction with listing", () => {
- it("should evict cache when creating a reserve", async () => {
- const env = new ApiMockEnvironment();
-
- env.addRequestExpectation(API_LIST_RESERVES, {
- response: {
- reserves: [
- {
- reserve_pub: "11",
- } as MerchantBackend.Rewards.ReserveStatusEntry,
- ],
- },
- });
-
- const hookBehavior = await tests.hookBehaveLikeThis(
- () => {
- const api = useReservesAPI();
- const query = useInstanceReserves();
- return { query, api };
- },
- {},
- [
- ({ query, api }) => {
- expect(query.loading).true;
- },
- ({ query, api }) => {
- expect(query.loading).false;
- expect(query.ok).true;
- if (!query.ok) return;
- expect(query.data).deep.equals({
- reserves: [{ reserve_pub: "11" }],
- });
-
- env.addRequestExpectation(API_CREATE_RESERVE, {
- request: {
- initial_balance: "ARS:3333",
- exchange_url: "http://url",
- wire_method: "iban",
- },
- response: {
- reserve_pub: "22",
- accounts: [],
- },
- });
-
- env.addRequestExpectation(API_LIST_RESERVES, {
- response: {
- reserves: [
- {
- reserve_pub: "11",
- } as MerchantBackend.Rewards.ReserveStatusEntry,
- {
- reserve_pub: "22",
- } as MerchantBackend.Rewards.ReserveStatusEntry,
- ],
- },
- });
-
- api.createReserve({
- initial_balance: "ARS:3333",
- exchange_url: "http://url",
- wire_method: "iban",
- });
- },
- ({ query, api }) => {
- expect(env.assertJustExpectedRequestWereMade()).deep.eq({
- result: "ok",
- });
- expect(query.loading).false;
- expect(query.ok).true;
- if (!query.ok) return;
-
- expect(query.data).deep.equals({
- reserves: [
- {
- reserve_pub: "11",
- } as MerchantBackend.Rewards.ReserveStatusEntry,
- {
- reserve_pub: "22",
- } as MerchantBackend.Rewards.ReserveStatusEntry,
- ],
- });
- },
- ],
- env.buildTestingContext(),
- );
-
- expect(hookBehavior).deep.eq({ result: "ok" });
- expect(env.assertJustExpectedRequestWereMade()).deep.eq({ result: "ok" });
- });
-
- it("should evict cache when deleting a reserve", async () => {
- const env = new ApiMockEnvironment();
-
- env.addRequestExpectation(API_LIST_RESERVES, {
- response: {
- reserves: [
- {
- reserve_pub: "11",
- } as MerchantBackend.Rewards.ReserveStatusEntry,
- {
- reserve_pub: "22",
- } as MerchantBackend.Rewards.ReserveStatusEntry,
- {
- reserve_pub: "33",
- } as MerchantBackend.Rewards.ReserveStatusEntry,
- ],
- },
- });
-
- const hookBehavior = await tests.hookBehaveLikeThis(
- () => {
- const api = useReservesAPI();
- const query = useInstanceReserves();
- return { query, api };
- },
- {},
- [
- ({ query, api }) => {
- expect(query.loading).true;
- },
- ({ query, api }) => {
- expect(env.assertJustExpectedRequestWereMade()).deep.eq({
- result: "ok",
- });
-
- expect(query.loading).false;
- expect(query.ok).true;
- if (!query.ok) return;
- expect(query.data).deep.equals({
- reserves: [
- { reserve_pub: "11" },
- { reserve_pub: "22" },
- { reserve_pub: "33" },
- ],
- });
-
- env.addRequestExpectation(API_DELETE_RESERVE("11"), {});
- env.addRequestExpectation(API_LIST_RESERVES, {
- response: {
- reserves: [
- {
- reserve_pub: "22",
- } as MerchantBackend.Rewards.ReserveStatusEntry,
- {
- reserve_pub: "33",
- } as MerchantBackend.Rewards.ReserveStatusEntry,
- ],
- },
- });
-
- api.deleteReserve("11");
- },
- ({ query, api }) => {
- expect(env.assertJustExpectedRequestWereMade()).deep.eq({
- result: "ok",
- });
- expect(query.loading).false;
- expect(query.ok).true;
- if (!query.ok) return;
- expect(query.data).deep.equals({
- reserves: [{ reserve_pub: "22" }, { reserve_pub: "33" }],
- });
- },
- ],
- env.buildTestingContext(),
- );
-
- expect(hookBehavior).deep.eq({ result: "ok" });
- expect(env.assertJustExpectedRequestWereMade()).deep.eq({ result: "ok" });
- });
-});
diff --git a/packages/merchant-backoffice-ui/src/hooks/reserves.ts b/packages/merchant-backoffice-ui/src/hooks/reserves.ts
deleted file mode 100644
index 13e4bcce8..000000000
--- a/packages/merchant-backoffice-ui/src/hooks/reserves.ts
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- 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 <http://www.gnu.org/licenses/>
- */
-import {
- HttpResponse,
- HttpResponseOk,
- RequestError,
-} from "@gnu-taler/web-util/browser";
-import { MerchantBackend } from "../declaration.js";
-import { useBackendInstanceRequest, useMatchMutate } from "./backend.js";
-
-// FIX default import https://github.com/microsoft/TypeScript/issues/49189
-import _useSWR, { SWRHook, useSWRConfig } from "swr";
-const useSWR = _useSWR as unknown as SWRHook;
-
-export function useReservesAPI(): ReserveMutateAPI {
- const mutateAll = useMatchMutate();
- const { mutate } = useSWRConfig();
- const { request } = useBackendInstanceRequest();
-
- const createReserve = async (
- data: MerchantBackend.Rewards.ReserveCreateRequest,
- ): Promise<
- HttpResponseOk<MerchantBackend.Rewards.ReserveCreateConfirmation>
- > => {
- const res = await request<MerchantBackend.Rewards.ReserveCreateConfirmation>(
- `/private/reserves`,
- {
- method: "POST",
- data,
- },
- );
-
- //evict reserve list query
- await mutateAll(/.*private\/reserves.*/);
-
- return res;
- };
-
-
- const deleteReserve = async (
- pub: string,
- ): Promise<HttpResponse<void, MerchantBackend.ErrorDetail>> => {
- const res = await request<void>(`/private/reserves/${pub}`, {
- method: "DELETE",
- });
-
- //evict reserve list query
- await mutateAll(/.*private\/reserves.*/);
-
- return res;
- };
-
- return { createReserve, deleteReserve };
-}
-
-export interface ReserveMutateAPI {
- createReserve: (
- data: MerchantBackend.Rewards.ReserveCreateRequest,
- ) => Promise<HttpResponseOk<MerchantBackend.Rewards.ReserveCreateConfirmation>>;
- deleteReserve: (
- id: string,
- ) => Promise<HttpResponse<void, MerchantBackend.ErrorDetail>>;
-}
-
-export function useInstanceReserves(): HttpResponse<
- MerchantBackend.Rewards.RewardReserveStatus,
- MerchantBackend.ErrorDetail
-> {
- const { fetcher } = useBackendInstanceRequest();
-
- const { data, error, isValidating } = useSWR<
- HttpResponseOk<MerchantBackend.Rewards.RewardReserveStatus>,
- RequestError<MerchantBackend.ErrorDetail>
- >([`/private/reserves`], fetcher);
-
- if (isValidating) return { loading: true, data: data?.data };
- if (data) return data;
- if (error) return error.cause;
- return { loading: true };
-}
-
diff --git a/packages/merchant-backoffice-ui/src/hooks/templates.ts b/packages/merchant-backoffice-ui/src/hooks/templates.ts
index 96671452e..cdcc418ef 100644
--- a/packages/merchant-backoffice-ui/src/hooks/templates.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/templates.ts
@@ -20,11 +20,11 @@ import {
RequestError,
} from "@gnu-taler/web-util/browser";
import { useEffect, useState } from "preact/hooks";
-import { MerchantBackend } from "../declaration.js";
import { MAX_RESULT_SIZE, PAGE_SIZE } from "../utils/constants.js";
import { useBackendInstanceRequest, useMatchMutate } from "./backend.js";
// FIX default import https://github.com/microsoft/TypeScript/issues/49189
+import { TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import _useSWR, { SWRHook } from "swr";
const useSWR = _useSWR as unknown as SWRHook;
@@ -33,7 +33,7 @@ export function useTemplateAPI(): TemplateAPI {
const { request } = useBackendInstanceRequest();
const createTemplate = async (
- data: MerchantBackend.Template.TemplateAddDetails,
+ data: TalerMerchantApi.TemplateAddDetails,
): Promise<HttpResponseOk<void>> => {
const res = await request<void>(`/private/templates`, {
method: "POST",
@@ -45,7 +45,7 @@ export function useTemplateAPI(): TemplateAPI {
const updateTemplate = async (
templateId: string,
- data: MerchantBackend.Template.TemplatePatchDetails,
+ data: TalerMerchantApi.TemplatePatchDetails,
): Promise<HttpResponseOk<void>> => {
const res = await request<void>(`/private/templates/${templateId}`, {
method: "PATCH",
@@ -67,11 +67,11 @@ export function useTemplateAPI(): TemplateAPI {
const createOrderFromTemplate = async (
templateId: string,
- data: MerchantBackend.Template.UsingTemplateDetails,
+ data: TalerMerchantApi.UsingTemplateDetails,
): Promise<
- HttpResponseOk<MerchantBackend.Template.UsingTemplateResponse>
+ HttpResponseOk<TalerMerchantApi.UsingTemplateResponse>
> => {
- const res = await request<MerchantBackend.Template.UsingTemplateResponse>(
+ const res = await request<TalerMerchantApi.UsingTemplateResponse>(
`/templates/${templateId}`,
{
method: "POST",
@@ -101,11 +101,11 @@ export function useTemplateAPI(): TemplateAPI {
export interface TemplateAPI {
createTemplate: (
- data: MerchantBackend.Template.TemplateAddDetails,
+ data: TalerMerchantApi.TemplateAddDetails,
) => Promise<HttpResponseOk<void>>;
updateTemplate: (
id: string,
- data: MerchantBackend.Template.TemplatePatchDetails,
+ data: TalerMerchantApi.TemplatePatchDetails,
) => Promise<HttpResponseOk<void>>;
testTemplateExist: (
id: string
@@ -113,8 +113,8 @@ export interface TemplateAPI {
deleteTemplate: (id: string) => Promise<HttpResponseOk<void>>;
createOrderFromTemplate: (
id: string,
- data: MerchantBackend.Template.UsingTemplateDetails,
- ) => Promise<HttpResponseOk<MerchantBackend.Template.UsingTemplateResponse>>;
+ data: TalerMerchantApi.UsingTemplateDetails,
+ ) => Promise<HttpResponseOk<TalerMerchantApi.UsingTemplateResponse>>;
}
export interface InstanceTemplateFilter {
@@ -126,8 +126,8 @@ export function useInstanceTemplates(
args?: InstanceTemplateFilter,
updatePosition?: (id: string) => void,
): HttpResponsePaginated<
- MerchantBackend.Template.TemplateSummaryResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.TemplateSummaryResponse,
+ TalerErrorDetail
> {
const { templateFetcher } = useBackendInstanceRequest();
@@ -148,8 +148,8 @@ export function useInstanceTemplates(
error: beforeError,
isValidating: loadingBefore,
} = useSWR<
- HttpResponseOk<MerchantBackend.Template.TemplateSummaryResponse>,
- RequestError<MerchantBackend.ErrorDetail>>(
+ HttpResponseOk<TalerMerchantApi.TemplateSummaryResponse>,
+ RequestError<TalerErrorDetail>>(
[
`/private/templates`,
args?.position,
@@ -162,22 +162,22 @@ export function useInstanceTemplates(
error: afterError,
isValidating: loadingAfter,
} = useSWR<
- HttpResponseOk<MerchantBackend.Template.TemplateSummaryResponse>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.TemplateSummaryResponse>,
+ RequestError<TalerErrorDetail>
>([`/private/templates`, args?.position, -totalAfter], templateFetcher);
//this will save last result
const [lastBefore, setLastBefore] = useState<
HttpResponse<
- MerchantBackend.Template.TemplateSummaryResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.TemplateSummaryResponse,
+ TalerErrorDetail
>
>({ loading: true });
const [lastAfter, setLastAfter] = useState<
HttpResponse<
- MerchantBackend.Template.TemplateSummaryResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.TemplateSummaryResponse,
+ TalerErrorDetail
>
>({ loading: true });
useEffect(() => {
@@ -241,14 +241,14 @@ export function useInstanceTemplates(
export function useTemplateDetails(
templateId: string,
): HttpResponse<
- MerchantBackend.Template.TemplateDetails,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.TemplateDetails,
+ TalerErrorDetail
> {
const { templateFetcher } = useBackendInstanceRequest();
const { data, error, isValidating } = useSWR<
- HttpResponseOk<MerchantBackend.Template.TemplateDetails>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.TemplateDetails>,
+ RequestError<TalerErrorDetail>
>([`/private/templates/${templateId}`], templateFetcher, {
refreshInterval: 0,
refreshWhenHidden: false,
diff --git a/packages/merchant-backoffice-ui/src/hooks/transfer.test.ts b/packages/merchant-backoffice-ui/src/hooks/transfer.test.ts
index 2fd11f02e..ee987af7e 100644
--- a/packages/merchant-backoffice-ui/src/hooks/transfer.test.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/transfer.test.ts
@@ -19,12 +19,12 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { AmountString, PaytoString, TalerMerchantApi } from "@gnu-taler/taler-util";
import * as tests from "@gnu-taler/web-util/testing";
import { expect } from "chai";
-import { MerchantBackend } from "../declaration.js";
-import { API_INFORM_TRANSFERS, API_LIST_TRANSFERS } from "./urls.js";
import { ApiMockEnvironment } from "./testing.js";
import { useInstanceTransfers, useTransferAPI } from "./transfer.js";
+import { API_INFORM_TRANSFERS, API_LIST_TRANSFERS } from "./urls.js";
describe("transfer api interaction with listing", () => {
it("should evict cache when informing a transfer", async () => {
@@ -33,7 +33,7 @@ describe("transfer api interaction with listing", () => {
env.addRequestExpectation(API_LIST_TRANSFERS, {
qparam: { limit: -20 },
response: {
- transfers: [{ wtid: "2" } as MerchantBackend.Transfers.TransferDetails],
+ transfers: [{ wtid: "2" } as TalerMerchantApi.TransferDetails],
},
});
@@ -83,9 +83,9 @@ describe("transfer api interaction with listing", () => {
api.informTransfer({
wtid: "3",
- credit_amount: "EUR:1",
+ credit_amount: "EUR:1" as AmountString,
exchange_url: "exchange.url",
- payto_uri: "payto://",
+ payto_uri: "payto://" as PaytoString,
});
},
({ query, api }) => {
diff --git a/packages/merchant-backoffice-ui/src/hooks/transfer.ts b/packages/merchant-backoffice-ui/src/hooks/transfer.ts
index 924bd202f..20062a5e2 100644
--- a/packages/merchant-backoffice-ui/src/hooks/transfer.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/transfer.ts
@@ -20,11 +20,11 @@ import {
RequestError,
} from "@gnu-taler/web-util/browser";
import { useEffect, useState } from "preact/hooks";
-import { MerchantBackend } from "../declaration.js";
import { MAX_RESULT_SIZE, PAGE_SIZE } from "../utils/constants.js";
import { useBackendInstanceRequest, useMatchMutate } from "./backend.js";
// FIX default import https://github.com/microsoft/TypeScript/issues/49189
+import { TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import _useSWR, { SWRHook } from "swr";
const useSWR = _useSWR as unknown as SWRHook;
@@ -33,7 +33,7 @@ export function useTransferAPI(): TransferAPI {
const { request } = useBackendInstanceRequest();
const informTransfer = async (
- data: MerchantBackend.Transfers.TransferInformation,
+ data: TalerMerchantApi.TransferInformation,
): Promise<HttpResponseOk<{}>> => {
const res = await request<{}>(`/private/transfers`, {
method: "POST",
@@ -49,7 +49,7 @@ export function useTransferAPI(): TransferAPI {
export interface TransferAPI {
informTransfer: (
- data: MerchantBackend.Transfers.TransferInformation,
+ data: TalerMerchantApi.TransferInformation,
) => Promise<HttpResponseOk<{}>>;
}
@@ -63,8 +63,8 @@ export function useInstanceTransfers(
args?: InstanceTransferFilter,
updatePosition?: (id: string) => void,
): HttpResponsePaginated<
- MerchantBackend.Transfers.TransferList,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.TransferList,
+ TalerErrorDetail
> {
const { transferFetcher } = useBackendInstanceRequest();
@@ -85,8 +85,8 @@ export function useInstanceTransfers(
error: beforeError,
isValidating: loadingBefore,
} = useSWR<
- HttpResponseOk<MerchantBackend.Transfers.TransferList>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.TransferList>,
+ RequestError<TalerErrorDetail>
>(
[
`/private/transfers`,
@@ -102,8 +102,8 @@ export function useInstanceTransfers(
error: afterError,
isValidating: loadingAfter,
} = useSWR<
- HttpResponseOk<MerchantBackend.Transfers.TransferList>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.TransferList>,
+ RequestError<TalerErrorDetail>
>(
[
`/private/transfers`,
@@ -118,14 +118,14 @@ export function useInstanceTransfers(
//this will save last result
const [lastBefore, setLastBefore] = useState<
HttpResponse<
- MerchantBackend.Transfers.TransferList,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.TransferList,
+ TalerErrorDetail
>
>({ loading: true });
const [lastAfter, setLastAfter] = useState<
HttpResponse<
- MerchantBackend.Transfers.TransferList,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.TransferList,
+ TalerErrorDetail
>
>({ loading: true });
useEffect(() => {
diff --git a/packages/merchant-backoffice-ui/src/hooks/urls.ts b/packages/merchant-backoffice-ui/src/hooks/urls.ts
index 76c117224..95e1c04f3 100644
--- a/packages/merchant-backoffice-ui/src/hooks/urls.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/urls.ts
@@ -18,16 +18,16 @@
*
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { Query } from "@gnu-taler/web-util/testing";
-import { MerchantBackend } from "../declaration.js";
////////////////////
// ORDER
////////////////////
export const API_CREATE_ORDER: Query<
- MerchantBackend.Orders.PostOrderRequest,
- MerchantBackend.Orders.PostOrderResponse
+ TalerMerchantApi.PostOrderRequest,
+ TalerMerchantApi.PostOrderResponse
> = {
method: "POST",
url: "http://backend/instances/default/private/orders",
@@ -35,14 +35,14 @@ export const API_CREATE_ORDER: Query<
export const API_GET_ORDER_BY_ID = (
id: string,
-): Query<unknown, MerchantBackend.Orders.MerchantOrderStatusResponse> => ({
+): Query<unknown, TalerMerchantApi.MerchantOrderStatusResponse> => ({
method: "GET",
url: `http://backend/instances/default/private/orders/${id}`,
});
export const API_LIST_ORDERS: Query<
unknown,
- MerchantBackend.Orders.OrderHistory
+ TalerMerchantApi.OrderHistory
> = {
method: "GET",
url: "http://backend/instances/default/private/orders",
@@ -51,8 +51,8 @@ export const API_LIST_ORDERS: Query<
export const API_REFUND_ORDER_BY_ID = (
id: string,
): Query<
- MerchantBackend.Orders.RefundRequest,
- MerchantBackend.Orders.MerchantRefundResponse
+ TalerMerchantApi.RefundRequest,
+ TalerMerchantApi.MerchantRefundResponse
> => ({
method: "POST",
url: `http://backend/instances/default/private/orders/${id}/refund`,
@@ -60,14 +60,14 @@ export const API_REFUND_ORDER_BY_ID = (
export const API_FORGET_ORDER_BY_ID = (
id: string,
-): Query<MerchantBackend.Orders.ForgetRequest, unknown> => ({
+): Query<TalerMerchantApi.ForgetRequest, unknown> => ({
method: "PATCH",
url: `http://backend/instances/default/private/orders/${id}/forget`,
});
export const API_DELETE_ORDER = (
id: string,
-): Query<MerchantBackend.Orders.ForgetRequest, unknown> => ({
+): Query<TalerMerchantApi.ForgetRequest, unknown> => ({
method: "DELETE",
url: `http://backend/instances/default/private/orders/${id}`,
});
@@ -78,14 +78,14 @@ export const API_DELETE_ORDER = (
export const API_LIST_TRANSFERS: Query<
unknown,
- MerchantBackend.Transfers.TransferList
+ TalerMerchantApi.TransferList
> = {
method: "GET",
url: "http://backend/instances/default/private/transfers",
};
export const API_INFORM_TRANSFERS: Query<
- MerchantBackend.Transfers.TransferInformation,
+ TalerMerchantApi.TransferInformation,
{}
> = {
method: "POST",
@@ -97,7 +97,7 @@ export const API_INFORM_TRANSFERS: Query<
////////////////////
export const API_CREATE_PRODUCT: Query<
- MerchantBackend.Products.ProductAddDetail,
+ TalerMerchantApi.ProductAddDetail,
unknown
> = {
method: "POST",
@@ -106,7 +106,7 @@ export const API_CREATE_PRODUCT: Query<
export const API_LIST_PRODUCTS: Query<
unknown,
- MerchantBackend.Products.InventorySummaryResponse
+ TalerMerchantApi.InventorySummaryResponse
> = {
method: "GET",
url: "http://backend/instances/default/private/products",
@@ -114,7 +114,7 @@ export const API_LIST_PRODUCTS: Query<
export const API_GET_PRODUCT_BY_ID = (
id: string,
-): Query<unknown, MerchantBackend.Products.ProductDetail> => ({
+): Query<unknown, TalerMerchantApi.ProductDetail> => ({
method: "GET",
url: `http://backend/instances/default/private/products/${id}`,
});
@@ -122,8 +122,8 @@ export const API_GET_PRODUCT_BY_ID = (
export const API_UPDATE_PRODUCT_BY_ID = (
id: string,
): Query<
- MerchantBackend.Products.ProductPatchDetail,
- MerchantBackend.Products.InventorySummaryResponse
+ TalerMerchantApi.ProductPatchDetail,
+ TalerMerchantApi.InventorySummaryResponse
> => ({
method: "PATCH",
url: `http://backend/instances/default/private/products/${id}`,
@@ -135,67 +135,11 @@ export const API_DELETE_PRODUCT = (id: string): Query<unknown, unknown> => ({
});
////////////////////
-// RESERVES
-////////////////////
-
-export const API_CREATE_RESERVE: Query<
- MerchantBackend.Rewards.ReserveCreateRequest,
- MerchantBackend.Rewards.ReserveCreateConfirmation
-> = {
- method: "POST",
- url: "http://backend/instances/default/private/reserves",
-};
-export const API_LIST_RESERVES: Query<
- unknown,
- MerchantBackend.Rewards.RewardReserveStatus
-> = {
- method: "GET",
- url: "http://backend/instances/default/private/reserves",
-};
-
-export const API_GET_RESERVE_BY_ID = (
- pub: string,
-): Query<unknown, MerchantBackend.Rewards.ReserveDetail> => ({
- method: "GET",
- url: `http://backend/instances/default/private/reserves/${pub}`,
-});
-
-export const API_GET_REWARD_BY_ID = (
- pub: string,
-): Query<unknown, MerchantBackend.Rewards.RewardDetails> => ({
- method: "GET",
- url: `http://backend/instances/default/private/rewards/${pub}`,
-});
-
-export const API_AUTHORIZE_REWARD_FOR_RESERVE = (
- pub: string,
-): Query<
- MerchantBackend.Rewards.RewardCreateRequest,
- MerchantBackend.Rewards.RewardCreateConfirmation
-> => ({
- method: "POST",
- url: `http://backend/instances/default/private/reserves/${pub}/authorize-reward`,
-});
-
-export const API_AUTHORIZE_REWARD: Query<
- MerchantBackend.Rewards.RewardCreateRequest,
- MerchantBackend.Rewards.RewardCreateConfirmation
-> = {
- method: "POST",
- url: `http://backend/instances/default/private/rewards`,
-};
-
-export const API_DELETE_RESERVE = (id: string): Query<unknown, unknown> => ({
- method: "DELETE",
- url: `http://backend/instances/default/private/reserves/${id}`,
-});
-
-////////////////////
// INSTANCE ADMIN
////////////////////
export const API_CREATE_INSTANCE: Query<
- MerchantBackend.Instances.InstanceConfigurationMessage,
+ TalerMerchantApi.InstanceConfigurationMessage,
unknown
> = {
method: "POST",
@@ -204,21 +148,21 @@ export const API_CREATE_INSTANCE: Query<
export const API_GET_INSTANCE_BY_ID = (
id: string,
-): Query<unknown, MerchantBackend.Instances.QueryInstancesResponse> => ({
+): Query<unknown, TalerMerchantApi.QueryInstancesResponse> => ({
method: "GET",
url: `http://backend/management/instances/${id}`,
});
export const API_GET_INSTANCE_KYC_BY_ID = (
id: string,
-): Query<unknown, MerchantBackend.KYC.AccountKycRedirects> => ({
+): Query<unknown, TalerMerchantApi.AccountKycRedirects> => ({
method: "GET",
url: `http://backend/management/instances/${id}/kyc`,
});
export const API_LIST_INSTANCES: Query<
unknown,
- MerchantBackend.Instances.InstancesResponse
+ TalerMerchantApi.InstancesResponse
> = {
method: "GET",
url: "http://backend/management/instances",
@@ -227,7 +171,7 @@ export const API_LIST_INSTANCES: Query<
export const API_UPDATE_INSTANCE_BY_ID = (
id: string,
): Query<
- MerchantBackend.Instances.InstanceReconfigurationMessage,
+ TalerMerchantApi.InstanceReconfigurationMessage,
unknown
> => ({
method: "PATCH",
@@ -237,7 +181,7 @@ export const API_UPDATE_INSTANCE_BY_ID = (
export const API_UPDATE_INSTANCE_AUTH_BY_ID = (
id: string,
): Query<
- MerchantBackend.Instances.InstanceAuthConfigurationMessage,
+ TalerMerchantApi.InstanceAuthConfigurationMessage,
unknown
> => ({
method: "POST",
@@ -250,24 +194,12 @@ export const API_DELETE_INSTANCE = (id: string): Query<unknown, unknown> => ({
});
////////////////////
-// AUTH
-////////////////////
-
-export const API_NEW_LOGIN: Query<
- MerchantBackend.Instances.LoginTokenRequest,
- unknown
-> = ({
- method: "POST",
- url: `http://backend/private/token`,
-});
-
-////////////////////
// INSTANCE
////////////////////
export const API_GET_CURRENT_INSTANCE: Query<
unknown,
- MerchantBackend.Instances.QueryInstancesResponse
+ TalerMerchantApi.QueryInstancesResponse
> = {
method: "GET",
url: `http://backend/instances/default/private/`,
@@ -275,14 +207,14 @@ export const API_GET_CURRENT_INSTANCE: Query<
export const API_GET_CURRENT_INSTANCE_KYC: Query<
unknown,
- MerchantBackend.KYC.AccountKycRedirects
+ TalerMerchantApi.AccountKycRedirects
> = {
method: "GET",
url: `http://backend/instances/default/private/kyc`,
};
export const API_UPDATE_CURRENT_INSTANCE: Query<
- MerchantBackend.Instances.InstanceReconfigurationMessage,
+ TalerMerchantApi.InstanceReconfigurationMessage,
unknown
> = {
method: "PATCH",
@@ -290,7 +222,7 @@ export const API_UPDATE_CURRENT_INSTANCE: Query<
};
export const API_UPDATE_CURRENT_INSTANCE_AUTH: Query<
- MerchantBackend.Instances.InstanceAuthConfigurationMessage,
+ TalerMerchantApi.InstanceAuthConfigurationMessage,
unknown
> = {
method: "POST",
diff --git a/packages/merchant-backoffice-ui/src/hooks/webhooks.ts b/packages/merchant-backoffice-ui/src/hooks/webhooks.ts
index 994bfdbb0..4e62a81c9 100644
--- a/packages/merchant-backoffice-ui/src/hooks/webhooks.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/webhooks.ts
@@ -20,11 +20,11 @@ import {
RequestError,
} from "@gnu-taler/web-util/browser";
import { useEffect, useState } from "preact/hooks";
-import { MerchantBackend } from "../declaration.js";
import { MAX_RESULT_SIZE, PAGE_SIZE } from "../utils/constants.js";
import { useBackendInstanceRequest, useMatchMutate } from "./backend.js";
// FIX default import https://github.com/microsoft/TypeScript/issues/49189
+import { TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import _useSWR, { SWRHook } from "swr";
const useSWR = _useSWR as unknown as SWRHook;
@@ -33,7 +33,7 @@ export function useWebhookAPI(): WebhookAPI {
const { request } = useBackendInstanceRequest();
const createWebhook = async (
- data: MerchantBackend.Webhooks.WebhookAddDetails,
+ data: TalerMerchantApi.WebhookAddDetails,
): Promise<HttpResponseOk<void>> => {
const res = await request<void>(`/private/webhooks`, {
method: "POST",
@@ -45,7 +45,7 @@ export function useWebhookAPI(): WebhookAPI {
const updateWebhook = async (
webhookId: string,
- data: MerchantBackend.Webhooks.WebhookPatchDetails,
+ data: TalerMerchantApi.WebhookPatchDetails,
): Promise<HttpResponseOk<void>> => {
const res = await request<void>(`/private/webhooks/${webhookId}`, {
method: "PATCH",
@@ -70,11 +70,11 @@ export function useWebhookAPI(): WebhookAPI {
export interface WebhookAPI {
createWebhook: (
- data: MerchantBackend.Webhooks.WebhookAddDetails,
+ data: TalerMerchantApi.WebhookAddDetails,
) => Promise<HttpResponseOk<void>>;
updateWebhook: (
id: string,
- data: MerchantBackend.Webhooks.WebhookPatchDetails,
+ data: TalerMerchantApi.WebhookPatchDetails,
) => Promise<HttpResponseOk<void>>;
deleteWebhook: (id: string) => Promise<HttpResponseOk<void>>;
}
@@ -88,8 +88,8 @@ export function useInstanceWebhooks(
args?: InstanceWebhookFilter,
updatePosition?: (id: string) => void,
): HttpResponsePaginated<
- MerchantBackend.Webhooks.WebhookSummaryResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.WebhookSummaryResponse,
+ TalerErrorDetail
> {
const { webhookFetcher } = useBackendInstanceRequest();
@@ -104,14 +104,15 @@ export function useInstanceWebhooks(
error: afterError,
isValidating: loadingAfter,
} = useSWR<
- HttpResponseOk<MerchantBackend.Webhooks.WebhookSummaryResponse>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.WebhookSummaryResponse>,
+ RequestError<TalerErrorDetail>
+
>([`/private/webhooks`, args?.position, -totalAfter], webhookFetcher);
const [lastAfter, setLastAfter] = useState<
HttpResponse<
- MerchantBackend.Webhooks.WebhookSummaryResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.WebhookSummaryResponse,
+ TalerErrorDetail
>
>({ loading: true });
useEffect(() => {
@@ -155,14 +156,14 @@ export function useInstanceWebhooks(
export function useWebhookDetails(
webhookId: string,
): HttpResponse<
- MerchantBackend.Webhooks.WebhookDetails,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.WebhookDetails,
+ TalerErrorDetail
> {
const { webhookFetcher } = useBackendInstanceRequest();
const { data, error, isValidating } = useSWR<
- HttpResponseOk<MerchantBackend.Webhooks.WebhookDetails>,
- RequestError<MerchantBackend.ErrorDetail>
+ HttpResponseOk<TalerMerchantApi.WebhookDetails>,
+ RequestError<TalerErrorDetail>
>([`/private/webhooks/${webhookId}`], webhookFetcher, {
refreshInterval: 0,
refreshWhenHidden: false,
diff --git a/packages/merchant-backoffice-ui/src/paths/admin/create/CreatePage.tsx b/packages/merchant-backoffice-ui/src/paths/admin/create/CreatePage.tsx
index 8ce7c1d3a..731ea8939 100644
--- a/packages/merchant-backoffice-ui/src/paths/admin/create/CreatePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/admin/create/CreatePage.tsx
@@ -19,6 +19,7 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { Duration, TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { h, VNode } from "preact";
import { useState } from "preact/hooks";
@@ -28,20 +29,18 @@ import {
FormProvider,
} from "../../../components/form/FormProvider.js";
import { DefaultInstanceFormFields } from "../../../components/instance/DefaultInstanceFormFields.js";
-import { MerchantBackend } from "../../../declaration.js";
+import { SetTokenNewInstanceModal } from "../../../components/modal/index.js";
import { INSTANCE_ID_REGEX } from "../../../utils/constants.js";
import { undefinedIfEmpty } from "../../../utils/table.js";
-import { SetTokenNewInstanceModal } from "../../../components/modal/index.js";
-import { Duration } from "@gnu-taler/taler-util";
-export type Entity = Omit<Omit<MerchantBackend.Instances.InstanceConfigurationMessage, "default_pay_delay">, "default_wire_transfer_delay"> & {
+export type Entity = Omit<Omit<TalerMerchantApi.InstanceConfigurationMessage, "default_pay_delay">, "default_wire_transfer_delay"> & {
auth_token?: string;
default_pay_delay: Duration,
default_wire_transfer_delay: Duration,
};
interface Props {
- onCreate: (d: MerchantBackend.Instances.InstanceConfigurationMessage) => Promise<void>;
+ onCreate: (d: TalerMerchantApi.InstanceConfigurationMessage) => Promise<void>;
onBack?: () => void;
forceId?: string;
}
@@ -134,7 +133,7 @@ export function CreatePage({ onCreate, onBack, forceId }: Props): VNode {
// delete value.default_pay_delay;
// delete value.default_wire_transfer_delay;
- return onCreate(newValue as any as MerchantBackend.Instances.InstanceConfigurationMessage);
+ return onCreate(newValue as any as TalerMerchantApi.InstanceConfigurationMessage);
};
function updateToken(token: string | null) {
diff --git a/packages/merchant-backoffice-ui/src/paths/admin/create/index.tsx b/packages/merchant-backoffice-ui/src/paths/admin/create/index.tsx
index 440cd2b07..99e20dcd7 100644
--- a/packages/merchant-backoffice-ui/src/paths/admin/create/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/admin/create/index.tsx
@@ -17,6 +17,7 @@
*
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import {
useMerchantApiContext,
useTranslationContext,
@@ -24,9 +25,8 @@ import {
import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { NotificationCard } from "../../../components/menu/index.js";
-import { MerchantBackend } from "../../../declaration.js";
-import { useAdminAPI } from "../../../hooks/instance.js";
import { useSessionContext } from "../../../context/session.js";
+import { useAdminAPI } from "../../../hooks/instance.js";
import { Notification } from "../../../utils/types.js";
import { CreatePage } from "./CreatePage.js";
@@ -35,14 +35,14 @@ interface Props {
onConfirm: () => void;
forceId?: string;
}
-export type Entity = MerchantBackend.Instances.InstanceConfigurationMessage;
+export type Entity = TalerMerchantApi.InstanceConfigurationMessage;
export default function Create({ onBack, onConfirm, forceId }: Props): VNode {
const { createInstance } = useAdminAPI();
const [notif, setNotif] = useState<Notification | undefined>(undefined);
const { i18n } = useTranslationContext();
const { lib } = useMerchantApiContext();
- const { state, logIn } = useSessionContext();
+ const { logIn } = useSessionContext();
return (
<Fragment>
@@ -52,7 +52,7 @@ export default function Create({ onBack, onConfirm, forceId }: Props): VNode {
onBack={onBack}
forceId={forceId}
onCreate={async (
- d: MerchantBackend.Instances.InstanceConfigurationMessage,
+ d: TalerMerchantApi.InstanceConfigurationMessage,
) => {
try {
await createInstance(d);
diff --git a/packages/merchant-backoffice-ui/src/paths/admin/list/TableActive.tsx b/packages/merchant-backoffice-ui/src/paths/admin/list/TableActive.tsx
index bc18bb352..a03a2659b 100644
--- a/packages/merchant-backoffice-ui/src/paths/admin/list/TableActive.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/admin/list/TableActive.tsx
@@ -19,17 +19,17 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { h, VNode } from "preact";
import { StateUpdater, useEffect, useState } from "preact/hooks";
-import { MerchantBackend } from "../../../declaration.js";
import { useSessionContext } from "../../../context/session.js";
interface Props {
- instances: MerchantBackend.Instances.Instance[];
+ instances: TalerMerchantApi.Instance[];
onUpdate: (id: string) => void;
- onDelete: (id: MerchantBackend.Instances.Instance) => void;
- onPurge: (id: MerchantBackend.Instances.Instance) => void;
+ onDelete: (id: TalerMerchantApi.Instance) => void;
+ onPurge: (id: TalerMerchantApi.Instance) => void;
onCreate: () => void;
selected?: boolean;
}
@@ -128,10 +128,10 @@ export function CardTable({
}
interface TableProps {
rowSelection: string[];
- instances: MerchantBackend.Instances.Instance[];
+ instances: TalerMerchantApi.Instance[];
onUpdate: (id: string) => void;
- onDelete: (id: MerchantBackend.Instances.Instance) => void;
- onPurge: (id: MerchantBackend.Instances.Instance) => void;
+ onDelete: (id: TalerMerchantApi.Instance) => void;
+ onPurge: (id: TalerMerchantApi.Instance) => void;
rowSelectionHandler: StateUpdater<string[]>;
}
@@ -265,7 +265,7 @@ function EmptyTable(): VNode {
}
interface Actions {
- element: MerchantBackend.Instances.Instance;
+ element: TalerMerchantApi.Instance;
type: "DELETE" | "UPDATE";
}
@@ -274,7 +274,7 @@ function notEmpty<TValue>(value: TValue | null | undefined): value is TValue {
}
function buildActions(
- instances: MerchantBackend.Instances.Instance[],
+ instances: TalerMerchantApi.Instance[],
selected: string[],
action: "DELETE",
): Actions[] {
diff --git a/packages/merchant-backoffice-ui/src/paths/admin/list/View.tsx b/packages/merchant-backoffice-ui/src/paths/admin/list/View.tsx
index 09ad338d2..940d14334 100644
--- a/packages/merchant-backoffice-ui/src/paths/admin/list/View.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/admin/list/View.tsx
@@ -19,18 +19,18 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { h, VNode } from "preact";
import { useState } from "preact/hooks";
-import { MerchantBackend } from "../../../declaration.js";
import { CardTable as CardTableActive } from "./TableActive.js";
interface Props {
- instances: MerchantBackend.Instances.Instance[];
+ instances: TalerMerchantApi.Instance[];
onCreate: () => void;
onUpdate: (id: string) => void;
- onDelete: (id: MerchantBackend.Instances.Instance) => void;
- onPurge: (id: MerchantBackend.Instances.Instance) => void;
+ onDelete: (id: TalerMerchantApi.Instance) => void;
+ onPurge: (id: TalerMerchantApi.Instance) => void;
selected?: boolean;
}
diff --git a/packages/merchant-backoffice-ui/src/paths/admin/list/index.tsx b/packages/merchant-backoffice-ui/src/paths/admin/list/index.tsx
index 561e275ad..d3fa78b65 100644
--- a/packages/merchant-backoffice-ui/src/paths/admin/list/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/admin/list/index.tsx
@@ -19,29 +19,28 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import {
ErrorType,
HttpError,
useTranslationContext,
} from "@gnu-taler/web-util/browser";
-import { Fragment, h, VNode } from "preact";
+import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../components/exception/loading.js";
import { NotificationCard } from "../../../components/menu/index.js";
import { DeleteModal, PurgeModal } from "../../../components/modal/index.js";
-import { MerchantBackend } from "../../../declaration.js";
import { useAdminAPI, useBackendInstances } from "../../../hooks/instance.js";
import { Notification } from "../../../utils/types.js";
import { View } from "./View.js";
-import { HttpStatusCode } from "@gnu-taler/taler-util";
interface Props {
onCreate: () => void;
onUpdate: (id: string) => void;
- instances: MerchantBackend.Instances.Instance[];
+ instances: TalerMerchantApi.Instance[];
onUnauthorized: () => VNode;
onNotFound: () => VNode;
- onLoadError: (error: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (error: HttpError<TalerErrorDetail>) => VNode;
}
export default function Instances({
@@ -53,9 +52,9 @@ export default function Instances({
}: Props): VNode {
const result = useBackendInstances();
const [deleting, setDeleting] =
- useState<MerchantBackend.Instances.Instance | null>(null);
+ useState<TalerMerchantApi.Instance | null>(null);
const [purging, setPurging] =
- useState<MerchantBackend.Instances.Instance | null>(null);
+ useState<TalerMerchantApi.Instance | null>(null);
const { deleteInstance, purgeInstance } = useAdminAPI();
const [notif, setNotif] = useState<Notification | undefined>(undefined);
const { i18n } = useTranslationContext();
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/accounts/create/CreatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/accounts/create/CreatePage.tsx
index bf16686f4..dd77d609c 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/accounts/create/CreatePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/accounts/create/CreatePage.tsx
@@ -19,6 +19,7 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { Fragment, h, VNode } from "preact";
import { useState } from "preact/hooks";
@@ -30,13 +31,12 @@ import {
import { Input } from "../../../../components/form/Input.js";
import { InputPaytoForm } from "../../../../components/form/InputPaytoForm.js";
import { InputSelector } from "../../../../components/form/InputSelector.js";
-import { MerchantBackend } from "../../../../declaration.js";
import { undefinedIfEmpty } from "../../../../utils/table.js";
-type Entity = MerchantBackend.BankAccounts.AccountAddDetails & { repeatPassword: string };
+type Entity = TalerMerchantApi.AccountAddDetails & { repeatPassword: string };
interface Props {
- onCreate: (d: MerchantBackend.BankAccounts.AccountAddDetails) => Promise<void>;
+ onCreate: (d: TalerMerchantApi.AccountAddDetails) => Promise<void>;
onBack?: () => void;
}
@@ -89,7 +89,7 @@ export function CreatePage({ onCreate, onBack }: Props): VNode {
const submitForm = () => {
if (hasErrors) return Promise.reject();
const credit_facade_url = !state.credit_facade_url ? undefined : new URL("/", state.credit_facade_url).href
- const credit_facade_credentials: MerchantBackend.BankAccounts.FacadeCredentials | undefined =
+ const credit_facade_credentials: TalerMerchantApi.FacadeCredentials | undefined =
credit_facade_url == undefined ? undefined :
state.credit_facade_credentials?.type === "basic" ? {
type: "basic",
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/accounts/create/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/accounts/create/index.tsx
index a2351964a..b12b95f2f 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/accounts/create/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/accounts/create/index.tsx
@@ -19,16 +19,16 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { Fragment, h, VNode } from "preact";
import { useState } from "preact/hooks";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend } from "../../../../declaration.js";
import { useBankAccountAPI } from "../../../../hooks/bank.js";
import { Notification } from "../../../../utils/types.js";
import { CreatePage } from "./CreatePage.js";
-export type Entity = MerchantBackend.BankAccounts.AccountAddDetails;
+export type Entity = TalerMerchantApi.AccountAddDetails;
interface Props {
onBack?: () => void;
onConfirm: () => void;
@@ -46,7 +46,7 @@ export default function CreateValidator({ onConfirm, onBack }: Props): VNode {
onBack={onBack}
onCreate={(request: Entity) => {
return createBankAccount(request)
- .then((d) => {
+ .then(() => {
onConfirm()
})
.catch((error) => {
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/accounts/list/ListPage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/accounts/list/ListPage.tsx
index 3359d1a95..50cf0fe70 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/accounts/list/ListPage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/accounts/list/ListPage.tsx
@@ -19,18 +19,17 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { h, VNode } from "preact";
-import { MerchantBackend } from "../../../../declaration.js";
-import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { CardTable } from "./Table.js";
export interface Props {
- devices: MerchantBackend.BankAccounts.BankAccountEntry[];
+ devices: TalerMerchantApi.BankAccountEntry[];
onLoadMoreBefore?: () => void;
onLoadMoreAfter?: () => void;
onCreate: () => void;
- onDelete: (e: MerchantBackend.BankAccounts.BankAccountEntry) => void;
- onSelect: (e: MerchantBackend.BankAccounts.BankAccountEntry) => void;
+ onDelete: (e: TalerMerchantApi.BankAccountEntry) => void;
+ onSelect: (e: TalerMerchantApi.BankAccountEntry) => void;
}
export function ListPage({
@@ -41,9 +40,7 @@ export function ListPage({
onLoadMoreBefore,
onLoadMoreAfter,
}: Props): VNode {
- const form = { payto_uri: "" };
- const { i18n } = useTranslationContext();
return (
<section class="section is-main-section">
<CardTable
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/accounts/list/Table.tsx b/packages/merchant-backoffice-ui/src/paths/instance/accounts/list/Table.tsx
index 95e684b7b..690e3a2fc 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/accounts/list/Table.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/accounts/list/Table.tsx
@@ -19,13 +19,12 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { parsePaytoUri, PaytoType, PaytoUri, PaytoUriBitcoin, PaytoUriIBAN, PaytoUriTalerBank, PaytoUriUnknown, TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { Fragment, h, VNode } from "preact";
import { StateUpdater, useState } from "preact/hooks";
-import { MerchantBackend } from "../../../../declaration.js";
-import { parsePaytoUri, PaytoType, PaytoUri, PaytoUriBitcoin, PaytoUriIBAN, PaytoUriTalerBank, PaytoUriUnknown } from "@gnu-taler/taler-util";
-type Entity = MerchantBackend.BankAccounts.BankAccountEntry;
+type Entity = TalerMerchantApi.BankAccountEntry;
interface Props {
accounts: Entity[];
@@ -110,11 +109,6 @@ interface TableProps {
onLoadMoreAfter?: () => void;
}
-function toggleSelected<T>(id: T): (prev: T[]) => T[] {
- return (prev: T[]): T[] =>
- prev.indexOf(id) == -1 ? [...prev, id] : prev.filter((e) => e != id);
-}
-
function Table({
accounts,
onLoadMoreAfter,
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/accounts/list/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/accounts/list/index.tsx
index 51139c3f3..72efa08c9 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/accounts/list/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/accounts/list/index.tsx
@@ -19,7 +19,7 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { HttpStatusCode } from "@gnu-taler/taler-util";
+import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import {
ErrorType,
HttpError,
@@ -29,15 +29,13 @@ import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../../components/exception/loading.js";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend } from "../../../../declaration.js";
-import { useInstanceOtpDevices, useOtpDeviceAPI } from "../../../../hooks/otp.js";
+import { useBankAccountAPI, useInstanceBankAccounts } from "../../../../hooks/bank.js";
import { Notification } from "../../../../utils/types.js";
import { ListPage } from "./ListPage.js";
-import { useBankAccountAPI, useInstanceBankAccounts } from "../../../../hooks/bank.js";
interface Props {
onUnauthorized: () => VNode;
- onLoadError: (error: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (error: HttpError<TalerErrorDetail>) => VNode;
onNotFound: () => VNode;
onCreate: () => void;
onSelect: (id: string) => void;
@@ -91,7 +89,7 @@ export default function ListOtpDevices({
onSelect={(e) => {
onSelect(e.h_wire);
}}
- onDelete={(e: MerchantBackend.BankAccounts.BankAccountEntry) =>
+ onDelete={(e: TalerMerchantApi.BankAccountEntry) =>
deleteBankAccount(e.h_wire)
.then(() =>
setNotif({
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/accounts/update/UpdatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/accounts/update/UpdatePage.tsx
index 6b67a79a4..6dd264f29 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/accounts/update/UpdatePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/accounts/update/UpdatePage.tsx
@@ -19,6 +19,7 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { Fragment, h, VNode } from "preact";
import { useState } from "preact/hooks";
@@ -28,17 +29,16 @@ import {
FormProvider,
} from "../../../../components/form/FormProvider.js";
import { Input } from "../../../../components/form/Input.js";
-import { MerchantBackend, WithId } from "../../../../declaration.js";
-import { InputSelector } from "../../../../components/form/InputSelector.js";
import { InputPaytoForm } from "../../../../components/form/InputPaytoForm.js";
+import { InputSelector } from "../../../../components/form/InputSelector.js";
import { undefinedIfEmpty } from "../../../../utils/table.js";
-type Entity = MerchantBackend.BankAccounts.BankAccountEntry
+type Entity = TalerMerchantApi.BankAccountEntry
& WithId;
const accountAuthType = ["unedit", "none", "basic"];
interface Props {
- onUpdate: (d: MerchantBackend.BankAccounts.AccountPatchDetails) => Promise<void>;
+ onUpdate: (d: TalerMerchantApi.AccountPatchDetails) => Promise<void>;
onBack?: () => void;
account: Entity;
}
@@ -47,7 +47,7 @@ interface Props {
export function UpdatePage({ account, onUpdate, onBack }: Props): VNode {
const { i18n } = useTranslationContext();
- const [state, setState] = useState<Partial<MerchantBackend.BankAccounts.AccountPatchDetails>>(account);
+ const [state, setState] = useState<Partial<TalerMerchantApi.AccountPatchDetails>>(account);
// @ts-expect-error "unedit" is fine since is part of the accountAuthType values
if (state.credit_facade_credentials?.type === "unedit") {
@@ -55,7 +55,7 @@ export function UpdatePage({ account, onUpdate, onBack }: Props): VNode {
state.credit_facade_credentials = undefined
}
- const errors: FormErrors<MerchantBackend.BankAccounts.AccountPatchDetails> = {
+ const errors: FormErrors<TalerMerchantApi.AccountPatchDetails> = {
credit_facade_url: !state.credit_facade_url ? undefined : !isValidURL(state.credit_facade_url) ? i18n.str`invalid url` : undefined,
credit_facade_credentials: undefinedIfEmpty({
@@ -81,7 +81,7 @@ export function UpdatePage({ account, onUpdate, onBack }: Props): VNode {
const credit_facade_url = !state.credit_facade_url ? undefined : new URL("/", state.credit_facade_url).href
- const credit_facade_credentials: MerchantBackend.BankAccounts.FacadeCredentials | undefined =
+ const credit_facade_credentials: TalerMerchantApi.FacadeCredentials | undefined =
credit_facade_url == undefined || state.credit_facade_credentials === undefined ? undefined :
state.credit_facade_credentials.type === "basic" ? {
type: "basic",
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/accounts/update/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/accounts/update/index.tsx
index ca0b692a3..742d13b67 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/accounts/update/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/accounts/update/index.tsx
@@ -19,7 +19,7 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { HttpStatusCode } from "@gnu-taler/taler-util";
+import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import {
ErrorType,
HttpError,
@@ -29,19 +29,18 @@ import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../../components/exception/loading.js";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend, WithId } from "../../../../declaration.js";
import { useBankAccountAPI, useBankAccountDetails } from "../../../../hooks/bank.js";
import { Notification } from "../../../../utils/types.js";
import { UpdatePage } from "./UpdatePage.js";
-export type Entity = MerchantBackend.BankAccounts.AccountPatchDetails & WithId;
+export type Entity = TalerMerchantApi.AccountPatchDetails & WithId;
interface Props {
onBack?: () => void;
onConfirm: () => void;
onUnauthorized: () => VNode;
onNotFound: () => VNode;
- onLoadError: (e: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (e: HttpError<TalerErrorDetail>) => VNode;
bid: string;
}
export default function UpdateValidator({
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/details/DetailPage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/details/DetailPage.tsx
index 6e9b51106..3168c7cc4 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/details/DetailPage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/details/DetailPage.tsx
@@ -24,17 +24,17 @@ import { h, VNode } from "preact";
import { useState } from "preact/hooks";
import { FormProvider } from "../../../components/form/FormProvider.js";
import { Input } from "../../../components/form/Input.js";
-import { MerchantBackend } from "../../../declaration.js";
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
-type Entity = MerchantBackend.Instances.InstanceReconfigurationMessage;
+type Entity = TalerMerchantApi.InstanceReconfigurationMessage;
interface Props {
onUpdate: () => void;
onDelete: () => void;
- selected: MerchantBackend.Instances.QueryInstancesResponse;
+ selected: TalerMerchantApi.QueryInstancesResponse;
}
function convert(
- from: MerchantBackend.Instances.QueryInstancesResponse,
+ from: TalerMerchantApi.QueryInstancesResponse,
): Entity {
const defaults = {
default_wire_fee_amortization: 1,
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/details/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/details/index.tsx
index 2a37ee588..b76abee30 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/details/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/details/index.tsx
@@ -18,15 +18,14 @@ import { Fragment, h, VNode } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../components/exception/loading.js";
import { DeleteModal } from "../../../components/modal/index.js";
-import { MerchantBackend } from "../../../declaration.js";
import { useInstanceAPI, useInstanceDetails } from "../../../hooks/instance.js";
import { DetailPage } from "./DetailPage.js";
-import { HttpStatusCode } from "@gnu-taler/taler-util";
+import { HttpStatusCode, TalerErrorDetail } from "@gnu-taler/taler-util";
import { useSessionContext } from "../../../context/session.js";
interface Props {
onUnauthorized: () => VNode;
- onLoadError: (error: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (error: HttpError<TalerErrorDetail>) => VNode;
onUpdate: () => void;
onNotFound: () => VNode;
onDelete: () => void;
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/details/stories.tsx b/packages/merchant-backoffice-ui/src/paths/instance/details/stories.tsx
index 94e19bb6e..6cd2d9491 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/details/stories.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/details/stories.tsx
@@ -70,7 +70,7 @@ function createExample<Props>(
export const Example = createExample(TestedComponent, {
selected: {
name: "name",
- auth: { method: "external" },
+ auth: { type: "external" },
address: {},
user_type: "business",
jurisdiction: {},
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/kyc/list/ListPage.stories.tsx b/packages/merchant-backoffice-ui/src/paths/instance/kyc/list/ListPage.stories.tsx
index a914639e5..046636b4b 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/kyc/list/ListPage.stories.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/kyc/list/ListPage.stories.tsx
@@ -19,10 +19,9 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { h, VNode, FunctionalComponent } from "preact";
-import { ListPage as TestedComponent } from "./ListPage.js";
+import { PaytoString } from "@gnu-taler/taler-util";
import * as tests from "@gnu-taler/web-util/testing";
-import { MerchantBackend } from "../../../../declaration.js";
+import { ListPage as TestedComponent } from "./ListPage.js";
export default {
title: "Pages/KYC/List",
@@ -40,19 +39,19 @@ export const Example = tests.createExample(TestedComponent, {
{
aml_status: 0,
exchange_url: "http://exchange.taler",
- payto_uri: "payto://iban/de123123123",
+ payto_uri: "payto://iban/de123123123" as PaytoString,
kyc_url: "http://exchange.taler/kyc",
},
{
aml_status: 1,
exchange_url: "http://exchange.taler",
- payto_uri: "payto://iban/de123123123",
+ payto_uri: "payto://iban/de123123123" as PaytoString,
},
{
aml_status: 2,
exchange_url: "http://exchange.taler",
- payto_uri: "payto://iban/de123123123",
+ payto_uri: "payto://iban/de123123123" as PaytoString,
},
],
- } as MerchantBackend.KYC.AccountKycRedirects,
+ },
});
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/kyc/list/ListPage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/kyc/list/ListPage.tsx
index 2ec0137d9..3eeed1d7b 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/kyc/list/ListPage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/kyc/list/ListPage.tsx
@@ -19,12 +19,12 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { h, VNode } from "preact";
-import { MerchantBackend } from "../../../../declaration.js";
export interface Props {
- status: MerchantBackend.KYC.AccountKycRedirects;
+ status: TalerMerchantApi.AccountKycRedirects;
}
export function ListPage({ status }: Props): VNode {
@@ -85,11 +85,11 @@ export function ListPage({ status }: Props): VNode {
);
}
interface PendingTableProps {
- entries: MerchantBackend.KYC.MerchantAccountKycRedirect[];
+ entries: TalerMerchantApi.MerchantAccountKycRedirect[];
}
interface TimedOutTableProps {
- entries: MerchantBackend.KYC.ExchangeKycTimeout[];
+ entries: TalerMerchantApi.ExchangeKycTimeout[];
}
function PendingTable({ entries }: PendingTableProps): VNode {
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/kyc/list/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/kyc/list/index.tsx
index 664f05f66..555eb47b9 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/kyc/list/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/kyc/list/index.tsx
@@ -22,14 +22,13 @@
import { ErrorType, HttpError } from "@gnu-taler/web-util/browser";
import { h, VNode } from "preact";
import { Loading } from "../../../../components/exception/loading.js";
-import { MerchantBackend } from "../../../../declaration.js";
import { useInstanceKYCDetails } from "../../../../hooks/instance.js";
import { ListPage } from "./ListPage.js";
-import { HttpStatusCode } from "@gnu-taler/taler-util";
+import { HttpStatusCode, TalerErrorDetail } from "@gnu-taler/taler-util";
interface Props {
onUnauthorized: () => VNode;
- onLoadError: (error: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (error: HttpError<TalerErrorDetail>) => VNode;
onNotFound: () => VNode;
}
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 fca123773..041ec73e7 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
@@ -21,8 +21,10 @@
import {
AbsoluteTime,
+ AmountString,
Amounts,
Duration,
+ TalerMerchantApi,
TalerProtocolDuration,
} from "@gnu-taler/taler-util";
import {
@@ -47,16 +49,15 @@ import { InputToggle } from "../../../../components/form/InputToggle.js";
import { InventoryProductForm } from "../../../../components/product/InventoryProductForm.js";
import { NonInventoryProductFrom } from "../../../../components/product/NonInventoryProductForm.js";
import { ProductList } from "../../../../components/product/ProductList.js";
-import { MerchantBackend, WithId } from "../../../../declaration.js";
import { usePreference } from "../../../../hooks/preference.js";
import { rate } from "../../../../utils/amount.js";
import { undefinedIfEmpty } from "../../../../utils/table.js";
interface Props {
- onCreate: (d: MerchantBackend.Orders.PostOrderRequest) => void;
+ onCreate: (d: TalerMerchantApi.PostOrderRequest) => void;
onBack?: () => void;
instanceConfig: InstanceConfig;
- instanceInventory: (MerchantBackend.Products.ProductDetail & WithId)[];
+ instanceInventory: (TalerMerchantApi.ProductDetail & WithId)[];
}
interface InstanceConfig {
use_stefan: boolean;
@@ -92,7 +93,7 @@ function with_defaults(
}
interface ProductAndQuantity {
- product: MerchantBackend.Products.ProductDetail & WithId;
+ product: TalerMerchantApi.ProductDetail & WithId;
quantity: number;
}
export interface ProductMap {
@@ -106,7 +107,7 @@ interface Pricing {
}
interface Shipping {
delivery_date?: Date;
- delivery_location?: MerchantBackend.Location;
+ delivery_location?: TalerMerchantApi.Location;
fullfilment_url?: string;
}
interface Payments {
@@ -120,7 +121,7 @@ interface Payments {
}
interface Entity {
inventoryProducts: ProductMap;
- products: MerchantBackend.Product[];
+ products: TalerMerchantApi.Product[];
pricing: Partial<Pricing>;
payments: Partial<Payments>;
shipping: Partial<Shipping>;
@@ -214,43 +215,36 @@ export function CreatePage({
if (!value.payments) return;
if (!value.shipping) return;
- const request: MerchantBackend.Orders.PostOrderRequest = {
+ const request: TalerMerchantApi.PostOrderRequest = {
order: {
amount: order.pricing.order_price,
summary: order.pricing.summary,
products: productList,
extra: undefinedIfEmpty(value.extra),
- pay_deadline: !value.payments.pay_deadline
- ? i18n.str`required`
- : AbsoluteTime.toProtocolTimestamp(
- AbsoluteTime.addDuration(
- AbsoluteTime.now(),
- value.payments.pay_deadline,
- ),
- ), // : undefined,
- wire_transfer_deadline: value.payments.wire_transfer_deadline
- ? AbsoluteTime.toProtocolTimestamp(
- AbsoluteTime.addDuration(
- AbsoluteTime.now(),
- value.payments.wire_transfer_deadline,
- ),
- )
- : undefined,
- refund_deadline: value.payments.refund_deadline
- ? AbsoluteTime.toProtocolTimestamp(
- AbsoluteTime.addDuration(
- AbsoluteTime.now(),
- value.payments.refund_deadline,
- ),
- )
- : undefined,
+ pay_deadline: AbsoluteTime.toProtocolTimestamp(
+ AbsoluteTime.addDuration(
+ AbsoluteTime.now(),
+ value.payments.pay_deadline!,
+ ),
+ ),
+ wire_transfer_deadline: AbsoluteTime.toProtocolTimestamp(
+ AbsoluteTime.addDuration(
+ AbsoluteTime.now(),
+ value.payments.wire_transfer_deadline!,
+ ),
+ ),
+ refund_deadline: AbsoluteTime.toProtocolTimestamp(
+ AbsoluteTime.addDuration(
+ AbsoluteTime.now(),
+ value.payments.refund_deadline!,
+ ),
+ ),
auto_refund: value.payments.auto_refund_deadline
? Duration.toTalerProtocolDuration(
value.payments.auto_refund_deadline,
)
: undefined,
- max_fee: value.payments.max_fee as string,
-
+ max_fee: value.payments.max_fee as AmountString,
delivery_date: value.shipping.delivery_date
? { t_s: value.shipping.delivery_date.getTime() / 1000 }
: undefined,
@@ -269,7 +263,7 @@ export function CreatePage({
};
const addProductToTheInventoryList = (
- product: MerchantBackend.Products.ProductDetail & WithId,
+ product: TalerMerchantApi.ProductDetail & WithId,
quantity: number,
) => {
valueHandler((v) => {
@@ -287,7 +281,7 @@ export function CreatePage({
});
};
- const addNewProduct = async (product: MerchantBackend.Product) => {
+ const addNewProduct = async (product: TalerMerchantApi.Product) => {
return valueHandler((v) => {
const products = v.products ? [...v.products, product] : [];
return { ...v, products };
@@ -303,7 +297,7 @@ export function CreatePage({
};
const [editingProduct, setEditingProduct] = useState<
- MerchantBackend.Product | undefined
+ TalerMerchantApi.Product | undefined
>(undefined);
const totalPriceInventory = inventoryList.reduce((prev, cur) => {
@@ -314,7 +308,7 @@ export function CreatePage({
const totalPriceProducts = productList.reduce((prev, cur) => {
if (!cur.price) return zero;
const p = Amounts.parseOrThrow(cur.price);
- return Amounts.add(prev, Amounts.mult(p, cur.quantity).amount).amount;
+ return Amounts.add(prev, Amounts.mult(p, cur.quantity ?? 0).amount).amount;
}, zero);
const hasProducts = inventoryList.length > 0 || productList.length > 0;
@@ -343,9 +337,9 @@ export function CreatePage({
totalPrice.amount,
);
- const minAgeByProducts = allProducts.reduce(
+ const minAgeByProducts = inventoryList.reduce(
(cur, prev) =>
- !prev.minimum_age || cur > prev.minimum_age ? cur : prev.minimum_age,
+ !prev.product.minimum_age || cur > prev.product.minimum_age ? cur : prev.product.minimum_age,
0,
);
@@ -766,7 +760,7 @@ export function CreatePage({
);
}
-function asProduct(p: ProductAndQuantity): MerchantBackend.Product {
+function asProduct(p: ProductAndQuantity): TalerMerchantApi.Product {
return {
product_id: p.product.id,
image: p.product.image,
@@ -775,7 +769,6 @@ function asProduct(p: ProductAndQuantity): MerchantBackend.Product {
quantity: p.quantity,
description: p.product.description,
taxes: p.product.taxes,
- minimum_age: p.product.minimum_age,
};
}
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/orders/create/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/orders/create/index.tsx
index d2a8619ce..0f8618435 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/orders/create/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/orders/create/index.tsx
@@ -19,29 +19,28 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import { ErrorType, HttpError } from "@gnu-taler/web-util/browser";
-import { Fragment, h, VNode } from "preact";
+import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../../components/exception/loading.js";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend } from "../../../../declaration.js";
import { useInstanceDetails } from "../../../../hooks/instance.js";
import { useOrderAPI } from "../../../../hooks/order.js";
import { useInstanceProducts } from "../../../../hooks/product.js";
import { Notification } from "../../../../utils/types.js";
import { CreatePage } from "./CreatePage.js";
-import { HttpStatusCode } from "@gnu-taler/taler-util";
export type Entity = {
- request: MerchantBackend.Orders.PostOrderRequest;
- response: MerchantBackend.Orders.PostOrderResponse;
+ request: TalerMerchantApi.PostOrderRequest;
+ response: TalerMerchantApi.PostOrderResponse;
};
interface Props {
onBack?: () => void;
onConfirm: (id: string) => void;
onUnauthorized: () => VNode;
onNotFound: () => VNode;
- onLoadError: (error: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (error: HttpError<TalerErrorDetail>) => VNode;
}
export default function OrderCreate({
onConfirm,
@@ -93,7 +92,7 @@ export default function OrderCreate({
<CreatePage
onBack={onBack}
- onCreate={(request: MerchantBackend.Orders.PostOrderRequest) => {
+ onCreate={(request: TalerMerchantApi.PostOrderRequest) => {
createOrder(request)
.then((r) => {
return onConfirm(r.data.order_id)
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/orders/details/Detail.stories.tsx b/packages/merchant-backoffice-ui/src/paths/instance/orders/details/Detail.stories.tsx
index 63f0d5dc4..7d4877db9 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/orders/details/Detail.stories.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/orders/details/Detail.stories.tsx
@@ -19,9 +19,9 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { AmountString, TalerMerchantApi } from "@gnu-taler/taler-util";
import { addDays } from "date-fns";
-import { h, VNode, FunctionalComponent } from "preact";
-import { MerchantBackend } from "../../../../declaration.js";
+import { FunctionalComponent, h } from "preact";
import { DetailPage as TestedComponent } from "./DetailPage.js";
export default {
@@ -42,14 +42,13 @@ function createExample<Props>(
return r;
}
-const defaultContractTerm = {
- amount: "TESTKUDOS:10",
+const defaultContractTerm: TalerMerchantApi.ContractTerms = {
+ amount: "TESTKUDOS:10" as AmountString,
timestamp: {
t_s: new Date().getTime() / 1000,
},
- auditors: [],
exchanges: [],
- max_fee: "TESTKUDOS:1",
+ max_fee: "TESTKUDOS:1" as AmountString,
merchant: {} as any,
merchant_base_url: "http://merchant.url/",
order_id: "2021.165-03GDFC26Y1NNG",
@@ -66,7 +65,7 @@ const defaultContractTerm = {
},
wire_method: "x-taler-bank",
h_wire: "asd",
-} as MerchantBackend.ContractTerms;
+};
// contract_terms: defaultContracTerm,
export const Claimed = createExample(TestedComponent, {
@@ -83,15 +82,16 @@ export const PaidNotRefundable = createExample(TestedComponent, {
order_status: "paid",
contract_terms: defaultContractTerm,
refunded: false,
- deposit_total: "TESTKUDOS:10",
- exchange_ec: 0,
+ deposit_total: "TESTKUDOS:10" as AmountString,
+ exchange_code: 0,
order_status_url: "http://merchant.backend/status",
- exchange_hc: 0,
- refund_amount: "TESTKUDOS:0",
+ exchange_http_status: 0,
+ refund_amount: "TESTKUDOS:0" as AmountString,
refund_details: [],
refund_pending: false,
wire_details: [],
wired: false,
+ wire_reports: [],
},
});
@@ -106,12 +106,13 @@ export const PaidRefundable = createExample(TestedComponent, {
},
},
refunded: false,
- deposit_total: "TESTKUDOS:10",
- exchange_ec: 0,
+ deposit_total: "TESTKUDOS:10" as AmountString,
+ exchange_code: 0,
order_status_url: "http://merchant.backend/status",
- exchange_hc: 0,
- refund_amount: "TESTKUDOS:0",
+ exchange_http_status: 0,
+ refund_amount: "TESTKUDOS:0" as AmountString,
refund_details: [],
+ wire_reports: [],
refund_pending: false,
wire_details: [],
wired: false,
@@ -128,6 +129,6 @@ export const Unpaid = createExample(TestedComponent, {
},
summary: "text summary",
taler_pay_uri: "pay uri",
- total_amount: "TESTKUDOS:10",
+ total_amount: "TESTKUDOS:10" as AmountString,
},
});
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/orders/details/DetailPage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/orders/details/DetailPage.tsx
index 69e9df52e..4ed78b002 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/orders/details/DetailPage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/orders/details/DetailPage.tsx
@@ -19,7 +19,12 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { AmountJson, Amounts, stringifyRefundUri } from "@gnu-taler/taler-util";
+import {
+ AmountJson,
+ Amounts,
+ TalerMerchantApi,
+ stringifyRefundUri,
+} from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { format, formatDistance } from "date-fns";
import { Fragment, VNode, h } from "preact";
@@ -34,27 +39,29 @@ import { InputLocation } from "../../../../components/form/InputLocation.js";
import { TextField } from "../../../../components/form/TextField.js";
import { ProductList } from "../../../../components/product/ProductList.js";
import { useSessionContext } from "../../../../context/session.js";
-import { MerchantBackend } from "../../../../declaration.js";
-import { datetimeFormatForSettings, usePreference } from "../../../../hooks/preference.js";
+import {
+ datetimeFormatForSettings,
+ usePreference,
+} from "../../../../hooks/preference.js";
import { mergeRefunds } from "../../../../utils/amount.js";
import { RefundModal } from "../list/Table.js";
import { Event, Timeline } from "./Timeline.js";
-type Entity = MerchantBackend.Orders.MerchantOrderStatusResponse;
-type CT = MerchantBackend.ContractTerms;
+type Entity = TalerMerchantApi.MerchantOrderStatusResponse;
+type CT = TalerMerchantApi.ContractTerms;
interface Props {
onBack: () => void;
selected: Entity;
id: string;
- onRefund: (id: string, value: MerchantBackend.Orders.RefundRequest) => void;
+ onRefund: (id: string, value: TalerMerchantApi.RefundRequest) => void;
}
-type Paid = MerchantBackend.Orders.CheckPaymentPaidResponse & {
+type Paid = TalerMerchantApi.CheckPaymentPaidResponse & {
refund_taken: string;
};
-type Unpaid = MerchantBackend.Orders.CheckPaymentUnpaidResponse;
-type Claimed = MerchantBackend.Orders.CheckPaymentClaimedResponse;
+type Unpaid = TalerMerchantApi.CheckPaymentUnpaidResponse;
+type Claimed = TalerMerchantApi.CheckPaymentClaimedResponse;
function ContractTerms({ value }: { value: CT }) {
const { i18n } = useTranslationContext();
@@ -149,7 +156,7 @@ function ClaimedPage({
order,
}: {
id: string;
- order: MerchantBackend.Orders.CheckPaymentClaimedResponse;
+ order: TalerMerchantApi.CheckPaymentClaimedResponse;
}) {
const events: Event[] = [];
if (order.contract_terms.timestamp.t_s !== "never") {
@@ -193,7 +200,7 @@ function ClaimedPage({
const [value, valueHandler] = useState<Partial<Claimed>>(order);
const { i18n } = useTranslationContext();
- const [settings] = usePreference()
+ const [settings] = usePreference();
return (
<div>
@@ -237,10 +244,14 @@ function ClaimedPage({
<b>
<i18n.Translate>claimed at</i18n.Translate>:
</b>{" "}
- {format(
- new Date(order.contract_terms.timestamp.t_s * 1000),
- datetimeFormatForSettings(settings)
- )}
+ {order.contract_terms.timestamp.t_s === "never"
+ ? "never"
+ : format(
+ new Date(
+ order.contract_terms.timestamp.t_s * 1000,
+ ),
+ datetimeFormatForSettings(settings),
+ )}
</p>
</div>
</div>
@@ -311,7 +322,7 @@ function PaidPage({
onRefund,
}: {
id: string;
- order: MerchantBackend.Orders.CheckPaymentPaidResponse;
+ order: TalerMerchantApi.CheckPaymentPaidResponse;
onRefund: (id: string) => void;
}) {
const events: Event[] = [];
@@ -365,8 +376,8 @@ function PaidPage({
});
if (order.wire_details && order.wire_details.length) {
if (order.wire_details.length > 1) {
- let last: MerchantBackend.Orders.TransactionWireTransfer | null = null;
- let first: MerchantBackend.Orders.TransactionWireTransfer | null = null;
+ let last: TalerMerchantApi.TransactionWireTransfer | null = null;
+ let first: TalerMerchantApi.TransactionWireTransfer | null = null;
let total: AmountJson | null = null;
order.wire_details.forEach((w) => {
@@ -410,10 +421,10 @@ function PaidPage({
}
}
- const now = new Date()
+ const now = new Date();
const nextEvent = events.find((e) => {
- return e.when.getTime() > now.getTime()
- })
+ return e.when.getTime() > now.getTime();
+ });
const [value, valueHandler] = useState<Partial<Paid>>(order);
const {
@@ -422,9 +433,10 @@ function PaidPage({
const refundurl = stringifyRefundUri({
merchantBaseUrl: backendUrl,
- orderId: order.contract_terms.order_id
- })
+ orderId: order.contract_terms.order_id,
+ });
const refundable =
+ order.contract_terms.refund_deadline.t_s !== "never" &&
new Date().getTime() < order.contract_terms.refund_deadline.t_s * 1000;
const { i18n } = useTranslationContext();
@@ -506,15 +518,16 @@ function PaidPage({
textOverflow: "ellipsis",
}}
>
- {nextEvent &&
+ {nextEvent && (
<p>
- <i18n.Translate>Next event in </i18n.Translate> {formatDistance(
+ <i18n.Translate>Next event in </i18n.Translate>{" "}
+ {formatDistance(
nextEvent.when,
new Date(),
// "yyyy/MM/dd HH:mm:ss",
)}
</p>
- }
+ )}
</div>
</div>
</div>
@@ -610,11 +623,11 @@ function UnpaidPage({
order,
}: {
id: string;
- order: MerchantBackend.Orders.CheckPaymentUnpaidResponse;
+ order: TalerMerchantApi.CheckPaymentUnpaidResponse;
}) {
const [value, valueHandler] = useState<Partial<Unpaid>>(order);
const { i18n } = useTranslationContext();
- const [settings] = usePreference()
+ const [settings] = usePreference();
return (
<div>
<section class="hero is-hero-bar">
@@ -662,9 +675,9 @@ function UnpaidPage({
{order.creation_time.t_s === "never"
? "never"
: format(
- new Date(order.creation_time.t_s * 1000),
- datetimeFormatForSettings(settings)
- )}
+ new Date(order.creation_time.t_s * 1000),
+ datetimeFormatForSettings(settings),
+ )}
</p>
</div>
</div>
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/orders/details/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/orders/details/index.tsx
index dfeaa4447..a7fe1801b 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/orders/details/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/orders/details/index.tsx
@@ -13,20 +13,19 @@
You should have received a copy of the GNU General Public License along with
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
+import { HttpStatusCode, TalerErrorDetail } from "@gnu-taler/taler-util";
import {
- useTranslationContext,
- HttpError,
ErrorType,
+ HttpError,
+ useTranslationContext,
} from "@gnu-taler/web-util/browser";
-import { Fragment, h, VNode } from "preact";
+import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../../components/exception/loading.js";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend } from "../../../../declaration.js";
import { useOrderAPI, useOrderDetails } from "../../../../hooks/order.js";
import { Notification } from "../../../../utils/types.js";
import { DetailPage } from "./DetailPage.js";
-import { HttpStatusCode } from "@gnu-taler/taler-util";
export interface Props {
oid: string;
@@ -34,7 +33,7 @@ export interface Props {
onBack: () => void;
onUnauthorized: () => VNode;
onNotFound: () => VNode;
- onLoadError: (error: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (error: HttpError<TalerErrorDetail>) => VNode;
}
export default function Update({
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/orders/list/List.stories.tsx b/packages/merchant-backoffice-ui/src/paths/instance/orders/list/List.stories.tsx
index 9df006083..5c9969689 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/orders/list/List.stories.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/orders/list/List.stories.tsx
@@ -19,8 +19,9 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { h, VNode, FunctionalComponent } from "preact";
+import { FunctionalComponent, h } from "preact";
import { ListPage as TestedComponent } from "./ListPage.js";
+import { AmountString } from "@gnu-taler/taler-util";
export default {
title: "Pages/Order/List",
@@ -54,7 +55,7 @@ export const Example = createExample(TestedComponent, {
orders: [
{
id: "123",
- amount: "TESTKUDOS:10",
+ amount: "TESTKUDOS:10" as AmountString,
paid: false,
refundable: true,
row_id: 1,
@@ -66,7 +67,7 @@ export const Example = createExample(TestedComponent, {
},
{
id: "234",
- amount: "TESTKUDOS:12",
+ amount: "TESTKUDOS:12" as AmountString,
paid: true,
refundable: true,
row_id: 2,
@@ -79,7 +80,7 @@ export const Example = createExample(TestedComponent, {
},
{
id: "456",
- amount: "TESTKUDOS:1",
+ amount: "TESTKUDOS:1" as AmountString,
paid: false,
refundable: false,
row_id: 3,
@@ -92,7 +93,7 @@ export const Example = createExample(TestedComponent, {
},
{
id: "234",
- amount: "TESTKUDOS:12",
+ amount: "TESTKUDOS:12" as AmountString,
paid: false,
refundable: false,
row_id: 4,
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/orders/list/ListPage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/orders/list/ListPage.tsx
index b45d468cb..7b88985dc 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/orders/list/ListPage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/orders/list/ListPage.tsx
@@ -19,14 +19,14 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { format } from "date-fns";
-import { h, VNode, Fragment } from "preact";
+import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { DatePicker } from "../../../../components/picker/DatePicker.js";
-import { MerchantBackend, WithId } from "../../../../declaration.js";
-import { CardTable } from "./Table.js";
import { dateFormatForSettings, usePreference } from "../../../../hooks/preference.js";
+import { CardTable } from "./Table.js";
export interface ListPageProps {
onShowAll: () => void;
@@ -46,14 +46,14 @@ export interface ListPageProps {
jumpToDate?: Date;
onSelectDate: (date?: Date) => void;
- orders: (MerchantBackend.Orders.OrderHistoryEntry & WithId)[];
+ orders: (TalerMerchantApi.OrderHistoryEntry & WithId)[];
onLoadMoreBefore?: () => void;
hasMoreBefore?: boolean;
hasMoreAfter?: boolean;
onLoadMoreAfter?: () => void;
- onSelectOrder: (o: MerchantBackend.Orders.OrderHistoryEntry & WithId) => void;
- onRefundOrder: (o: MerchantBackend.Orders.OrderHistoryEntry & WithId) => void;
+ onSelectOrder: (o: TalerMerchantApi.OrderHistoryEntry & WithId) => void;
+ onRefundOrder: (o: TalerMerchantApi.OrderHistoryEntry & WithId) => void;
onCreate: () => void;
}
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/orders/list/Table.tsx b/packages/merchant-backoffice-ui/src/paths/instance/orders/list/Table.tsx
index cebc4afe6..c3df81b87 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/orders/list/Table.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/orders/list/Table.tsx
@@ -19,13 +19,13 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { Amounts } from "@gnu-taler/taler-util";
+import { Amounts, TalerMerchantApi } from "@gnu-taler/taler-util";
import {
useMerchantApiContext,
useTranslationContext,
} from "@gnu-taler/web-util/browser";
import { format } from "date-fns";
-import { h, VNode } from "preact";
+import { VNode, h } from "preact";
import { StateUpdater, useState } from "preact/hooks";
import {
FormErrors,
@@ -36,14 +36,13 @@ import { InputCurrency } from "../../../../components/form/InputCurrency.js";
import { InputGroup } from "../../../../components/form/InputGroup.js";
import { InputSelector } from "../../../../components/form/InputSelector.js";
import { ConfirmModal } from "../../../../components/modal/index.js";
-import { MerchantBackend, WithId } from "../../../../declaration.js";
-import { mergeRefunds } from "../../../../utils/amount.js";
import {
datetimeFormatForSettings,
usePreference,
} from "../../../../hooks/preference.js";
+import { mergeRefunds } from "../../../../utils/amount.js";
-type Entity = MerchantBackend.Orders.OrderHistoryEntry & WithId;
+type Entity = TalerMerchantApi.OrderHistoryEntry & WithId;
interface Props {
orders: Entity[];
onRefund: (value: Entity) => void;
@@ -248,8 +247,8 @@ function EmptyTable(): VNode {
interface RefundModalProps {
onCancel: () => void;
- onConfirm: (value: MerchantBackend.Orders.RefundRequest) => void;
- order: MerchantBackend.Orders.MerchantOrderStatusResponse;
+ onConfirm: (value: TalerMerchantApi.RefundRequest) => void;
+ order: TalerMerchantApi.MerchantOrderStatusResponse;
}
export function RefundModal({
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/orders/list/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/orders/list/index.tsx
index 369ef8c8b..cd62685ca 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/orders/list/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/orders/list/index.tsx
@@ -19,16 +19,17 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import {
ErrorType,
HttpError,
useTranslationContext,
} from "@gnu-taler/web-util/browser";
-import { Fragment, h, VNode } from "preact";
+import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../../components/exception/loading.js";
+import { JumpToElementById } from "../../../../components/form/JumpToElementById.js";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend } from "../../../../declaration.js";
import {
InstanceOrderFilter,
useInstanceOrders,
@@ -38,12 +39,10 @@ import {
import { Notification } from "../../../../utils/types.js";
import { ListPage } from "./ListPage.js";
import { RefundModal } from "./Table.js";
-import { HttpStatusCode } from "@gnu-taler/taler-util";
-import { JumpToElementById } from "../../../../components/form/JumpToElementById.js";
interface Props {
onUnauthorized: () => VNode;
- onLoadError: (error: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (error: HttpError<TalerErrorDetail>) => VNode;
onNotFound: () => VNode;
onSelect: (id: string) => void;
onCreate: () => void;
@@ -58,7 +57,7 @@ export default function OrderList({
}: Props): VNode {
const [filter, setFilter] = useState<InstanceOrderFilter>({ paid: "no" });
const [orderToBeRefunded, setOrderToBeRefunded] = useState<
- MerchantBackend.Orders.OrderHistoryEntry | undefined
+ TalerMerchantApi.OrderHistoryEntry | undefined
>(undefined);
const setNewDate = (date?: Date): void =>
@@ -186,10 +185,10 @@ export default function OrderList({
interface RefundProps {
id: string;
onUnauthorized: () => VNode;
- onLoadError: (error: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (error: HttpError<TalerErrorDetail>) => VNode;
onNotFound: () => VNode;
onCancel: () => void;
- onConfirm: (m: MerchantBackend.Orders.RefundRequest) => void;
+ onConfirm: (m: TalerMerchantApi.RefundRequest) => void;
}
function RefundModalForTable({
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/create/CreatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/create/CreatePage.tsx
index 930a0d82c..d5522c2d4 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/create/CreatePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/create/CreatePage.tsx
@@ -20,6 +20,7 @@
*/
import {
+ TalerMerchantApi,
isRfc3548Base32Charset,
randomRfc3548Base32Key,
} from "@gnu-taler/taler-util";
@@ -34,9 +35,8 @@ import {
import { Input } from "../../../../components/form/Input.js";
import { InputSelector } from "../../../../components/form/InputSelector.js";
import { InputWithAddon } from "../../../../components/form/InputWithAddon.js";
-import { MerchantBackend } from "../../../../declaration.js";
-type Entity = MerchantBackend.OTP.OtpDeviceAddDetails;
+type Entity = TalerMerchantApi.OtpDeviceAddDetails;
interface Props {
onCreate: (d: Entity) => Promise<void>;
@@ -112,7 +112,7 @@ export function CreatePage({ onCreate, onBack }: Props): VNode {
toStr={(v) => algorithmsNames[v]}
fromStr={(v) => Number(v)}
/>
- {state.otp_algorithm && state.otp_algorithm > 0 ? (
+ {state.otp_algorithm ? (
<Fragment>
<InputWithAddon<Entity>
expand
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/create/CreatedSuccessfully.tsx b/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/create/CreatedSuccessfully.tsx
index 60abc3ca6..b1b4a0cf7 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/create/CreatedSuccessfully.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/create/CreatedSuccessfully.tsx
@@ -14,14 +14,14 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { VNode, h } from "preact";
import { QR } from "../../../../components/exception/QR.js";
import { CreatedSuccessfully as Template } from "../../../../components/notifications/CreatedSuccessfully.js";
import { useSessionContext } from "../../../../context/session.js";
-import { MerchantBackend } from "../../../../declaration.js";
-type Entity = MerchantBackend.OTP.OtpDeviceAddDetails;
+type Entity = TalerMerchantApi.OtpDeviceAddDetails;
interface Props {
entity: Entity;
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/create/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/create/index.tsx
index f0b419f68..e4501a053 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/create/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/create/index.tsx
@@ -19,18 +19,17 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { Fragment, h, VNode } from "preact";
import { useState } from "preact/hooks";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend } from "../../../../declaration.js";
-import { useWebhookAPI } from "../../../../hooks/webhooks.js";
-import { Notification } from "../../../../utils/types.js";
-import { CreatePage } from "./CreatePage.js";
import { useOtpDeviceAPI } from "../../../../hooks/otp.js";
+import { Notification } from "../../../../utils/types.js";
import { CreatedSuccessfully } from "./CreatedSuccessfully.js";
+import { CreatePage } from "./CreatePage.js";
-export type Entity = MerchantBackend.OTP.OtpDeviceAddDetails;
+export type Entity = TalerMerchantApi.OtpDeviceAddDetails;
interface Props {
onBack?: () => void;
onConfirm: () => void;
@@ -40,7 +39,7 @@ export default function CreateValidator({ onConfirm, onBack }: Props): VNode {
const { createOtpDevice } = useOtpDeviceAPI();
const [notif, setNotif] = useState<Notification | undefined>(undefined);
const { i18n } = useTranslationContext();
- const [created, setCreated] = useState<MerchantBackend.OTP.OtpDeviceAddDetails | null>(null)
+ const [created, setCreated] = useState<TalerMerchantApi.OtpDeviceAddDetails | null>(null)
if (created) {
return <CreatedSuccessfully entity={created} onConfirm={onConfirm} />
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/list/ListPage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/list/ListPage.tsx
index f3b5a2088..9022cc35b 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/list/ListPage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/list/ListPage.tsx
@@ -19,18 +19,17 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { h, VNode } from "preact";
-import { MerchantBackend } from "../../../../declaration.js";
-import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { CardTable } from "./Table.js";
export interface Props {
- devices: MerchantBackend.OTP.OtpDeviceEntry[];
+ devices: TalerMerchantApi.OtpDeviceEntry[];
onLoadMoreBefore?: () => void;
onLoadMoreAfter?: () => void;
onCreate: () => void;
- onDelete: (e: MerchantBackend.OTP.OtpDeviceEntry) => void;
- onSelect: (e: MerchantBackend.OTP.OtpDeviceEntry) => void;
+ onDelete: (e: TalerMerchantApi.OtpDeviceEntry) => void;
+ onSelect: (e: TalerMerchantApi.OtpDeviceEntry) => void;
}
export function ListPage({
@@ -41,9 +40,7 @@ export function ListPage({
onLoadMoreBefore,
onLoadMoreAfter,
}: Props): VNode {
- const form = { payto_uri: "" };
- const { i18n } = useTranslationContext();
return (
<section class="section is-main-section">
<CardTable
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/list/Table.tsx b/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/list/Table.tsx
index 94091e1a7..7b1ccd4fc 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/list/Table.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/list/Table.tsx
@@ -19,12 +19,12 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { h, VNode } from "preact";
import { StateUpdater, useState } from "preact/hooks";
-import { MerchantBackend } from "../../../../declaration.js";
-type Entity = MerchantBackend.OTP.OtpDeviceEntry;
+type Entity = TalerMerchantApi.OtpDeviceEntry;
interface Props {
devices: Entity[];
@@ -109,11 +109,6 @@ interface TableProps {
onLoadMoreAfter?: () => void;
}
-function toggleSelected<T>(id: T): (prev: T[]) => T[] {
- return (prev: T[]): T[] =>
- prev.indexOf(id) == -1 ? [...prev, id] : prev.filter((e) => e != id);
-}
-
function Table({
instances,
onLoadMoreAfter,
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/list/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/list/index.tsx
index a3299326c..7fd827956 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/list/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/list/index.tsx
@@ -19,7 +19,7 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { HttpStatusCode } from "@gnu-taler/taler-util";
+import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import {
ErrorType,
HttpError,
@@ -29,14 +29,13 @@ import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../../components/exception/loading.js";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend } from "../../../../declaration.js";
import { useInstanceOtpDevices, useOtpDeviceAPI } from "../../../../hooks/otp.js";
import { Notification } from "../../../../utils/types.js";
import { ListPage } from "./ListPage.js";
interface Props {
onUnauthorized: () => VNode;
- onLoadError: (error: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (error: HttpError<TalerErrorDetail>) => VNode;
onNotFound: () => VNode;
onCreate: () => void;
onSelect: (id: string) => void;
@@ -84,7 +83,7 @@ export default function ListOtpDevices({
onSelect={(e) => {
onSelect(e.otp_device_id);
}}
- onDelete={(e: MerchantBackend.OTP.OtpDeviceEntry) =>
+ onDelete={(e: TalerMerchantApi.OtpDeviceEntry) =>
deleteOtpDevice(e.otp_device_id)
.then(() =>
setNotif({
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/update/UpdatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/update/UpdatePage.tsx
index 310810576..35d67cbc6 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/update/UpdatePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/update/UpdatePage.tsx
@@ -19,7 +19,7 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { randomRfc3548Base32Key } from "@gnu-taler/taler-util";
+import { randomRfc3548Base32Key, TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { Fragment, h, VNode } from "preact";
import { useState } from "preact/hooks";
@@ -31,9 +31,8 @@ import {
import { Input } from "../../../../components/form/Input.js";
import { InputSelector } from "../../../../components/form/InputSelector.js";
import { InputWithAddon } from "../../../../components/form/InputWithAddon.js";
-import { MerchantBackend, WithId } from "../../../../declaration.js";
-type Entity = MerchantBackend.OTP.OtpDevicePatchDetails & WithId;
+type Entity = TalerMerchantApi.OtpDevicePatchDetails & WithId;
interface Props {
onUpdate: (d: Entity) => Promise<void>;
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/update/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/update/index.tsx
index 922a94364..a824c6936 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/update/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/otp_devices/update/index.tsx
@@ -19,30 +19,29 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import {
ErrorType,
HttpError,
useTranslationContext,
} from "@gnu-taler/web-util/browser";
-import { Fragment, h, VNode } from "preact";
+import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../../components/exception/loading.js";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend, WithId } from "../../../../declaration.js";
-import { Notification } from "../../../../utils/types.js";
-import { UpdatePage } from "./UpdatePage.js";
-import { HttpStatusCode } from "@gnu-taler/taler-util";
import { useOtpDeviceAPI, useOtpDeviceDetails } from "../../../../hooks/otp.js";
+import { Notification } from "../../../../utils/types.js";
import { CreatedSuccessfully } from "../create/CreatedSuccessfully.js";
+import { UpdatePage } from "./UpdatePage.js";
-export type Entity = MerchantBackend.OTP.OtpDevicePatchDetails & WithId;
+export type Entity = TalerMerchantApi.OtpDevicePatchDetails & WithId;
interface Props {
onBack?: () => void;
onConfirm: () => void;
onUnauthorized: () => VNode;
onNotFound: () => VNode;
- onLoadError: (e: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (e: HttpError<TalerErrorDetail>) => VNode;
vid: string;
}
export default function UpdateValidator({
@@ -56,7 +55,7 @@ export default function UpdateValidator({
const { updateOtpDevice } = useOtpDeviceAPI();
const result = useOtpDeviceDetails(vid);
const [notif, setNotif] = useState<Notification | undefined>(undefined);
- const [keyUpdated, setKeyUpdated] = useState<MerchantBackend.OTP.OtpDeviceAddDetails | null>(null)
+ const [keyUpdated, setKeyUpdated] = useState<TalerMerchantApi.OtpDeviceAddDetails | null>(null)
const { i18n } = useTranslationContext();
@@ -87,7 +86,7 @@ export default function UpdateValidator({
id: vid,
otp_algorithm: result.data.otp_algorithm,
otp_device_description: result.data.device_description,
- otp_key: undefined,
+ otp_key: "",
otp_ctr: result.data.otp_ctr
}}
onBack={onBack}
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/products/create/CreatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/products/create/CreatePage.tsx
index 6cbc26d8d..64b174f64 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/products/create/CreatePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/products/create/CreatePage.tsx
@@ -19,14 +19,14 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { h, VNode } from "preact";
import { AsyncButton } from "../../../../components/exception/AsyncButton.js";
import { ProductForm } from "../../../../components/product/ProductForm.js";
-import { MerchantBackend } from "../../../../declaration.js";
import { useListener } from "../../../../hooks/listener.js";
-type Entity = MerchantBackend.Products.ProductAddDetail & {
+type Entity = TalerMerchantApi.ProductAddDetail & {
product_id: string;
};
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/products/create/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/products/create/index.tsx
index 5b1b5ecfe..9935a9625 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/products/create/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/products/create/index.tsx
@@ -19,16 +19,16 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { Fragment, h, VNode } from "preact";
import { useState } from "preact/hooks";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend } from "../../../../declaration.js";
import { useProductAPI } from "../../../../hooks/product.js";
import { Notification } from "../../../../utils/types.js";
import { CreatePage } from "./CreatePage.js";
-export type Entity = MerchantBackend.Products.ProductAddDetail;
+export type Entity = TalerMerchantApi.ProductAddDetail;
interface Props {
onBack?: () => void;
onConfirm: () => void;
@@ -43,7 +43,7 @@ export default function CreateProduct({ onConfirm, onBack }: Props): VNode {
<NotificationCard notification={notif} />
<CreatePage
onBack={onBack}
- onCreate={(request: MerchantBackend.Products.ProductAddDetail) => {
+ onCreate={(request: TalerMerchantApi.ProductAddDetail) => {
return createProduct(request)
.then(() => onConfirm())
.catch((error) => {
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/products/list/List.stories.tsx b/packages/merchant-backoffice-ui/src/paths/instance/products/list/List.stories.tsx
index a2f996221..580a92cdc 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/products/list/List.stories.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/products/list/List.stories.tsx
@@ -19,7 +19,8 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { h, VNode, FunctionalComponent } from "preact";
+import { AmountString } from "@gnu-taler/taler-util";
+import { FunctionalComponent, h } from "preact";
import { CardTable as TestedComponent } from "./Table.js";
export default {
@@ -49,7 +50,7 @@ export const Example = createExample(TestedComponent, {
description: "description1",
description_i18n: {} as any,
image: "",
- price: "TESTKUDOS:10",
+ price: "TESTKUDOS:10" as AmountString,
taxes: [],
total_lost: 10,
total_sold: 5,
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/products/list/Table.tsx b/packages/merchant-backoffice-ui/src/paths/instance/products/list/Table.tsx
index 2526e4d33..265146c01 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/products/list/Table.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/products/list/Table.tsx
@@ -19,10 +19,10 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { Amounts } from "@gnu-taler/taler-util";
+import { AmountString, Amounts, TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { format } from "date-fns";
-import { ComponentChildren, Fragment, h, VNode } from "preact";
+import { ComponentChildren, Fragment, VNode, h } from "preact";
import { StateUpdater, useState } from "preact/hooks";
import emptyImage from "../../../../assets/empty.png";
import {
@@ -31,10 +31,9 @@ import {
} from "../../../../components/form/FormProvider.js";
import { InputCurrency } from "../../../../components/form/InputCurrency.js";
import { InputNumber } from "../../../../components/form/InputNumber.js";
-import { MerchantBackend, WithId } from "../../../../declaration.js";
import { dateFormatForSettings, usePreference } from "../../../../hooks/preference.js";
-type Entity = MerchantBackend.Products.ProductDetail & WithId;
+type Entity = TalerMerchantApi.ProductDetail & WithId;
interface Props {
instances: Entity[];
@@ -42,7 +41,7 @@ interface Props {
onSelect: (product: Entity) => void;
onUpdate: (
id: string,
- data: MerchantBackend.Products.ProductPatchDetail,
+ data: TalerMerchantApi.ProductPatchDetail,
) => Promise<void>;
onCreate: () => void;
selected?: boolean;
@@ -108,7 +107,7 @@ interface TableProps {
onSelect: (id: Entity) => void;
onUpdate: (
id: string,
- data: MerchantBackend.Products.ProductPatchDetail,
+ data: TalerMerchantApi.ProductPatchDetail,
) => Promise<void>;
onDelete: (id: Entity) => void;
rowSelectionHandler: StateUpdater<string | undefined>;
@@ -305,7 +304,7 @@ function Table({
interface FastProductUpdateFormProps {
product: Entity;
onUpdate: (
- data: MerchantBackend.Products.ProductPatchDetail,
+ data: TalerMerchantApi.ProductPatchDetail,
) => Promise<void>;
onCancel: () => void;
}
@@ -361,7 +360,7 @@ function FastProductWithInfiniteStockUpdateForm({
onClick={() =>
onUpdate({
...product,
- price: value.price,
+ price: value.price as AmountString,
})
}
>
@@ -446,7 +445,7 @@ function FastProductWithManagedStockUpdateForm({
...product,
total_stock: product.total_stock + value.incoming,
total_lost: product.total_lost + value.lost,
- price: value.price,
+ price: value.price as AmountString,
})
}
>
@@ -491,6 +490,6 @@ function difference(price: string, tax: number) {
ps[1] = `${p - tax}`;
return ps.join(":");
}
-function sum(taxes: MerchantBackend.Tax[]) {
+function sum(taxes: TalerMerchantApi.Tax[]) {
return taxes.reduce((p, c) => p + parseInt(c.tax.split(":")[1], 10), 0);
}
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/products/list/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/products/list/index.tsx
index 6adc221da..1017a9334 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/products/list/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/products/list/index.tsx
@@ -19,32 +19,31 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import {
ErrorType,
HttpError,
useTranslationContext,
} from "@gnu-taler/web-util/browser";
-import { h, VNode } from "preact";
+import { VNode, h } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../../components/exception/loading.js";
+import { JumpToElementById } from "../../../../components/form/JumpToElementById.js";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend, WithId } from "../../../../declaration.js";
+import { ConfirmModal } from "../../../../components/modal/index.js";
import {
useInstanceProducts,
useProductAPI,
} from "../../../../hooks/product.js";
import { Notification } from "../../../../utils/types.js";
import { CardTable } from "./Table.js";
-import { HttpStatusCode } from "@gnu-taler/taler-util";
-import { ConfirmModal, DeleteModal } from "../../../../components/modal/index.js";
-import { JumpToElementById } from "../../../../components/form/JumpToElementById.js";
interface Props {
onUnauthorized: () => VNode;
onNotFound: () => VNode;
onCreate: () => void;
onSelect: (id: string) => void;
- onLoadError: (e: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (e: HttpError<TalerErrorDetail>) => VNode;
}
export default function ProductList({
onUnauthorized,
@@ -56,7 +55,7 @@ export default function ProductList({
const result = useInstanceProducts();
const { deleteProduct, updateProduct, getProduct } = useProductAPI();
const [deleting, setDeleting] =
- useState<MerchantBackend.Products.ProductDetail & WithId | null>(null);
+ useState<TalerMerchantApi.ProductDetail & WithId | null>(null);
const [notif, setNotif] = useState<Notification | undefined>(undefined);
const { i18n } = useTranslationContext();
@@ -107,7 +106,7 @@ export default function ProductList({
)
}
onSelect={(product) => onSelect(product.id)}
- onDelete={(prod: MerchantBackend.Products.ProductDetail & WithId) =>
+ onDelete={(prod: TalerMerchantApi.ProductDetail & WithId) =>
setDeleting(prod)
}
/>
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/products/update/Update.stories.tsx b/packages/merchant-backoffice-ui/src/paths/instance/products/update/Update.stories.tsx
index d1dc9d540..7aa93b186 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/products/update/Update.stories.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/products/update/Update.stories.tsx
@@ -19,7 +19,8 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { h, VNode, FunctionalComponent } from "preact";
+import { AmountString } from "@gnu-taler/taler-util";
+import { FunctionalComponent, h } from "preact";
import { UpdatePage as TestedComponent } from "./UpdatePage.js";
export default {
@@ -46,7 +47,7 @@ export const WithManagedStock = createExample(TestedComponent, {
description: "description1",
description_i18n: {} as any,
image: "",
- price: "TESTKUDOS:10",
+ price: "TESTKUDOS:10" as AmountString,
taxes: [],
total_lost: 10,
total_sold: 5,
@@ -62,7 +63,7 @@ export const WithInfiniteStock = createExample(TestedComponent, {
description: "description1",
description_i18n: {} as any,
image: "",
- price: "TESTKUDOS:10",
+ price: "TESTKUDOS:10" as AmountString,
taxes: [],
total_lost: 10,
total_sold: 5,
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/products/update/UpdatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/products/update/UpdatePage.tsx
index 53aa9d61f..5395ae40f 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/products/update/UpdatePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/products/update/UpdatePage.tsx
@@ -19,14 +19,14 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { h, VNode } from "preact";
import { AsyncButton } from "../../../../components/exception/AsyncButton.js";
import { ProductForm } from "../../../../components/product/ProductForm.js";
-import { MerchantBackend } from "../../../../declaration.js";
import { useListener } from "../../../../hooks/listener.js";
-type Entity = MerchantBackend.Products.ProductDetail & { product_id: string };
+type Entity = TalerMerchantApi.ProductDetail & { product_id: string };
interface Props {
onUpdate: (d: Entity) => Promise<void>;
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/products/update/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/products/update/index.tsx
index 2d3e7bd6b..842462c12 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/products/update/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/products/update/index.tsx
@@ -19,28 +19,27 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import {
ErrorType,
HttpError,
useTranslationContext,
} from "@gnu-taler/web-util/browser";
-import { Fragment, h, VNode } from "preact";
+import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../../components/exception/loading.js";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend } from "../../../../declaration.js";
import { useProductAPI, useProductDetails } from "../../../../hooks/product.js";
import { Notification } from "../../../../utils/types.js";
import { UpdatePage } from "./UpdatePage.js";
-import { HttpStatusCode } from "@gnu-taler/taler-util";
-export type Entity = MerchantBackend.Products.ProductAddDetail;
+export type Entity = TalerMerchantApi.ProductAddDetail;
interface Props {
onBack?: () => void;
onConfirm: () => void;
onUnauthorized: () => VNode;
onNotFound: () => VNode;
- onLoadError: (e: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (e: HttpError<TalerErrorDetail>) => VNode;
pid: string;
}
export default function UpdateProduct({
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/templates/create/CreatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/templates/create/CreatePage.tsx
index b07582252..31e525226 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/templates/create/CreatePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/templates/create/CreatePage.tsx
@@ -23,6 +23,7 @@ import {
AmountString,
Amounts,
Duration,
+ TalerMerchantApi,
assertUnreachable,
} from "@gnu-taler/taler-util";
import {
@@ -43,7 +44,6 @@ import { InputSearchOnList } from "../../../../components/form/InputSearchOnList
import { InputTab } from "../../../../components/form/InputTab.js";
import { InputWithAddon } from "../../../../components/form/InputWithAddon.js";
import { useSessionContext } from "../../../../context/session.js";
-import { MerchantBackend } from "../../../../declaration.js";
import { useInstanceOtpDevices } from "../../../../hooks/otp.js";
enum Steps {
@@ -53,7 +53,7 @@ enum Steps {
NON_FIXED,
}
-// type Entity = MerchantBackend.Template.TemplateAddDetails & { type: Steps };
+// type Entity = TalerMerchantApi.TemplateAddDetails & { type: Steps };
type Entity = {
id?: string;
description?: string;
@@ -66,7 +66,7 @@ type Entity = {
};
interface Props {
- onCreate: (d: MerchantBackend.Template.TemplateAddDetails) => Promise<void>;
+ onCreate: (d: TalerMerchantApi.TemplateAddDetails) => Promise<void>;
onBack?: () => void;
}
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/templates/create/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/templates/create/index.tsx
index f76146812..593850268 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/templates/create/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/templates/create/index.tsx
@@ -19,16 +19,16 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { Fragment, h, VNode } from "preact";
import { useState } from "preact/hooks";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend } from "../../../../declaration.js";
import { useTemplateAPI } from "../../../../hooks/templates.js";
import { Notification } from "../../../../utils/types.js";
import { CreatePage } from "./CreatePage.js";
-export type Entity = MerchantBackend.Transfers.TransferInformation;
+export type Entity = TalerMerchantApi.TransferInformation;
interface Props {
onBack?: () => void;
onConfirm: () => void;
@@ -44,7 +44,7 @@ export default function CreateTransfer({ onConfirm, onBack }: Props): VNode {
<NotificationCard notification={notif} />
<CreatePage
onBack={onBack}
- onCreate={(request: MerchantBackend.Template.TemplateAddDetails) => {
+ onCreate={(request: TalerMerchantApi.TemplateAddDetails) => {
return createTemplate(request)
.then(() => onConfirm())
.catch((error) => {
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/templates/list/ListPage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/templates/list/ListPage.tsx
index c21f64776..84ff9e0f2 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/templates/list/ListPage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/templates/list/ListPage.tsx
@@ -19,20 +19,19 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { h, VNode } from "preact";
-import { MerchantBackend } from "../../../../declaration.js";
-import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { CardTable } from "./Table.js";
export interface Props {
- templates: MerchantBackend.Template.TemplateEntry[];
+ templates: TalerMerchantApi.TemplateEntry[];
onLoadMoreBefore?: () => void;
onLoadMoreAfter?: () => void;
onCreate: () => void;
- onDelete: (e: MerchantBackend.Template.TemplateEntry) => void;
- onSelect: (e: MerchantBackend.Template.TemplateEntry) => void;
- onNewOrder: (e: MerchantBackend.Template.TemplateEntry) => void;
- onQR: (e: MerchantBackend.Template.TemplateEntry) => void;
+ onDelete: (e: TalerMerchantApi.TemplateEntry) => void;
+ onSelect: (e: TalerMerchantApi.TemplateEntry) => void;
+ onNewOrder: (e: TalerMerchantApi.TemplateEntry) => void;
+ onQR: (e: TalerMerchantApi.TemplateEntry) => void;
}
export function ListPage({
@@ -45,9 +44,7 @@ export function ListPage({
onLoadMoreBefore,
onLoadMoreAfter,
}: Props): VNode {
- const form = { payto_uri: "" };
- const { i18n } = useTranslationContext();
return (
<CardTable
templates={templates.map((o) => ({
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/templates/list/Table.tsx b/packages/merchant-backoffice-ui/src/paths/instance/templates/list/Table.tsx
index 00d7982aa..11caca970 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/templates/list/Table.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/templates/list/Table.tsx
@@ -19,12 +19,12 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { h, VNode } from "preact";
import { StateUpdater, useState } from "preact/hooks";
-import { MerchantBackend } from "../../../../declaration.js";
-type Entity = MerchantBackend.Template.TemplateEntry;
+type Entity = TalerMerchantApi.TemplateEntry;
interface Props {
templates: Entity[];
@@ -117,11 +117,6 @@ interface TableProps {
onLoadMoreAfter?: () => void;
}
-function toggleSelected<T>(id: T): (prev: T[]) => T[] {
- return (prev: T[]): T[] =>
- prev.indexOf(id) == -1 ? [...prev, id] : prev.filter((e) => e != id);
-}
-
function Table({
instances,
onLoadMoreAfter,
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/templates/list/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/templates/list/index.tsx
index 78f744b39..40ca6ac98 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/templates/list/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/templates/list/index.tsx
@@ -19,29 +19,28 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import {
ErrorType,
HttpError,
useTranslationContext,
} from "@gnu-taler/web-util/browser";
-import { Fragment, h, VNode } from "preact";
+import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../../components/exception/loading.js";
+import { JumpToElementById } from "../../../../components/form/JumpToElementById.js";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend } from "../../../../declaration.js";
+import { ConfirmModal } from "../../../../components/modal/index.js";
import {
useInstanceTemplates,
useTemplateAPI,
} from "../../../../hooks/templates.js";
import { Notification } from "../../../../utils/types.js";
import { ListPage } from "./ListPage.js";
-import { HttpStatusCode, TranslatedString } from "@gnu-taler/taler-util";
-import { ConfirmModal } from "../../../../components/modal/index.js";
-import { JumpToElementById } from "../../../../components/form/JumpToElementById.js";
interface Props {
onUnauthorized: () => VNode;
- onLoadError: (error: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (error: HttpError<TalerErrorDetail>) => VNode;
onNotFound: () => VNode;
onCreate: () => void;
onSelect: (id: string) => void;
@@ -64,7 +63,7 @@ export default function ListTemplates({
const { deleteTemplate, testTemplateExist } = useTemplateAPI();
const result = useInstanceTemplates({ position }, (id) => setPosition(id));
const [deleting, setDeleting] =
- useState<MerchantBackend.Template.TemplateEntry | null>(null);
+ useState<TalerMerchantApi.TemplateEntry | null>(null);
if (result.loading) return <Loading />;
if (!result.ok) {
@@ -108,7 +107,7 @@ export default function ListTemplates({
onQR={(e) => {
onQR(e.template_id);
}}
- onDelete={(e: MerchantBackend.Template.TemplateEntry) => {
+ onDelete={(e: TalerMerchantApi.TemplateEntry) => {
setDeleting(e)
}
}
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/templates/qr/QrPage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/templates/qr/QrPage.tsx
index 1aa5bc317..d48e5e956 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/templates/qr/QrPage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/templates/qr/QrPage.tsx
@@ -19,7 +19,7 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { stringifyPayTemplateUri } from "@gnu-taler/taler-util";
+import { TalerMerchantApi, stringifyPayTemplateUri } from "@gnu-taler/taler-util";
import {
useMerchantApiContext,
useTranslationContext,
@@ -34,12 +34,11 @@ import {
import { Input } from "../../../../components/form/Input.js";
import { InputCurrency } from "../../../../components/form/InputCurrency.js";
import { useSessionContext } from "../../../../context/session.js";
-import { MerchantBackend } from "../../../../declaration.js";
-type Entity = MerchantBackend.Template.UsingTemplateDetails;
+type Entity = TalerMerchantApi.UsingTemplateDetails;
interface Props {
- contract: MerchantBackend.Template.TemplateContractDetails;
+ contract: TalerMerchantApi.TemplateContractDetails;
id: string;
onBack?: () => void;
}
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/templates/qr/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/templates/qr/index.tsx
index 65ccc2dcc..37f0e5c74 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/templates/qr/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/templates/qr/index.tsx
@@ -19,30 +19,27 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import {
ErrorType,
- HttpError,
- useTranslationContext,
+ HttpError
} from "@gnu-taler/web-util/browser";
-import { Fragment, h, VNode } from "preact";
+import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../../components/exception/loading.js";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend } from "../../../../declaration.js";
import {
- useTemplateAPI,
- useTemplateDetails,
+ useTemplateDetails
} from "../../../../hooks/templates.js";
import { Notification } from "../../../../utils/types.js";
import { QrPage } from "./QrPage.js";
-import { HttpStatusCode } from "@gnu-taler/taler-util";
-export type Entity = MerchantBackend.Transfers.TransferInformation;
+export type Entity = TalerMerchantApi.TransferInformation;
interface Props {
onBack?: () => void;
onUnauthorized: () => VNode;
onNotFound: () => VNode;
- onLoadError: (e: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (e: HttpError<TalerErrorDetail>) => VNode;
tid: string;
}
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/templates/update/UpdatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/templates/update/UpdatePage.tsx
index ae11ad991..f4092b61b 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/templates/update/UpdatePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/templates/update/UpdatePage.tsx
@@ -23,6 +23,7 @@ import {
AmountString,
Amounts,
Duration,
+ TalerMerchantApi,
assertUnreachable
} from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
@@ -40,7 +41,6 @@ import { InputNumber } from "../../../../components/form/InputNumber.js";
import { InputSearchOnList } from "../../../../components/form/InputSearchOnList.js";
import { InputTab } from "../../../../components/form/InputTab.js";
import { useSessionContext } from "../../../../context/session.js";
-import { MerchantBackend } from "../../../../declaration.js";
import { useInstanceOtpDevices } from "../../../../hooks/otp.js";
enum Steps {
@@ -60,9 +60,9 @@ type Entity = {
};
interface Props {
- onUpdate: (d: MerchantBackend.Template.TemplatePatchDetails) => Promise<void>;
+ onUpdate: (d: TalerMerchantApi.TemplatePatchDetails) => Promise<void>;
onBack?: () => void;
- template: MerchantBackend.Template.TemplateDetails;
+ template: TalerMerchantApi.TemplateDetails;
}
export function UpdatePage({ template, onUpdate, onBack }: Props): VNode {
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/templates/update/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/templates/update/index.tsx
index 1975ed479..ba1939914 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/templates/update/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/templates/update/index.tsx
@@ -19,32 +19,31 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import {
ErrorType,
HttpError,
useTranslationContext,
} from "@gnu-taler/web-util/browser";
-import { Fragment, h, VNode } from "preact";
+import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../../components/exception/loading.js";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend, WithId } from "../../../../declaration.js";
import {
useTemplateAPI,
useTemplateDetails,
} from "../../../../hooks/templates.js";
import { Notification } from "../../../../utils/types.js";
import { UpdatePage } from "./UpdatePage.js";
-import { HttpStatusCode } from "@gnu-taler/taler-util";
-export type Entity = MerchantBackend.Template.TemplatePatchDetails & WithId;
+export type Entity = TalerMerchantApi.TemplatePatchDetails & WithId;
interface Props {
onBack?: () => void;
onConfirm: () => void;
onUnauthorized: () => VNode;
onNotFound: () => VNode;
- onLoadError: (e: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (e: HttpError<TalerErrorDetail>) => VNode;
tid: string;
}
export default function UpdateTemplate({
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/templates/use/UsePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/templates/use/UsePage.tsx
index 93f303537..58e63cc8e 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/templates/use/UsePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/templates/use/UsePage.tsx
@@ -19,6 +19,7 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { h, VNode } from "preact";
import { useState } from "preact/hooks";
@@ -29,13 +30,12 @@ import {
} from "../../../../components/form/FormProvider.js";
import { Input } from "../../../../components/form/Input.js";
import { InputCurrency } from "../../../../components/form/InputCurrency.js";
-import { MerchantBackend } from "../../../../declaration.js";
-type Entity = MerchantBackend.Template.UsingTemplateDetails;
+type Entity = TalerMerchantApi.UsingTemplateDetails;
interface Props {
id: string;
- template: MerchantBackend.Template.TemplateDetails;
+ template: TalerMerchantApi.TemplateDetails;
onCreateOrder: (d: Entity) => Promise<void>;
onBack?: () => void;
}
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/templates/use/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/templates/use/index.tsx
index 441a5c5e0..64c38c86b 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/templates/use/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/templates/use/index.tsx
@@ -19,31 +19,30 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import {
ErrorType,
HttpError,
useTranslationContext,
} from "@gnu-taler/web-util/browser";
-import { Fragment, h, VNode } from "preact";
+import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../../components/exception/loading.js";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend } from "../../../../declaration.js";
import {
useTemplateAPI,
useTemplateDetails,
} from "../../../../hooks/templates.js";
import { Notification } from "../../../../utils/types.js";
import { UsePage } from "./UsePage.js";
-import { HttpStatusCode } from "@gnu-taler/taler-util";
-export type Entity = MerchantBackend.Transfers.TransferInformation;
+export type Entity = TalerMerchantApi.TransferInformation;
interface Props {
onBack?: () => void;
onOrderCreated: (id: string) => void;
onUnauthorized: () => VNode;
onNotFound: () => VNode;
- onLoadError: (e: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (e: HttpError<TalerErrorDetail>) => VNode;
tid: string;
}
@@ -83,7 +82,7 @@ export default function TemplateUsePage({
id={tid}
onBack={onBack}
onCreateOrder={(
- request: MerchantBackend.Template.UsingTemplateDetails,
+ request: TalerMerchantApi.UsingTemplateDetails,
) => {
return createOrderFromTemplate(tid, request)
.then((res) => onOrderCreated(res.data.order_id))
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx
index d7bf7a6d5..50e7d500d 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx
@@ -13,20 +13,19 @@
You should have received a copy of the GNU General Public License along with
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { HttpStatusCode } from "@gnu-taler/taler-util";
+import { HttpStatusCode, TalerErrorDetail } from "@gnu-taler/taler-util";
import { ErrorType, HttpError, useTranslationContext } from "@gnu-taler/web-util/browser";
import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../components/exception/loading.js";
import { NotificationCard } from "../../../components/menu/index.js";
-import { MerchantBackend } from "../../../declaration.js";
import { useInstanceAPI, useInstanceDetails } from "../../../hooks/instance.js";
import { Notification } from "../../../utils/types.js";
import { DetailPage } from "./DetailPage.js";
interface Props {
onUnauthorized: () => VNode;
- onLoadError: (error: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (error: HttpError<TalerErrorDetail>) => VNode;
onChange: () => void;
onNotFound: () => VNode;
onCancel: () => void;
@@ -60,7 +59,7 @@ export default function Token({
return onLoadError(result);
}
- const hasToken = result.data.auth.method === "token"
+ const hasToken = result.data.auth.type === "token"
return (
<Fragment>
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/transfers/create/CreatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/transfers/create/CreatePage.tsx
index 576c21cd2..91aabe58e 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/transfers/create/CreatePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/transfers/create/CreatePage.tsx
@@ -19,6 +19,7 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { AmountString, TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { VNode, h } from "preact";
import { useState } from "preact/hooks";
@@ -30,13 +31,12 @@ import {
import { Input } from "../../../../components/form/Input.js";
import { InputCurrency } from "../../../../components/form/InputCurrency.js";
import { InputSelector } from "../../../../components/form/InputSelector.js";
-import { MerchantBackend } from "../../../../declaration.js";
import {
CROCKFORD_BASE32_REGEX,
URL_REGEX,
} from "../../../../utils/constants.js";
-type Entity = MerchantBackend.Transfers.TransferInformation;
+type Entity = TalerMerchantApi.TransferInformation;
interface Props {
onCreate: (d: Entity) => Promise<void>;
@@ -51,7 +51,7 @@ export function CreatePage({ accounts, onCreate, onBack }: Props): VNode {
wtid: "",
// payto_uri: ,
// exchange_url: 'http://exchange.taler:8081/',
- credit_amount: ``,
+ credit_amount: `` as AmountString,
});
const errors: FormErrors<Entity> = {
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/transfers/create/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/transfers/create/index.tsx
index 77a8c65fb..e640e47f6 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/transfers/create/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/transfers/create/index.tsx
@@ -19,18 +19,17 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { Fragment, h, VNode } from "preact";
import { useState } from "preact/hooks";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend } from "../../../../declaration.js";
-import { useInstanceDetails } from "../../../../hooks/instance.js";
+import { useInstanceBankAccounts } from "../../../../hooks/bank.js";
import { useTransferAPI } from "../../../../hooks/transfer.js";
import { Notification } from "../../../../utils/types.js";
import { CreatePage } from "./CreatePage.js";
-import { useBankAccountDetails, useInstanceBankAccounts } from "../../../../hooks/bank.js";
-export type Entity = MerchantBackend.Transfers.TransferInformation;
+export type Entity = TalerMerchantApi.TransferInformation;
interface Props {
onBack?: () => void;
onConfirm: () => void;
@@ -51,7 +50,7 @@ export default function CreateTransfer({ onConfirm, onBack }: Props): VNode {
<CreatePage
onBack={onBack}
accounts={accounts}
- onCreate={(request: MerchantBackend.Transfers.TransferInformation) => {
+ onCreate={(request: TalerMerchantApi.TransferInformation) => {
return informTransfer(request)
.then(() => onConfirm())
.catch((error) => {
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/transfers/list/List.stories.tsx b/packages/merchant-backoffice-ui/src/paths/instance/transfers/list/List.stories.tsx
index ba22cb7d5..def03fe27 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/transfers/list/List.stories.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/transfers/list/List.stories.tsx
@@ -19,7 +19,8 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { h, VNode, FunctionalComponent } from "preact";
+import { AmountString, PaytoString } from "@gnu-taler/taler-util";
+import { FunctionalComponent, h } from "preact";
import { ListPage as TestedComponent } from "./ListPage.js";
export default {
@@ -50,8 +51,8 @@ export const Example = createExample(TestedComponent, {
transfers: [
{
exchange_url: "http://exchange.url/",
- credit_amount: "TESTKUDOS:10",
- payto_uri: "payto//x-taler-bank/bank:8080/account",
+ credit_amount: "TESTKUDOS:10" as AmountString,
+ payto_uri: "payto//x-taler-bank/bank:8080/account" as PaytoString,
transfer_serial_id: 123123123,
wtid: "!@KJELQKWEJ!L@K#!J@",
confirmed: true,
@@ -62,8 +63,8 @@ export const Example = createExample(TestedComponent, {
},
{
exchange_url: "http://exchange.url/",
- credit_amount: "TESTKUDOS:10",
- payto_uri: "payto//x-taler-bank/bank:8080/account",
+ credit_amount: "TESTKUDOS:10" as AmountString,
+ payto_uri: "payto//x-taler-bank/bank:8080/account" as PaytoString,
transfer_serial_id: 123123123,
wtid: "!@KJELQKWEJ!L@K#!J@",
confirmed: true,
@@ -74,8 +75,8 @@ export const Example = createExample(TestedComponent, {
},
{
exchange_url: "http://exchange.url/",
- credit_amount: "TESTKUDOS:10",
- payto_uri: "payto//x-taler-bank/bank:8080/account",
+ credit_amount: "TESTKUDOS:10" as AmountString,
+ payto_uri: "payto//x-taler-bank/bank:8080/account" as PaytoString,
transfer_serial_id: 123123123,
wtid: "!@KJELQKWEJ!L@K#!J@",
confirmed: true,
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/transfers/list/ListPage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/transfers/list/ListPage.tsx
index 794d37fe6..7b54dc5ed 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/transfers/list/ListPage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/transfers/list/ListPage.tsx
@@ -23,11 +23,11 @@ import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { h, VNode } from "preact";
import { FormProvider } from "../../../../components/form/FormProvider.js";
import { InputSelector } from "../../../../components/form/InputSelector.js";
-import { MerchantBackend } from "../../../../declaration.js";
import { CardTable } from "./Table.js";
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
export interface Props {
- transfers: MerchantBackend.Transfers.TransferDetails[];
+ transfers: TalerMerchantApi.TransferDetails[];
onLoadMoreBefore?: () => void;
onLoadMoreAfter?: () => void;
onShowAll: () => void;
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/transfers/list/Table.tsx b/packages/merchant-backoffice-ui/src/paths/instance/transfers/list/Table.tsx
index 3792db9b0..cf7ebe922 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/transfers/list/Table.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/transfers/list/Table.tsx
@@ -19,14 +19,14 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { format } from "date-fns";
import { h, VNode } from "preact";
import { StateUpdater, useState } from "preact/hooks";
-import { MerchantBackend, WithId } from "../../../../declaration.js";
import { datetimeFormatForSettings, usePreference } from "../../../../hooks/preference.js";
-type Entity = MerchantBackend.Transfers.TransferDetails & WithId;
+type Entity = TalerMerchantApi.TransferDetails & WithId;
interface Props {
transfers: Entity[];
@@ -108,11 +108,6 @@ interface TableProps {
onLoadMoreAfter?: () => void;
}
-function toggleSelected<T>(id: T): (prev: T[]) => T[] {
- return (prev: T[]): T[] =>
- prev.indexOf(id) == -1 ? [...prev, id] : prev.filter((e) => e != id);
-}
-
function Table({
instances,
onLoadMoreAfter,
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/transfers/list/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/transfers/list/index.tsx
index 1402df4c1..15706b4c5 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/transfers/list/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/transfers/list/index.tsx
@@ -19,20 +19,18 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { HttpStatusCode, TalerErrorDetail } from "@gnu-taler/taler-util";
import { ErrorType, HttpError } from "@gnu-taler/web-util/browser";
-import { h, VNode } from "preact";
+import { VNode, h } from "preact";
import { useEffect, useState } from "preact/hooks";
import { Loading } from "../../../../components/exception/loading.js";
-import { MerchantBackend } from "../../../../declaration.js";
-import { useInstanceDetails } from "../../../../hooks/instance.js";
+import { useInstanceBankAccounts } from "../../../../hooks/bank.js";
import { useInstanceTransfers } from "../../../../hooks/transfer.js";
import { ListPage } from "./ListPage.js";
-import { HttpStatusCode } from "@gnu-taler/taler-util";
-import { useInstanceBankAccounts } from "../../../../hooks/bank.js";
interface Props {
onUnauthorized: () => VNode;
- onLoadError: (error: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (error: HttpError<TalerErrorDetail>) => VNode;
onNotFound: () => VNode;
onCreate: () => void;
}
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/update/Update.stories.tsx b/packages/merchant-backoffice-ui/src/paths/instance/update/Update.stories.tsx
index 2accb7685..5514b68d9 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/update/Update.stories.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/update/Update.stories.tsx
@@ -19,7 +19,7 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { h, VNode, FunctionalComponent } from "preact";
+import { FunctionalComponent, h } from "preact";
import { UpdatePage as TestedComponent } from "./UpdatePage.js";
export default {
@@ -43,7 +43,7 @@ function createExample<Props>(
export const Example = createExample(TestedComponent, {
selected: {
name: "name",
- auth: { method: "external" },
+ auth: { type: "external" },
address: {},
user_type: "business",
use_stefan: true,
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/update/UpdatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/update/UpdatePage.tsx
index f0f0bfac9..cde58967f 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/update/UpdatePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/update/UpdatePage.tsx
@@ -19,9 +19,9 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { Duration } from "@gnu-taler/taler-util";
+import { Duration, TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
-import { h, VNode } from "preact";
+import { VNode, h } from "preact";
import { useState } from "preact/hooks";
import { AsyncButton } from "../../../components/exception/AsyncButton.js";
import {
@@ -29,25 +29,24 @@ import {
FormProvider,
} from "../../../components/form/FormProvider.js";
import { DefaultInstanceFormFields } from "../../../components/instance/DefaultInstanceFormFields.js";
-import { MerchantBackend } from "../../../declaration.js";
-import { undefinedIfEmpty } from "../../../utils/table.js";
import { useSessionContext } from "../../../context/session.js";
+import { undefinedIfEmpty } from "../../../utils/table.js";
-export type Entity = Omit<Omit<MerchantBackend.Instances.InstanceReconfigurationMessage, "default_pay_delay">, "default_wire_transfer_delay"> & {
+export type Entity = Omit<Omit<TalerMerchantApi.InstanceReconfigurationMessage, "default_pay_delay">, "default_wire_transfer_delay"> & {
default_pay_delay: Duration,
default_wire_transfer_delay: Duration,
};
-//MerchantBackend.Instances.InstanceAuthConfigurationMessage
+//TalerMerchantApi.InstanceAuthConfigurationMessage
interface Props {
- onUpdate: (d: MerchantBackend.Instances.InstanceReconfigurationMessage) => void;
- selected: MerchantBackend.Instances.QueryInstancesResponse;
+ onUpdate: (d: TalerMerchantApi.InstanceReconfigurationMessage) => void;
+ selected: TalerMerchantApi.QueryInstancesResponse;
isLoading: boolean;
onBack: () => void;
}
function convert(
- from: MerchantBackend.Instances.QueryInstancesResponse,
+ from: TalerMerchantApi.QueryInstancesResponse,
): Entity {
const { default_pay_delay, default_wire_transfer_delay, ...rest } = from;
@@ -107,7 +106,7 @@ export function UpdatePage({
const submit = async (): Promise<void> => {
const { default_pay_delay, default_wire_transfer_delay, ...rest } = value as Required<Entity>;
- const result: MerchantBackend.Instances.InstanceReconfigurationMessage = {
+ const result: TalerMerchantApi.InstanceReconfigurationMessage = {
default_pay_delay: Duration.toTalerProtocolDuration(default_pay_delay),
default_wire_transfer_delay: Duration.toTalerProtocolDuration(default_wire_transfer_delay),
...rest,
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/update/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/update/index.tsx
index de1371974..d28ca0555 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/update/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/update/index.tsx
@@ -13,7 +13,7 @@
You should have received a copy of the GNU General Public License along with
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { HttpStatusCode } from "@gnu-taler/taler-util";
+import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
import {
ErrorType,
HttpError,
@@ -24,7 +24,6 @@ import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../components/exception/loading.js";
import { NotificationCard } from "../../../components/menu/index.js";
-import { MerchantBackend } from "../../../declaration.js";
import {
useInstanceAPI,
useInstanceDetails,
@@ -40,8 +39,8 @@ export interface Props {
onUnauthorized: () => VNode;
onNotFound: () => VNode;
- onLoadError: (e: HttpError<MerchantBackend.ErrorDetail>) => VNode;
- onUpdateError: (e: HttpError<MerchantBackend.ErrorDetail>) => void;
+ onLoadError: (e: HttpError<TalerErrorDetail>) => VNode;
+ onUpdateError: (e: HttpError<TalerErrorDetail>) => void;
}
export default function Update(props: Props): VNode {
@@ -67,8 +66,8 @@ function CommonUpdate(
onUnauthorized,
}: Props,
result: HttpResponse<
- MerchantBackend.Instances.QueryInstancesResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.QueryInstancesResponse,
+ TalerErrorDetail
>,
updateInstance: any,
): VNode {
@@ -98,7 +97,7 @@ function CommonUpdate(
isLoading={false}
selected={result.data}
onUpdate={(
- d: MerchantBackend.Instances.InstanceReconfigurationMessage,
+ d: TalerMerchantApi.InstanceReconfigurationMessage,
): Promise<void> => {
return updateInstance(d)
.then(onConfirm)
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/webhooks/create/CreatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/webhooks/create/CreatePage.tsx
index 83604711e..8792aabea 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/webhooks/create/CreatePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/webhooks/create/CreatePage.tsx
@@ -29,9 +29,9 @@ import {
} from "../../../../components/form/FormProvider.js";
import { Input } from "../../../../components/form/Input.js";
import { InputSelector } from "../../../../components/form/InputSelector.js";
-import { MerchantBackend } from "../../../../declaration.js";
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
-type Entity = MerchantBackend.Webhooks.WebhookAddDetails;
+type Entity = TalerMerchantApi.WebhookAddDetails;
interface Props {
onCreate: (d: Entity) => Promise<void>;
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/webhooks/create/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/webhooks/create/index.tsx
index e1b8aa88e..42a432cf0 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/webhooks/create/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/webhooks/create/index.tsx
@@ -23,12 +23,12 @@ import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { Fragment, h, VNode } from "preact";
import { useState } from "preact/hooks";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend } from "../../../../declaration.js";
import { useWebhookAPI } from "../../../../hooks/webhooks.js";
import { Notification } from "../../../../utils/types.js";
import { CreatePage } from "./CreatePage.js";
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
-export type Entity = MerchantBackend.Webhooks.WebhookAddDetails;
+export type Entity = TalerMerchantApi.WebhookAddDetails;
interface Props {
onBack?: () => void;
onConfirm: () => void;
@@ -44,7 +44,7 @@ export default function CreateWebhook({ onConfirm, onBack }: Props): VNode {
<NotificationCard notification={notif} />
<CreatePage
onBack={onBack}
- onCreate={(request: MerchantBackend.Webhooks.WebhookAddDetails) => {
+ onCreate={(request: TalerMerchantApi.WebhookAddDetails) => {
return createWebhook(request)
.then(() => onConfirm())
.catch((error) => {
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/webhooks/list/ListPage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/webhooks/list/ListPage.tsx
index be7c575a0..98bd61d8f 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/webhooks/list/ListPage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/webhooks/list/ListPage.tsx
@@ -20,17 +20,17 @@
*/
import { h, VNode } from "preact";
-import { MerchantBackend } from "../../../../declaration.js";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { CardTable } from "./Table.js";
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
export interface Props {
- webhooks: MerchantBackend.Webhooks.WebhookEntry[];
+ webhooks: TalerMerchantApi.WebhookEntry[];
onLoadMoreBefore?: () => void;
onLoadMoreAfter?: () => void;
onCreate: () => void;
- onDelete: (e: MerchantBackend.Webhooks.WebhookEntry) => void;
- onSelect: (e: MerchantBackend.Webhooks.WebhookEntry) => void;
+ onDelete: (e: TalerMerchantApi.WebhookEntry) => void;
+ onSelect: (e: TalerMerchantApi.WebhookEntry) => void;
}
export function ListPage({
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/webhooks/list/Table.tsx b/packages/merchant-backoffice-ui/src/paths/instance/webhooks/list/Table.tsx
index debbd850b..2cafc7f9a 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/webhooks/list/Table.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/webhooks/list/Table.tsx
@@ -19,12 +19,12 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { h, VNode } from "preact";
import { StateUpdater, useState } from "preact/hooks";
-import { MerchantBackend } from "../../../../declaration.js";
-type Entity = MerchantBackend.Webhooks.WebhookEntry;
+type Entity = TalerMerchantApi.WebhookEntry;
interface Props {
webhooks: Entity[];
@@ -109,11 +109,6 @@ interface TableProps {
onLoadMoreAfter?: () => void;
}
-function toggleSelected<T>(id: T): (prev: T[]) => T[] {
- return (prev: T[]): T[] =>
- prev.indexOf(id) == -1 ? [...prev, id] : prev.filter((e) => e != id);
-}
-
function Table({
instances,
onLoadMoreAfter,
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/webhooks/list/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/webhooks/list/index.tsx
index c4b773669..17e767337 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/webhooks/list/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/webhooks/list/index.tsx
@@ -28,18 +28,17 @@ import { Fragment, h, VNode } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../../components/exception/loading.js";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend } from "../../../../declaration.js";
import {
useInstanceWebhooks,
useWebhookAPI,
} from "../../../../hooks/webhooks.js";
import { Notification } from "../../../../utils/types.js";
import { ListPage } from "./ListPage.js";
-import { HttpStatusCode } from "@gnu-taler/taler-util";
+import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
interface Props {
onUnauthorized: () => VNode;
- onLoadError: (error: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (error: HttpError<TalerErrorDetail>) => VNode;
onNotFound: () => VNode;
onCreate: () => void;
onSelect: (id: string) => void;
@@ -87,7 +86,7 @@ export default function ListWebhooks({
onSelect={(e) => {
onSelect(e.webhook_id);
}}
- onDelete={(e: MerchantBackend.Webhooks.WebhookEntry) =>
+ onDelete={(e: TalerMerchantApi.WebhookEntry) =>
deleteWebhook(e.webhook_id)
.then(() =>
setNotif({
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/webhooks/update/UpdatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/webhooks/update/UpdatePage.tsx
index be21629d5..6aca62582 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/webhooks/update/UpdatePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/webhooks/update/UpdatePage.tsx
@@ -28,9 +28,9 @@ import {
FormProvider,
} from "../../../../components/form/FormProvider.js";
import { Input } from "../../../../components/form/Input.js";
-import { MerchantBackend, WithId } from "../../../../declaration.js";
+import { TalerMerchantApi } from "@gnu-taler/taler-util";
-type Entity = MerchantBackend.Webhooks.WebhookPatchDetails & WithId;
+type Entity = TalerMerchantApi.WebhookPatchDetails & WithId;
interface Props {
onUpdate: (d: Entity) => Promise<void>;
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/webhooks/update/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/webhooks/update/index.tsx
index 12374d82a..97b4f44ba 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/webhooks/update/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/webhooks/update/index.tsx
@@ -28,23 +28,22 @@ import { Fragment, h, VNode } from "preact";
import { useState } from "preact/hooks";
import { Loading } from "../../../../components/exception/loading.js";
import { NotificationCard } from "../../../../components/menu/index.js";
-import { MerchantBackend, WithId } from "../../../../declaration.js";
import {
useWebhookAPI,
useWebhookDetails,
} from "../../../../hooks/webhooks.js";
import { Notification } from "../../../../utils/types.js";
import { UpdatePage } from "./UpdatePage.js";
-import { HttpStatusCode } from "@gnu-taler/taler-util";
+import { HttpStatusCode, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util";
-export type Entity = MerchantBackend.Webhooks.WebhookPatchDetails & WithId;
+export type Entity = TalerMerchantApi.WebhookPatchDetails & WithId;
interface Props {
onBack?: () => void;
onConfirm: () => void;
onUnauthorized: () => VNode;
onNotFound: () => VNode;
- onLoadError: (e: HttpError<MerchantBackend.ErrorDetail>) => VNode;
+ onLoadError: (e: HttpError<TalerErrorDetail>) => VNode;
tid: string;
}
export default function UpdateWebhook({
diff --git a/packages/merchant-backoffice-ui/src/paths/login/index.tsx b/packages/merchant-backoffice-ui/src/paths/login/index.tsx
index 1c0b915bd..14322f079 100644
--- a/packages/merchant-backoffice-ui/src/paths/login/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/login/index.tsx
@@ -20,9 +20,7 @@
*/
import {
- AccessToken,
- HttpStatusCode,
- TalerAuthentication,
+ HttpStatusCode
} from "@gnu-taler/taler-util";
import {
useMerchantApiContext,
@@ -32,8 +30,7 @@ import { ComponentChildren, Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
import { NotificationCard } from "../../components/menu/index.js";
import {
- DEFAULT_ADMIN_USERNAME,
- useSessionContext,
+ useSessionContext
} from "../../context/session.js";
import { Notification } from "../../utils/types.js";
diff --git a/packages/merchant-backoffice-ui/src/schemas/index.ts b/packages/merchant-backoffice-ui/src/schemas/index.ts
index dc4517e16..693894ae0 100644
--- a/packages/merchant-backoffice-ui/src/schemas/index.ts
+++ b/packages/merchant-backoffice-ui/src/schemas/index.ts
@@ -19,10 +19,10 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
+import { Amounts } from "@gnu-taler/taler-util";
import { isAfter, isFuture } from "date-fns";
import * as yup from "yup";
-import { AMOUNT_REGEX, PAYTO_REGEX } from "../utils/constants.js";
-import { Amounts } from "@gnu-taler/taler-util";
+import { PAYTO_REGEX } from "../utils/constants.js";
yup.setLocale({
mixed: {
diff --git a/packages/merchant-backoffice-ui/src/utils/amount.ts b/packages/merchant-backoffice-ui/src/utils/amount.ts
index fda997619..c94101b4b 100644
--- a/packages/merchant-backoffice-ui/src/utils/amount.ts
+++ b/packages/merchant-backoffice-ui/src/utils/amount.ts
@@ -17,8 +17,8 @@ import {
amountFractionalBase,
AmountJson,
Amounts,
+ TalerMerchantApi,
} from "@gnu-taler/taler-util";
-import { MerchantBackend } from "../declaration.js";
/**
* merge refund with the same description and a difference less than one minute
@@ -27,9 +27,9 @@ import { MerchantBackend } from "../declaration.js";
* @returns list with the new refund, may be merged with the last
*/
export function mergeRefunds(
- prev: MerchantBackend.Orders.RefundDetails[],
- cur: MerchantBackend.Orders.RefundDetails,
-): MerchantBackend.Orders.RefundDetails[] {
+ prev: TalerMerchantApi.RefundDetails[],
+ cur: TalerMerchantApi.RefundDetails,
+): TalerMerchantApi.RefundDetails[] {
let tail;
if (
diff --git a/packages/merchant-backoffice-ui/src/utils/table.ts b/packages/merchant-backoffice-ui/src/utils/table.ts
index 306328aa1..982b68e5e 100644
--- a/packages/merchant-backoffice-ui/src/utils/table.ts
+++ b/packages/merchant-backoffice-ui/src/utils/table.ts
@@ -14,7 +14,6 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { WithId } from "../declaration.js";
/**
*
diff --git a/packages/merchant-backoffice-ui/src/utils/types.ts b/packages/merchant-backoffice-ui/src/utils/types.ts
index f96606a16..9ce6da4d1 100644
--- a/packages/merchant-backoffice-ui/src/utils/types.ts
+++ b/packages/merchant-backoffice-ui/src/utils/types.ts
@@ -23,7 +23,7 @@ export interface KeyValue {
export interface Notification {
message: string;
description?: string | VNode;
- details?: string | VNode;
+ details?: string | VNode | string;
type: MessageType;
}
diff --git a/packages/taler-util/src/http-client/merchant.ts b/packages/taler-util/src/http-client/merchant.ts
index 688e80c29..3a2b7117d 100644
--- a/packages/taler-util/src/http-client/merchant.ts
+++ b/packages/taler-util/src/http-client/merchant.ts
@@ -128,15 +128,12 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#post-[-instances-$INSTANCE]-orders-$ORDER_ID-claim
*/
- async claimOrder(token: AccessToken, orderId: string, body: TalerMerchantApi.ClaimRequest) {
+ async claimOrder(orderId: string, body: TalerMerchantApi.ClaimRequest) {
const url = new URL(`orders/${orderId}/claim`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "POST",
body,
- headers: {
- Authorization: makeBearerTokenAuthHeader(token),
- }
});
switch (resp.status) {
@@ -341,6 +338,7 @@ export class TalerMerchantInstanceHttpClient {
* https://docs.taler.net/core/api-merchant.html#post-[-instances-$INSTANCE]-private-auth
*/
async updateCurrentInstanceAuthentication(
+ token: AccessToken,
body: TalerMerchantApi.InstanceAuthConfigurationMessage,
) {
const url = new URL(`private/auth`, this.baseUrl);
@@ -348,6 +346,9 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "POST",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
//
@@ -365,6 +366,7 @@ export class TalerMerchantInstanceHttpClient {
* https://docs.taler.net/core/api-merchant.html#patch-[-instances-$INSTANCE]-private
*/
async updateCurrentInstance(
+ token: AccessToken,
body: TalerMerchantApi.InstanceReconfigurationMessage,
) {
const url = new URL(`private`, this.baseUrl);
@@ -372,6 +374,9 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "PATCH",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.Ok:
@@ -387,11 +392,14 @@ export class TalerMerchantInstanceHttpClient {
* https://docs.taler.net/core/api-merchant.html#get-[-instances-$INSTANCE]-private
*
*/
- async getCurrentInstance() {
+ async getCurrentInstance(token: AccessToken) {
const url = new URL(`private`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -405,7 +413,7 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#delete-[-instances-$INSTANCE]-private
*/
- async deleteCurrentInstance(params: { purge?: boolean }) {
+ async deleteCurrentInstance(token: AccessToken, params: { purge?: boolean }) {
const url = new URL(`private`, this.baseUrl);
if (params.purge) {
@@ -414,6 +422,9 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -434,6 +445,7 @@ export class TalerMerchantInstanceHttpClient {
* https://docs.taler.net/core/api-merchant.html#get--instances-$INSTANCE-private-kyc
*/
async getCurrentIntanceKycStatus(
+ token: AccessToken,
params: TalerMerchantApi.GetKycStatusRequestParams,
) {
const url = new URL(`private/kyc`, this.baseUrl);
@@ -450,6 +462,9 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -475,12 +490,15 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#post-[-instances-$INSTANCE]-private-accounts
*/
- async addAccount(body: TalerMerchantApi.AccountAddDetails) {
+ async addAccount(token: AccessToken,body: TalerMerchantApi.AccountAddDetails) {
const url = new URL(`private/accounts`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "POST",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -499,6 +517,7 @@ export class TalerMerchantInstanceHttpClient {
* https://docs.taler.net/core/api-merchant.html#patch-[-instances-$INSTANCE]-private-accounts-$H_WIRE
*/
async updateAccount(
+ token: AccessToken,
wireAccount: string,
body: TalerMerchantApi.AccountPatchDetails,
) {
@@ -507,6 +526,9 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "PATCH",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.NoContent:
@@ -544,11 +566,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#get-[-instances-$INSTANCE]-private-accounts-$H_WIRE
*/
- async getAccount(wireAccount: string) {
+ async getAccount(token: AccessToken,wireAccount: string) {
const url = new URL(`private/accounts/${wireAccount}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ },
});
switch (resp.status) {
@@ -564,11 +589,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#delete-[-instances-$INSTANCE]-private-accounts-$H_WIRE
*/
- async deleteAccount(wireAccount: string) {
+ async deleteAccount(token: AccessToken,wireAccount: string) {
const url = new URL(`private/accounts/${wireAccount}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ },
});
switch (resp.status) {
@@ -588,12 +616,15 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#post-[-instances-$INSTANCE]-private-products
*/
- async addProduct(body: TalerMerchantApi.ProductAddDetail) {
+ async addProduct(token: AccessToken,body: TalerMerchantApi.ProductAddDetail) {
const url = new URL(`private/products`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "POST",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -610,6 +641,7 @@ export class TalerMerchantInstanceHttpClient {
* https://docs.taler.net/core/api-merchant.html#patch-[-instances-$INSTANCE]-private-products-$PRODUCT_ID
*/
async updateProduct(
+ token: AccessToken,
productId: string,
body: TalerMerchantApi.ProductAddDetail,
) {
@@ -618,6 +650,9 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "PATCH",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -635,13 +670,16 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#get-[-instances-$INSTANCE]-private-products
*/
- async listProducts(params?: PaginationParams) {
+ async listProducts(token: AccessToken,params?: PaginationParams) {
const url = new URL(`private/products`, this.baseUrl);
addMerchantPaginationParams(url, params);
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -657,11 +695,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#get-[-instances-$INSTANCE]-private-products-$PRODUCT_ID
*/
- async getProduct(productId: string) {
+ async getProduct(token: AccessToken,productId: string) {
const url = new URL(`private/products/${productId}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -677,11 +718,15 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#reserving-inventory
*/
- async lockProduct(productId: string) {
+ async lockProduct(token: AccessToken, productId: string, body: TalerMerchantApi.LockRequest) {
const url = new URL(`private/products/${productId}/lock`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "POST",
+ body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -699,11 +744,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#removing-products-from-inventory
*/
- async removeProduct(productId: string) {
+ async removeProduct(token: AccessToken,productId: string) {
const url = new URL(`private/products/${productId}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -725,12 +773,15 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#post-[-instances-$INSTANCE]-private-orders
*/
- async createOrder(body: TalerMerchantApi.PostOrderRequest) {
+ async createOrder(token: AccessToken,body: TalerMerchantApi.PostOrderRequest) {
const url = new URL(`private/orders`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "POST",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
return this.procesOrderCreationResponse(resp)
}
@@ -759,7 +810,7 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#inspecting-orders
*/
- async listOrders(params: TalerMerchantApi.ListOrdersRequestParams = {}) {
+ async listOrders(token: AccessToken,params: TalerMerchantApi.ListOrdersRequestParams = {}) {
const url = new URL(`private/orders`, this.baseUrl);
if (params.date) {
@@ -787,6 +838,9 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -801,6 +855,7 @@ export class TalerMerchantInstanceHttpClient {
* https://docs.taler.net/core/api-merchant.html#get-[-instances-$INSTANCE]-private-orders-$ORDER_ID
*/
async getOrder(
+ token: AccessToken,
orderId: string,
params: TalerMerchantApi.GetOrderRequestParams = {},
) {
@@ -818,6 +873,9 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -844,12 +902,15 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#private-order-data-cleanup
*/
- async forgetOrder(orderId: string, body: TalerMerchantApi.ForgetRequest) {
+ async forgetOrder(token: AccessToken,orderId: string, body: TalerMerchantApi.ForgetRequest) {
const url = new URL(`private/orders/${orderId}/forget`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "PATCH",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -871,11 +932,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#delete-[-instances-$INSTANCE]-private-orders-$ORDER_ID
*/
- async deleteOrder(orderId: string) {
+ async deleteOrder(token: AccessToken,orderId: string) {
const url = new URL(`private/orders/${orderId}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -897,12 +961,15 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#post-[-instances-$INSTANCE]-private-orders-$ORDER_ID-refund
*/
- async addRefund(orderId: string, body: TalerMerchantApi.RefundRequest) {
+ async addRefund(token: AccessToken,orderId: string, body: TalerMerchantApi.RefundRequest) {
const url = new URL(`private/orders/${orderId}/refund`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "POST",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -928,12 +995,15 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#post-[-instances-$INSTANCE]-private-transfers
*/
- async informWireTransfer(body: TalerMerchantApi.TransferInformation) {
+ async informWireTransfer(token: AccessToken,body: TalerMerchantApi.TransferInformation) {
const url = new URL(`private/transfers`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "POST",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -952,6 +1022,7 @@ export class TalerMerchantInstanceHttpClient {
* https://docs.taler.net/core/api-merchant.html#get-[-instances-$INSTANCE]-private-transfers
*/
async listWireTransfers(
+ token: AccessToken,
params: TalerMerchantApi.ListWireTransferRequestParams = {},
) {
const url = new URL(`private/transfers`, this.baseUrl);
@@ -972,6 +1043,9 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -985,11 +1059,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#delete-[-instances-$INSTANCE]-private-transfers-$TID
*/
- async deleteWireTransfer(transferId: string) {
+ async deleteWireTransfer(token: AccessToken,transferId: string) {
const url = new URL(`private/transfers/${transferId}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -1011,12 +1088,15 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#post-[-instances-$INSTANCE]-private-otp-devices
*/
- async addOtpDevice(body: TalerMerchantApi.OtpDeviceAddDetails) {
+ async addOtpDevice(token: AccessToken,body: TalerMerchantApi.OtpDeviceAddDetails) {
const url = new URL(`private/otp-devices`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "POST",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -1033,6 +1113,7 @@ export class TalerMerchantInstanceHttpClient {
* https://docs.taler.net/core/api-merchant.html#patch-[-instances-$INSTANCE]-private-otp-devices-$DEVICE_ID
*/
async updateOtpDevice(
+ token: AccessToken,
deviceId: string,
body: TalerMerchantApi.OtpDevicePatchDetails,
) {
@@ -1041,6 +1122,9 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "PATCH",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.NoContent:
@@ -1057,11 +1141,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#get-[-instances-$INSTANCE]-private-otp-devices
*/
- async listOtpDevices() {
+ async listOtpDevices(token: AccessToken,) {
const url = new URL(`private/otp-devices`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.Ok:
@@ -1077,6 +1164,7 @@ export class TalerMerchantInstanceHttpClient {
* https://docs.taler.net/core/api-merchant.html#get-[-instances-$INSTANCE]-private-otp-devices-$DEVICE_ID
*/
async getOtpDevice(
+ token: AccessToken,
deviceId: string,
params: TalerMerchantApi.GetOtpDeviceRequestParams = {},
) {
@@ -1090,6 +1178,9 @@ export class TalerMerchantInstanceHttpClient {
}
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -1105,11 +1196,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#delete-[-instances-$INSTANCE]-private-otp-devices-$DEVICE_ID
*/
- async deleteOtpDevice(deviceId: string) {
+ async deleteOtpDevice(token: AccessToken,deviceId: string) {
const url = new URL(`private/otp-devices/${deviceId}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.NoContent:
@@ -1128,12 +1222,15 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#post-[-instances-$INSTANCE]-private-templates
*/
- async addTemplate(body: TalerMerchantApi.TemplateAddDetails) {
+ async addTemplate(token: AccessToken,body: TalerMerchantApi.TemplateAddDetails) {
const url = new URL(`private/templates`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "POST",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.NoContent:
@@ -1149,6 +1246,7 @@ export class TalerMerchantInstanceHttpClient {
* https://docs.taler.net/core/api-merchant.html#patch-[-instances-$INSTANCE]-private-templates-$TEMPLATE_ID
*/
async updateTemplate(
+ token: AccessToken,
templateId: string,
body: TalerMerchantApi.TemplatePatchDetails,
) {
@@ -1157,6 +1255,9 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "PATCH",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.NoContent:
@@ -1173,11 +1274,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#inspecting-template
*/
- async listTemplates() {
+ async listTemplates(token: AccessToken,) {
const url = new URL(`private/templates`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.Ok:
@@ -1192,11 +1296,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#get-[-instances-$INSTANCE]-private-templates-$TEMPLATE_ID
*/
- async getTemplate(templateId: string) {
+ async getTemplate(token: AccessToken,templateId: string) {
const url = new URL(`private/templates/${templateId}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.Ok:
@@ -1211,11 +1318,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#delete-[-instances-$INSTANCE]-private-templates-$TEMPLATE_ID
*/
- async deleteTemplate(templateId: string) {
+ async deleteTemplate(token: AccessToken,templateId: string) {
const url = new URL(`private/templates/${templateId}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.NoContent:
@@ -1270,12 +1380,15 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#post-[-instances-$INSTANCES]-private-webhooks
*/
- async addWebhook(body: TalerMerchantApi.WebhookAddDetails) {
+ async addWebhook(token: AccessToken,body: TalerMerchantApi.WebhookAddDetails) {
const url = new URL(`private/webhooks`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "POST",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -1292,6 +1405,7 @@ export class TalerMerchantInstanceHttpClient {
* https://docs.taler.net/core/api-merchant.html#patch-[-instances-$INSTANCES]-private-webhooks-$WEBHOOK_ID
*/
async updateWebhook(
+ token: AccessToken,
webhookId: string,
body: TalerMerchantApi.WebhookPatchDetails,
) {
@@ -1300,6 +1414,9 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "PATCH",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -1317,11 +1434,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#get-[-instances-$INSTANCES]-private-webhooks
*/
- async listWebhooks() {
+ async listWebhooks(token: AccessToken,) {
const url = new URL(`private/webhooks`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -1337,11 +1457,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#get-[-instances-$INSTANCES]-private-webhooks-$WEBHOOK_ID
*/
- async getWebhook(webhookId: string) {
+ async getWebhook(token: AccessToken,webhookId: string) {
const url = new URL(`private/webhooks/${webhookId}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.NoContent:
@@ -1356,11 +1479,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#delete-[-instances-$INSTANCES]-private-webhooks-$WEBHOOK_ID
*/
- async removeWebhook(webhookId: string) {
+ async removeWebhook(token: AccessToken,webhookId: string) {
const url = new URL(`private/webhooks/${webhookId}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.NoContent:
@@ -1379,12 +1505,15 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#post-[-instances-$INSTANCES]-private-tokenfamilies
*/
- async createTokenFamily(body: TalerMerchantApi.TokenFamilyCreateRequest) {
+ async createTokenFamily(token: AccessToken,body: TalerMerchantApi.TokenFamilyCreateRequest) {
const url = new URL(`private/tokenfamilies`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "POST",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -1401,6 +1530,7 @@ export class TalerMerchantInstanceHttpClient {
* https://docs.taler.net/core/api-merchant.html#patch-[-instances-$INSTANCES]-private-tokenfamilies-$TOKEN_FAMILY_SLUG
*/
async updateTokenFamily(
+ token: AccessToken,
tokenSlug: string,
body: TalerMerchantApi.TokenFamilyUpdateRequest,
) {
@@ -1409,6 +1539,9 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "POST",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.Ok:
@@ -1423,11 +1556,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#get-[-instances-$INSTANCES]-private-tokenfamilies
*/
- async listTokenFamilies() {
+ async listTokenFamilies(token: AccessToken,) {
const url = new URL(`private/tokenfamilies`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -1443,11 +1579,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#get-[-instances-$INSTANCES]-private-tokenfamilies-$TOKEN_FAMILY_SLUG
*/
- async getTokenFamily(tokenSlug: string) {
+ async getTokenFamily(token: AccessToken,tokenSlug: string) {
const url = new URL(`private/tokenfamilies/${tokenSlug}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -1463,11 +1602,14 @@ export class TalerMerchantInstanceHttpClient {
/**
* https://docs.taler.net/core/api-merchant.html#delete-[-instances-$INSTANCES]-private-tokenfamilies-$TOKEN_FAMILY_SLUG
*/
- async deleteTokenFamily(tokenSlug: string) {
+ async deleteTokenFamily(token: AccessToken,tokenSlug: string) {
const url = new URL(`private/tokenfamilies/${tokenSlug}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.NoContent:
@@ -1514,12 +1656,15 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
/**
* https://docs.taler.net/core/api-merchant.html#post--management-instances
*/
- async createInstance(body: TalerMerchantApi.InstanceConfigurationMessage) {
+ async createInstance(token: AccessToken,body: TalerMerchantApi.InstanceConfigurationMessage) {
const url = new URL(`management/instances`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "POST",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
@@ -1539,6 +1684,7 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
* https://docs.taler.net/core/api-merchant.html#post--management-instances-$INSTANCE-auth
*/
async updateInstanceAuthentication(
+ token: AccessToken,
body: TalerMerchantApi.InstanceAuthConfigurationMessage,
) {
const url = new URL(`management/instances`, this.baseUrl);
@@ -1546,6 +1692,9 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
const resp = await this.httpLib.fetch(url.href, {
method: "POST",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -1562,6 +1711,7 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
* https://docs.taler.net/core/api-merchant.html#patch--management-instances-$INSTANCE
*/
async updateInstance(
+ token: AccessToken,
instanceId: string,
body: TalerMerchantApi.InstanceReconfigurationMessage,
) {
@@ -1570,6 +1720,9 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
const resp = await this.httpLib.fetch(url.href, {
method: "PATCH",
body,
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.NoContent:
@@ -1584,11 +1737,14 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
/**
* https://docs.taler.net/core/api-merchant.html#get--management-instances
*/
- async listInstances() {
+ async listInstances(token: AccessToken,) {
const url = new URL(`management/instances`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -1603,11 +1759,14 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
* https://docs.taler.net/core/api-merchant.html#get--management-instances-$INSTANCE
*
*/
- async getInstance(instanceId: string) {
+ async getInstance(token: AccessToken,instanceId: string) {
const url = new URL(`management/instances/${instanceId}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
@@ -1621,7 +1780,7 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
/**
* https://docs.taler.net/core/api-merchant.html#delete--management-instances-$INSTANCE
*/
- async deleteInstance(instanceId: string, params: { purge?: boolean } = {}) {
+ async deleteInstance(token: AccessToken,instanceId: string, params: { purge?: boolean } = {}) {
const url = new URL(`management/instances/${instanceId}`, this.baseUrl);
if (params.purge) {
@@ -1630,6 +1789,9 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.NoContent:
@@ -1649,6 +1811,7 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
* https://docs.taler.net/core/api-merchant.html#get--management-instances-$INSTANCE-kyc
*/
async getIntanceKycStatus(
+ token: AccessToken,
instanceId: string,
params: TalerMerchantApi.GetKycStatusRequestParams,
) {
@@ -1666,6 +1829,9 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(token),
+ }
});
switch (resp.status) {
case HttpStatusCode.Accepted:
diff --git a/packages/taler-util/src/http-client/types.ts b/packages/taler-util/src/http-client/types.ts
index 7f97f9ff1..8578eecd4 100644
--- a/packages/taler-util/src/http-client/types.ts
+++ b/packages/taler-util/src/http-client/types.ts
@@ -3933,7 +3933,7 @@ export namespace TalerMerchantApi {
// Minimum age buyer must have (in years).
minimum_age?: Integer;
}
- interface LockRequest {
+ export interface LockRequest {
// UUID that identifies the frontend performing the lock
// Must be unique for the lifetime of the lock.
lock_uuid: string;
@@ -3973,7 +3973,7 @@ export namespace TalerMerchantApi {
// be used in case different UUIDs were used for different
// products (i.e. in case the user started with multiple
// shopping sessions that were combined during checkout).
- lock_uuids: string[];
+ lock_uuids?: string[];
// Should a token for claiming the order be generated?
// False can make sense if the ORDER_ID is sufficiently
@@ -5005,7 +5005,7 @@ export namespace TalerMerchantApi {
}
// Delivery location, loosely modeled as a subset of
// ISO20022's PostalAddress25.
- interface Location {
+ export interface Location {
// Nation with its own government.
country?: string;