summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-embedded/src/wallet-qjs.ts
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2023-08-07 11:14:00 +0200
committerIván Ávalos <avalos@disroot.org>2023-08-07 23:47:22 +0200
commitd33b70b06940315510ee2c97ced62a8c377fad07 (patch)
tree8ec323fc896110acd342dee218e9df62750fa0c0 /packages/taler-wallet-embedded/src/wallet-qjs.ts
parenta204105b5b5d7368b6ee55811eb346d746057ae9 (diff)
downloadwallet-core-d33b70b06940315510ee2c97ced62a8c377fad07.tar.gz
wallet-core-d33b70b06940315510ee2c97ced62a8c377fad07.tar.bz2
wallet-core-d33b70b06940315510ee2c97ced62a8c377fad07.zip
wallet-core-embedded: added Anastasis policy discovery
Diffstat (limited to 'packages/taler-wallet-embedded/src/wallet-qjs.ts')
-rw-r--r--packages/taler-wallet-embedded/src/wallet-qjs.ts23
1 files changed, 20 insertions, 3 deletions
diff --git a/packages/taler-wallet-embedded/src/wallet-qjs.ts b/packages/taler-wallet-embedded/src/wallet-qjs.ts
index 04efb458a..278a90c83 100644
--- a/packages/taler-wallet-embedded/src/wallet-qjs.ts
+++ b/packages/taler-wallet-embedded/src/wallet-qjs.ts
@@ -45,6 +45,8 @@ import {
reduceAction,
getBackupStartState,
getRecoveryStartState,
+ discoverPolicies,
+ mergeDiscoveryAggregate,
ReducerState,
} from "@gnu-taler/anastasis-core";
import {
@@ -195,18 +197,33 @@ async function handleAnastasisRequest(
};
};
+ let req = args ?? {};
+
switch (operation) {
case "anastasisReduce":
// TODO: do some input validation here
- let req = args ?? {};
- let res = await reduceAction(req.state, req.action, req.args ?? {});
+ let reduceRes = await reduceAction(req.state, req.action, req.args ?? {});
// For now, this will return "success" even if the wrapped Anastasis
// response is a ReducerStateError.
- return wrapSuccessResponse(res);
+ return wrapSuccessResponse(reduceRes);
case "anastasisStartBackup":
return wrapSuccessResponse(await getBackupStartState());
case "anastasisStartRecovery":
return wrapSuccessResponse(await getRecoveryStartState());
+ case "anastasisDiscoverPolicies":
+ let discoverRes = await discoverPolicies(req.state, req.cursor);
+ let aggregatedPolicies = mergeDiscoveryAggregate(
+ discoverRes.policies ?? [],
+ req.state.discoveryState?.aggregatedPolicies ?? [],
+ );
+ return wrapSuccessResponse({
+ ...req.state,
+ discoveryState: {
+ state: "finished",
+ aggregatedPolicies,
+ cursor: discoverRes.cursor,
+ },
+ });
}
}