summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-embedded/src/wallet-qjs.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-embedded/src/wallet-qjs.ts')
-rw-r--r--packages/taler-wallet-embedded/src/wallet-qjs.ts37
1 files changed, 23 insertions, 14 deletions
diff --git a/packages/taler-wallet-embedded/src/wallet-qjs.ts b/packages/taler-wallet-embedded/src/wallet-qjs.ts
index 57452301f..7e2ee1b2d 100644
--- a/packages/taler-wallet-embedded/src/wallet-qjs.ts
+++ b/packages/taler-wallet-embedded/src/wallet-qjs.ts
@@ -54,6 +54,11 @@ setPRNG(function (x: Uint8Array, n: number) {
const logger = new Logger("taler-wallet-embedded/index.ts");
+/**
+ * Sends JSON to the host application, i.e. the process that
+ * runs the JavaScript interpreter (quickjs / qtart) to run
+ * the embedded wallet.
+ */
function sendNativeMessage(ev: CoreApiMessageEnvelope): void {
const m = JSON.stringify(ev);
qjsOs.postMessageToHost(m);
@@ -183,21 +188,25 @@ export function installNativeWalletListener(): void {
const id = msg.id;
logger.info(`native listener: got request for ${operation} (${id})`);
- let respMsg: CoreApiResponse;
- try {
- respMsg = await handler.handleMessage(operation, id, msg.args ?? {});
- } catch (e) {
- respMsg = {
- type: "error",
- id,
- operation,
- error: getErrorDetailFromException(e),
- };
+ if (operation === "anastasisReduce") {
+ sendNativeMessage(respMsg);
+ } else {
+ let respMsg: CoreApiResponse;
+ try {
+ respMsg = await handler.handleMessage(operation, id, msg.args ?? {});
+ } catch (e) {
+ respMsg = {
+ type: "error",
+ id,
+ operation,
+ error: getErrorDetailFromException(e),
+ };
+ }
+ logger.info(
+ `native listener: sending back ${respMsg.type} message for operation ${operation} (${id})`,
+ );
+ sendNativeMessage(respMsg);
}
- logger.info(
- `native listener: sending back ${respMsg.type} message for operation ${operation} (${id})`,
- );
- sendNativeMessage(respMsg);
};
qjsOs.setMessageFromHostHandler((m) => onMessage(m));