[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-wallet-core] branch master updated: splitted rollup config for te
From: |
gnunet |
Subject: |
[taler-wallet-core] branch master updated: splitted rollup config for testing and first component state unit test |
Date: |
Wed, 23 Mar 2022 20:20:49 +0100 |
This is an automated email from the git hooks/post-receive script.
sebasjm pushed a commit to branch master
in repository wallet-core.
The following commit(s) were added to refs/heads/master by this push:
new e21c1b31 splitted rollup config for testing and first component state
unit test
e21c1b31 is described below
commit e21c1b31928cd6bfe90150ea2de19799b6359c40
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Wed Mar 23 16:20:39 2022 -0300
splitted rollup config for testing and first component state unit test
---
packages/taler-wallet-webextension/encode.mjs | 3 +
packages/taler-wallet-webextension/package.json | 3 +-
.../taler-wallet-webextension/rollup.config.js | 41 +---
.../rollup.config.test.js | 47 +++++
.../run-wallet-in-browser.html | 14 ++
.../src/hooks/useTalerActionURL.test.ts | 6 +-
.../taler-wallet-webextension/src/stories.test.ts | 1 -
.../taler-wallet-webextension/src/test-utils.ts | 40 ++--
.../src/wallet/CreateManualWithdraw.stories.tsx | 12 +-
.../src/wallet/CreateManualWithdraw.test.ts | 212 +++++++++++++++++++++
.../src/wallet/CreateManualWithdraw.tsx | 57 ++++--
.../src/wallet/ManualWithdrawPage.tsx | 2 +-
packages/taler-wallet-webextension/src/wxApi.ts | 2 +-
13 files changed, 349 insertions(+), 91 deletions(-)
diff --git a/packages/taler-wallet-webextension/encode.mjs
b/packages/taler-wallet-webextension/encode.mjs
new file mode 100644
index 00000000..16de7f64
--- /dev/null
+++ b/packages/taler-wallet-webextension/encode.mjs
@@ -0,0 +1,3 @@
+import {encodeCrock, stringToBytes} from "../taler-util/lib/talerCrypto.js";
+const pepe =process.argv[2]
+console.log(pepe, encodeCrock(stringToBytes(pepe)));
diff --git a/packages/taler-wallet-webextension/package.json
b/packages/taler-wallet-webextension/package.json
index 18563312..eaad4a4f 100644
--- a/packages/taler-wallet-webextension/package.json
+++ b/packages/taler-wallet-webextension/package.json
@@ -12,6 +12,7 @@
"test": "mocha --enable-source-maps 'dist/**/*.test.js'",
"test:coverage": "nyc pnpm test",
"compile": "rollup -c -m",
+ "compile:test": "rollup -c rollup.config.test.js -m",
"prepare": "rollup -c -m",
"build-storybook": "build-storybook",
"storybook": "start-storybook -s . -p 6006 --no-open",
@@ -84,4 +85,4 @@
"pogen": {
"domain": "taler-wallet-webex"
}
-}
+}
\ No newline at end of file
diff --git a/packages/taler-wallet-webextension/rollup.config.js
b/packages/taler-wallet-webextension/rollup.config.js
index 8058ce25..8945b48a 100644
--- a/packages/taler-wallet-webextension/rollup.config.js
+++ b/packages/taler-wallet-webextension/rollup.config.js
@@ -10,30 +10,7 @@ import css from 'rollup-plugin-css-only';
import ignore from "rollup-plugin-ignore";
import typescript from '@rollup/plugin-typescript';
-import path from 'path';
-import fs from 'fs';
-
-function fromDir(startPath, regex) {
- if (!fs.existsSync(startPath)) {
- return;
- }
- const files = fs.readdirSync(startPath);
- const result = files.flatMap(file => {
- const filename = path.join(startPath, file);
-
- const stat = fs.lstatSync(filename);
- if (stat.isDirectory()) {
- return fromDir(filename, regex);
- }
- else if (regex.test(filename)) {
- return filename
- }
- }).filter(x => !!x)
-
- return result
-}
-
-const makePlugins = () => [
+export const makePlugins = () => [
typescript({
outputToFilesystem: false,
}),
@@ -135,26 +112,10 @@ const webExtensionCryptoWorker = {
plugins: makePlugins(),
};
-const tests = fromDir('./src', /.test.ts$/).map(test => ({
- input: test,
- output: {
- file: test.replace(/^src/, 'dist').replace(/\.ts$/, '.js'),
- format: "iife",
- exports: "none",
- name: test,
- },
- plugins: [
- ...makePlugins(),
- css({
- output: 'walletEntryPoint.css',
- }),
- ],
-}))
export default [
webExtensionPopupEntryPoint,
webExtensionWalletEntryPoint,
webExtensionBackgroundPageScript,
webExtensionCryptoWorker,
- ...tests,
];
diff --git a/packages/taler-wallet-webextension/rollup.config.test.js
b/packages/taler-wallet-webextension/rollup.config.test.js
new file mode 100644
index 00000000..387e176b
--- /dev/null
+++ b/packages/taler-wallet-webextension/rollup.config.test.js
@@ -0,0 +1,47 @@
+// rollup.config.js
+import fs from 'fs';
+import path from 'path';
+import css from 'rollup-plugin-css-only';
+import { makePlugins } from "./rollup.config"
+
+function fromDir(startPath, regex) {
+ if (!fs.existsSync(startPath)) {
+ return;
+ }
+ const files = fs.readdirSync(startPath);
+ const result = files.flatMap(file => {
+ const filename = path.join(startPath, file);
+
+ const stat = fs.lstatSync(filename);
+ if (stat.isDirectory()) {
+ return fromDir(filename, regex);
+ }
+ else if (regex.test(filename)) {
+ return filename
+ }
+ }).filter(x => !!x)
+
+ return result
+}
+
+const tests = fromDir('./src', /.test.ts$/)
+ .filter(t => t === 'src/wallet/CreateManualWithdraw.test.ts')
+ .map(test => ({
+ input: test,
+ output: {
+ file: test.replace(/^src/, 'dist').replace(/\.ts$/, '.js'),
+ format: "iife",
+ exports: "none",
+ name: test,
+ },
+ plugins: [
+ ...makePlugins(),
+ css({
+ output: 'walletEntryPoint.css',
+ }),
+ ],
+ }))
+
+export default [
+ ...tests,
+];
diff --git a/packages/taler-wallet-webextension/run-wallet-in-browser.html
b/packages/taler-wallet-webextension/run-wallet-in-browser.html
new file mode 100644
index 00000000..d0ee34ac
--- /dev/null
+++ b/packages/taler-wallet-webextension/run-wallet-in-browser.html
@@ -0,0 +1,14 @@
+<html>
+ <head>
+ <link rel="manifest" href="./manifest.json" />
+ </head>
+ <body>
+ <iframe src="./static/popup.html" name="popup" width="500" height="400">
+ algo
+ </iframe>
+ <hr />
+ <iframe src="./static/wallet.html" name="wallet" width="800" height="100%">
+ otroe
+ </iframe>
+ </body>
+</html>
diff --git
a/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.test.ts
b/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.test.ts
index 99934ef0..95c77cd7 100644
--- a/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.test.ts
+++ b/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.test.ts
@@ -14,7 +14,7 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
import { useTalerActionURL } from "./useTalerActionURL"
-import { justBrowser_it, mountBrowser } from "../test-utils";
+import { mountHook } from "../test-utils";
import { IoCProviderForTesting } from "../context/iocContext";
import { h, VNode } from "preact";
import { act } from "preact/test-utils";
@@ -22,7 +22,7 @@ import { act } from "preact/test-utils";
describe('useTalerActionURL hook', () => {
// eslint-disable-next-line jest/expect-expect
- justBrowser_it('should be set url to undefined when dismiss', async () => {
+ it('should be set url to undefined when dismiss', async () => {
const ctx = ({ children }: { children: any }): VNode => {
return h(IoCProviderForTesting, {
@@ -32,7 +32,7 @@ describe('useTalerActionURL hook', () => {
})
}
- const { result, waitNextUpdate } = mountBrowser(useTalerActionURL, ctx)
+ const { result, waitNextUpdate } = mountHook(useTalerActionURL, ctx)
{
const [url] = result.current!
diff --git a/packages/taler-wallet-webextension/src/stories.test.ts
b/packages/taler-wallet-webextension/src/stories.test.ts
index e2d43d5c..db697460 100644
--- a/packages/taler-wallet-webextension/src/stories.test.ts
+++ b/packages/taler-wallet-webextension/src/stories.test.ts
@@ -31,7 +31,6 @@ function testThisStory(st: any): any {
const Component = (st as any)[k];
if (k === "default" || !Component) return;
-
// eslint-disable-next-line jest/expect-expect
it(`example: ${k}`, () => {
renderNodeOrBrowser(Component, Component.args);
diff --git a/packages/taler-wallet-webextension/src/test-utils.ts
b/packages/taler-wallet-webextension/src/test-utils.ts
index 8c721a9d..30b37ab8 100644
--- a/packages/taler-wallet-webextension/src/test-utils.ts
+++ b/packages/taler-wallet-webextension/src/test-utils.ts
@@ -62,7 +62,9 @@ interface Mounted<T> {
waitNextUpdate: () => Promise<void>;
}
-export function mountBrowser<T>(callback: () => T, Context?: ({ children }: {
children: any }) => VNode): Mounted<T> {
+const isNode = typeof window === "undefined"
+
+export function mountHook<T>(callback: () => T, Context?: ({ children }: {
children: any }) => VNode): Mounted<T> {
const result: { current: T | null } = {
current: null
}
@@ -81,23 +83,6 @@ export function mountBrowser<T>(callback: () => T, Context?:
({ children }: { ch
// create the vdom with context if required
const vdom = !Context ? create(Component, {}) : create(Context, { children:
[create(Component, {})] },);
- // in non-browser environment (server side rendering) just serialize to
- // string and exit
- if (typeof window === "undefined") {
- renderToString(vdom);
- return { unmount: () => null, result } as any
- }
-
- // do the render into the DOM
- const div = document.createElement("div");
- document.body.appendChild(div);
- renderIntoDom(vdom, div);
-
- // clean up callback
- function unmount(): any {
- document.body.removeChild(div);
- }
-
// waiter callback
async function waitNextUpdate(): Promise<void> {
await new Promise((res, rej) => {
@@ -112,11 +97,22 @@ export function mountBrowser<T>(callback: () => T,
Context?: ({ children }: { ch
})
}
+ const customElement = {} as Element
+ const parentElement = isNode ? customElement : document.createElement("div");
+ if (!isNode) {
+ document.body.appendChild(parentElement);
+ }
+
+ renderIntoDom(vdom, parentElement);
+
+ // clean up callback
+ function unmount() {
+ if (!isNode) {
+ document.body.removeChild(parentElement);
+ }
+ }
+
return {
unmount, result, waitNextUpdate
}
}
-
-const nullTestFunction = {} as TestFunction
-export const justBrowser_it: PendingTestFunction | TestFunction =
- typeof it === 'undefined' ? nullTestFunction : (typeof window ===
'undefined' ? it.skip : it)
\ No newline at end of file
diff --git
a/packages/taler-wallet-webextension/src/wallet/CreateManualWithdraw.stories.tsx
b/packages/taler-wallet-webextension/src/wallet/CreateManualWithdraw.stories.tsx
index e4955e37..407d4ef3 100644
---
a/packages/taler-wallet-webextension/src/wallet/CreateManualWithdraw.stories.tsx
+++
b/packages/taler-wallet-webextension/src/wallet/CreateManualWithdraw.stories.tsx
@@ -29,30 +29,30 @@ export default {
};
// ,
-const exchangeList = {
+const exchangeUrlWithCurrency = {
"http://exchange.taler:8081": "COL",
"http://exchange.tal": "EUR",
};
export const WithoutAnyExchangeKnown = createExample(TestedComponent, {
- exchangeList: {},
+ exchangeUrlWithCurrency: {},
});
export const InitialState = createExample(TestedComponent, {
- exchangeList,
+ exchangeUrlWithCurrency,
});
export const WithAmountInitialized = createExample(TestedComponent, {
initialAmount: "10",
- exchangeList,
+ exchangeUrlWithCurrency,
});
export const WithExchangeError = createExample(TestedComponent, {
error: "The exchange url seems invalid",
- exchangeList,
+ exchangeUrlWithCurrency,
});
export const WithAmountError = createExample(TestedComponent, {
initialAmount: "e",
- exchangeList,
+ exchangeUrlWithCurrency,
});
diff --git
a/packages/taler-wallet-webextension/src/wallet/CreateManualWithdraw.test.ts
b/packages/taler-wallet-webextension/src/wallet/CreateManualWithdraw.test.ts
new file mode 100644
index 00000000..a5174bef
--- /dev/null
+++ b/packages/taler-wallet-webextension/src/wallet/CreateManualWithdraw.test.ts
@@ -0,0 +1,212 @@
+/*
+ This file is part of GNU Taler
+ (C) 2021 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 { SelectFieldHandler, TextFieldHandler, useComponentState } from
"./CreateManualWithdraw";
+import { expect } from "chai";
+import { mountHook } from "../test-utils";
+
+
+const exchangeListWithARSandUSD = {
+ "url1": "USD",
+ "url2": "ARS",
+ "url3": "ARS",
+};
+
+const exchangeListEmpty = {
+};
+
+describe("CreateManualWithdraw states", () => {
+ it("should set noExchangeFound when exchange list is empty", () => {
+ const { result } = mountHook(() =>
+ useComponentState(exchangeListEmpty, undefined, undefined),
+ );
+
+ if (!result.current) {
+ expect(result.current).not.to.be.undefined;
+ return;
+ }
+
+ expect(result.current.noExchangeFound).equal(true)
+ });
+
+ it("should set noExchangeFound when exchange list doesn't include selected
currency", () => {
+ const { result } = mountHook(() =>
+ useComponentState(exchangeListWithARSandUSD, undefined, "COL"),
+ );
+
+ if (!result.current) {
+ expect(result.current).not.to.be.undefined;
+ return;
+ }
+
+ expect(result.current.noExchangeFound).equal(true)
+ });
+
+
+ it("should select the first exchange from the list", () => {
+ const { result } = mountHook(() =>
+ useComponentState(exchangeListWithARSandUSD, undefined, undefined),
+ );
+
+ if (!result.current) {
+ expect(result.current).not.to.be.undefined;
+ return;
+ }
+
+ expect(result.current.exchange.value).equal("url1")
+ });
+
+ it("should select the first exchange with the selected currency", () => {
+ const { result } = mountHook(() =>
+ useComponentState(exchangeListWithARSandUSD, undefined, "ARS"),
+ );
+
+ if (!result.current) {
+ expect(result.current).not.to.be.undefined;
+ return;
+ }
+
+ expect(result.current.exchange.value).equal("url2")
+ });
+
+ it("should change the exchange when currency change", async () => {
+ const { result, waitNextUpdate } = mountHook(() =>
+ useComponentState(exchangeListWithARSandUSD, undefined, "ARS"),
+ );
+
+ if (!result.current) {
+ expect.fail("hook didn't render");
+ }
+
+ expect(result.current.exchange.value).equal("url2")
+
+ result.current.currency.onChange("USD")
+
+ await waitNextUpdate()
+
+ expect(result.current.exchange.value).equal("url1")
+
+ });
+
+ it("should change the currency when exchange change", async () => {
+ const { result, waitNextUpdate } = mountHook(() =>
+ useComponentState(exchangeListWithARSandUSD, undefined, "ARS"),
+ );
+
+ if (!result.current) {
+ expect.fail("hook didn't render");
+ }
+
+ expect(result.current.exchange.value).equal("url2")
+ expect(result.current.currency.value).equal("ARS")
+
+ result.current.exchange.onChange("url1")
+
+ await waitNextUpdate()
+
+ expect(result.current.exchange.value).equal("url1")
+ expect(result.current.currency.value).equal("USD")
+ });
+
+ it("should update parsed amount when amount change", async () => {
+ const { result, waitNextUpdate } = mountHook(() =>
+ useComponentState(exchangeListWithARSandUSD, undefined, "ARS"),
+ );
+
+ if (!result.current) {
+ expect.fail("hook didn't render");
+ }
+
+ expect(result.current.parsedAmount).equal(undefined)
+
+ result.current.amount.onInput("12")
+
+ await waitNextUpdate()
+
+ expect(result.current.parsedAmount).deep.equals({
+ value: 12, fraction: 0, currency: "ARS"
+ })
+ });
+
+ it("should have an amount field", async () => {
+ const { result, waitNextUpdate } = mountHook(() =>
+ useComponentState(exchangeListWithARSandUSD, undefined, "ARS"),
+ );
+
+ if (!result.current) {
+ expect.fail("hook didn't render");
+ }
+
+ await defaultTestForInputText(waitNextUpdate, () => result.current!.amount)
+ })
+
+ it("should have an exchange selector ", async () => {
+ const { result, waitNextUpdate } = mountHook(() =>
+ useComponentState(exchangeListWithARSandUSD, undefined, "ARS"),
+ );
+
+ if (!result.current) {
+ expect.fail("hook didn't render");
+ }
+
+ await defaultTestForInputSelect(waitNextUpdate, () =>
result.current!.exchange)
+ })
+
+ it("should have a currency selector ", async () => {
+ const { result, waitNextUpdate } = mountHook(() =>
+ useComponentState(exchangeListWithARSandUSD, undefined, "ARS"),
+ );
+
+ if (!result.current) {
+ expect.fail("hook didn't render");
+ }
+
+ await defaultTestForInputSelect(waitNextUpdate, () =>
result.current!.currency)
+ })
+
+});
+
+
+async function defaultTestForInputText(awaiter: () => Promise<void>, getField:
() => TextFieldHandler) {
+ const initialValue = getField().value;
+ const otherValue = `${initialValue} something else`
+ getField().onInput(otherValue)
+
+ await awaiter()
+
+ expect(getField().value).equal(otherValue)
+}
+
+
+async function defaultTestForInputSelect(awaiter: () => Promise<void>,
getField: () => SelectFieldHandler) {
+ const initialValue = getField().value;
+ const keys = Object.keys(getField().list)
+ const nextIdx = keys.indexOf(initialValue) + 1
+ if (keys.length < nextIdx) {
+ throw new Error('no enough values')
+ }
+ const nextValue = keys[nextIdx]
+ getField().onChange(nextValue)
+
+ await awaiter()
+
+ expect(getField().value).equal(nextValue)
+}
diff --git
a/packages/taler-wallet-webextension/src/wallet/CreateManualWithdraw.tsx
b/packages/taler-wallet-webextension/src/wallet/CreateManualWithdraw.tsx
index 068135ae..2d5129a3 100644
--- a/packages/taler-wallet-webextension/src/wallet/CreateManualWithdraw.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/CreateManualWithdraw.tsx
@@ -39,20 +39,39 @@ import { Pages } from "../NavigationBar";
export interface Props {
error: string | undefined;
initialAmount?: string;
- exchangeList: Record<string, string>;
+ exchangeUrlWithCurrency: Record<string, string>;
onCreate: (exchangeBaseUrl: string, amount: AmountJson) => Promise<void>;
initialCurrency?: string;
}
+export interface State {
+ noExchangeFound: boolean;
+ parsedAmount: AmountJson | undefined;
+ amount: TextFieldHandler;
+ currency: SelectFieldHandler;
+ exchange: SelectFieldHandler;
+}
+
+export interface TextFieldHandler {
+ onInput: (value: string) => void;
+ value: string;
+}
+
+export interface SelectFieldHandler {
+ onChange: (value: string) => void;
+ value: string;
+ list: Record<string, string>;
+}
+
export function useComponentState(
- exchangeList: Record<string, string>,
+ exchangeUrlWithCurrency: Record<string, string>,
initialAmount: string | undefined,
initialCurrency: string | undefined,
-) {
- const exchangeSelectList = Object.keys(exchangeList);
- const currencySelectList = Object.values(exchangeList);
+): State {
+ const exchangeSelectList = Object.keys(exchangeUrlWithCurrency);
+ const currencySelectList = Object.values(exchangeUrlWithCurrency);
const exchangeMap = exchangeSelectList.reduce(
- (p, c) => ({ ...p, [c]: `${c} (${exchangeList[c]})` }),
+ (p, c) => ({ ...p, [c]: `${c} (${exchangeUrlWithCurrency[c]})` }),
{} as Record<string, string>,
);
const currencyMap = currencySelectList.reduce(
@@ -61,7 +80,7 @@ export function useComponentState(
);
const foundExchangeForCurrency = exchangeSelectList.findIndex(
- (e) => exchangeList[e] === initialCurrency,
+ (e) => exchangeUrlWithCurrency[e] === initialCurrency,
);
const initialExchange =
@@ -73,7 +92,7 @@ export function useComponentState(
const [exchange, setExchange] = useState(initialExchange || "");
const [currency, setCurrency] = useState(
- initialExchange ? exchangeList[initialExchange] : "",
+ initialExchange ? exchangeUrlWithCurrency[initialExchange] : "",
);
const [amount, setAmount] = useState(initialAmount || "");
@@ -81,12 +100,14 @@ export function useComponentState(
function changeExchange(exchange: string): void {
setExchange(exchange);
- setCurrency(exchangeList[exchange]);
+ setCurrency(exchangeUrlWithCurrency[exchange]);
}
function changeCurrency(currency: string): void {
setCurrency(currency);
- const found = Object.entries(exchangeList).find((e) => e[1] === currency);
+ const found = Object.entries(exchangeUrlWithCurrency).find(
+ (e) => e[1] === currency,
+ );
if (found) {
setExchange(found[0]);
@@ -95,7 +116,7 @@ export function useComponentState(
}
}
return {
- initialExchange,
+ noExchangeFound: initialExchange === undefined,
currency: {
list: currencyMap,
value: currency,
@@ -114,12 +135,12 @@ export function useComponentState(
};
}
-interface InputHandler {
+export interface InputHandler {
value: string;
onInput: (s: string) => void;
}
-interface SelectInputHandler {
+export interface SelectInputHandler {
list: Record<string, string>;
value: string;
onChange: (s: string) => void;
@@ -127,16 +148,20 @@ interface SelectInputHandler {
export function CreateManualWithdraw({
initialAmount,
- exchangeList,
+ exchangeUrlWithCurrency,
error,
initialCurrency,
onCreate,
}: Props): VNode {
const { i18n } = useTranslationContext();
- const state = useComponentState(exchangeList, initialAmount,
initialCurrency);
+ const state = useComponentState(
+ exchangeUrlWithCurrency,
+ initialAmount,
+ initialCurrency,
+ );
- if (!state.initialExchange) {
+ if (state.noExchangeFound) {
if (initialCurrency !== undefined) {
return (
<section>
diff --git
a/packages/taler-wallet-webextension/src/wallet/ManualWithdrawPage.tsx
b/packages/taler-wallet-webextension/src/wallet/ManualWithdrawPage.tsx
index b7e63bbf..05c51850 100644
--- a/packages/taler-wallet-webextension/src/wallet/ManualWithdrawPage.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/ManualWithdrawPage.tsx
@@ -110,7 +110,7 @@ export function ManualWithdrawPage({ currency, onCancel }:
Props): VNode {
return (
<CreateManualWithdraw
error={error}
- exchangeList={exchangeList}
+ exchangeUrlWithCurrency={exchangeList}
onCreate={doCreate}
initialCurrency={currency}
/>
diff --git a/packages/taler-wallet-webextension/src/wxApi.ts
b/packages/taler-wallet-webextension/src/wxApi.ts
index ee2a8106..4b0383f8 100644
--- a/packages/taler-wallet-webextension/src/wxApi.ts
+++ b/packages/taler-wallet-webextension/src/wxApi.ts
@@ -104,7 +104,7 @@ async function callBackend(operation: string, payload:
any): Promise<any> {
}
console.log("got response", response);
if (response.type === "error") {
- throw new TalerError.fromUncheckedDetail(response.error);
+ throw TalerError.fromUncheckedDetail(response.error);
}
return response.result;
}
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-wallet-core] branch master updated: splitted rollup config for testing and first component state unit test,
gnunet <=