diff options
author | Iván Ávalos <avalos@disroot.org> | 2023-08-07 11:14:00 +0200 |
---|---|---|
committer | Iván Ávalos <avalos@disroot.org> | 2023-08-07 23:47:22 +0200 |
commit | d33b70b06940315510ee2c97ced62a8c377fad07 (patch) | |
tree | 8ec323fc896110acd342dee218e9df62750fa0c0 /packages/taler-wallet-embedded/src | |
parent | a204105b5b5d7368b6ee55811eb346d746057ae9 (diff) | |
download | wallet-core-d33b70b06940315510ee2c97ced62a8c377fad07.tar.xz |
wallet-core-embedded: added Anastasis policy discovery
Diffstat (limited to 'packages/taler-wallet-embedded/src')
-rw-r--r-- | packages/taler-wallet-embedded/src/wallet-qjs.ts | 23 |
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, + }, + }); } } |