diff options
author | Iván Ávalos <avalos@disroot.org> | 2023-06-30 17:52:24 -0600 |
---|---|---|
committer | Iván Ávalos <avalos@disroot.org> | 2023-07-26 12:09:17 -0600 |
commit | ef51ba983f49b32a04bb8460f24f720f7952f306 (patch) | |
tree | 9a8aad3bc818066b8677c626887ce08631cb1837 /packages/taler-wallet-embedded/src | |
parent | 0b606028339d8256643ce60f11e72a090a301b58 (diff) | |
download | wallet-core-ef51ba983f49b32a04bb8460f24f720f7952f306.tar.xz |
WIP: initial work for Anastasis in qtart
Diffstat (limited to 'packages/taler-wallet-embedded/src')
-rw-r--r-- | packages/taler-wallet-embedded/src/wallet-qjs.ts | 31 |
1 files changed, 30 insertions, 1 deletions
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", |