commit d33b70b06940315510ee2c97ced62a8c377fad07
parent a204105b5b5d7368b6ee55811eb346d746057ae9
Author: Iván Ávalos <avalos@disroot.org>
Date: Mon, 7 Aug 2023 11:14:00 +0200
wallet-core-embedded: added Anastasis policy discovery
Diffstat:
1 file 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
@@ -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,
+ },
+ });
}
}