aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-embedded
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2023-06-30 17:52:24 -0600
committerIván Ávalos <avalos@disroot.org>2023-07-26 12:09:17 -0600
commitef51ba983f49b32a04bb8460f24f720f7952f306 (patch)
tree9a8aad3bc818066b8677c626887ce08631cb1837 /packages/taler-wallet-embedded
parent0b606028339d8256643ce60f11e72a090a301b58 (diff)
downloadwallet-core-ef51ba983f49b32a04bb8460f24f720f7952f306.tar.xz
WIP: initial work for Anastasis in qtart
Diffstat (limited to 'packages/taler-wallet-embedded')
-rw-r--r--packages/taler-wallet-embedded/package.json3
-rw-r--r--packages/taler-wallet-embedded/src/wallet-qjs.ts31
2 files changed, 32 insertions, 2 deletions
diff --git a/packages/taler-wallet-embedded/package.json b/packages/taler-wallet-embedded/package.json
index 74616c69b..b96edff25 100644
--- a/packages/taler-wallet-embedded/package.json
+++ b/packages/taler-wallet-embedded/package.json
@@ -36,6 +36,7 @@
"@gnu-taler/idb-bridge": "workspace:*",
"@gnu-taler/taler-util": "workspace:*",
"@gnu-taler/taler-wallet-core": "workspace:*",
+ "@gnu-taler/anastasis-core": "workspace:*",
"tslib": "^2.5.3"
}
-} \ No newline at end of file
+}
diff --git a/packages/taler-wallet-embedded/src/wallet-qjs.ts b/packages/taler-wallet-embedded/src/wallet-qjs.ts
index 2b1c8a108..db0aeacb6 100644
--- a/packages/taler-wallet-embedded/src/wallet-qjs.ts
+++ b/packages/taler-wallet-embedded/src/wallet-qjs.ts
@@ -41,6 +41,10 @@ import {
Wallet,
WalletApiOperation,
} from "@gnu-taler/taler-wallet-core";
+import {
+ reduceAction,
+ ReducerState,
+} from "@gnu-taler/anastasis-core";
setGlobalLogLevelFromString("trace");
@@ -169,6 +173,25 @@ class NativeWalletMessageHandler {
}
}
+/**
+ * Handle an Anastasis request from the native app.
+ */
+async function handleAnastasisRequest(
+ state: ReducerState,
+ action: string,
+ id: string,
+ args: any,
+): Promise<CoreApiResponse> {
+ // For now, this will return "success" even if the wrapped Anastasis
+ // response is a ReducerStateError.
+ return {
+ type: "response",
+ id,
+ operation: "anastasis",
+ result: await reduceAction(state, action, args),
+ };
+}
+
export function installNativeWalletListener(): void {
setGlobalLogLevelFromString("trace");
const handler = new NativeWalletMessageHandler();
@@ -190,7 +213,13 @@ export function installNativeWalletListener(): void {
let respMsg: CoreApiResponse;
try {
- respMsg = await handler.handleMessage(operation, id, msg.args ?? {});
+ if (msg.operation === "anastasis") {
+ // TODO: do some input validation here
+ let req = msg.args ?? {};
+ respMsg = await handleAnastasisRequest(req.state, req.action, id, req.args ?? {});
+ } else {
+ respMsg = await handler.handleMessage(operation, id, msg.args ?? {});
+ }
} catch (e) {
respMsg = {
type: "error",