taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 5a72e4ae3e9ebd77547ac5aa95cd0b54b39a34cd
parent 09d01a4bf16c3fcbe6020d8efd38cae34db53514
Author: Florian Dold <florian@dold.me>
Date:   Thu,  4 Nov 2021 21:47:51 +0100

anastasis-core: implement update_policy transition

Diffstat:
Mpackages/anastasis-core/rollup.config.js | 28+++++++++++++++++++++++++++-
Mpackages/anastasis-core/src/index.ts | 14++++++++++++++
Mpackages/anastasis-core/src/reducer-types.ts | 5+++++
3 files changed, 46 insertions(+), 1 deletion(-)

diff --git a/packages/anastasis-core/rollup.config.js b/packages/anastasis-core/rollup.config.js @@ -5,7 +5,7 @@ import json from "@rollup/plugin-json"; import builtins from "builtin-modules"; import sourcemaps from "rollup-plugin-sourcemaps"; -export default { +const cli = { input: "lib/index.node.js", output: { file: "dist/anastasis-cli.js", @@ -28,3 +28,29 @@ export default { json(), ], }; + +const standalone = { + input: "lib/cli-entry.js", + output: { + file: "dist/anastasis-cli-standalone.js", + format: "es", + sourcemap: true, + }, + external: [...builtins, "source-map-support"], + plugins: [ + nodeResolve({ + preferBuiltins: true, + }), + + sourcemaps(), + + commonjs({ + sourceMap: true, + transformMixedEsModules: true, + }), + + json(), + ], +}; + +export default [standalone, cli]; diff --git a/packages/anastasis-core/src/index.ts b/packages/anastasis-core/src/index.ts @@ -62,6 +62,7 @@ import { codecForActionArgsChangeVersion, ActionArgsChangeVersion, TruthMetaData, + ActionArgsUpdatePolicy, } from "./reducer-types.js"; import fetchPonyfill from "fetch-ponyfill"; import { @@ -1038,6 +1039,18 @@ async function deletePolicy( }; } +async function updatePolicy( + state: ReducerStateBackup, + args: ActionArgsUpdatePolicy, +): Promise<ReducerStateBackup> { + const policies = [...(state.policies ?? [])]; + policies[args.policy_index] = { methods: args.policy }; + return { + ...state, + policies, + }; +} + async function addPolicy( state: ReducerStateBackup, args: ActionArgsAddPolicy, @@ -1230,6 +1243,7 @@ const backupTransitions: Record< ...transitionBackupJump("next", BackupStates.SecretEditing), ...transition("add_policy", codecForActionArgsAddPolicy(), addPolicy), ...transition("delete_policy", codecForAny(), deletePolicy), + ...transition("update_policy", codecForAny(), updatePolicy), }, [BackupStates.SecretEditing]: { ...transitionBackupJump("back", BackupStates.PoliciesReviewing), diff --git a/packages/anastasis-core/src/reducer-types.ts b/packages/anastasis-core/src/reducer-types.ts @@ -418,6 +418,11 @@ export interface ActionArgsChangeVersion { version: number; } +export interface ActionArgsUpdatePolicy { + policy_index: number; + policy: PolicyMember[]; +} + export const codecForActionArgsChangeVersion = () => buildCodecForObject<ActionArgsChangeVersion>() .property("provider_url", codecForString())