anastasis-core: implement update_policy transition

This commit is contained in:
Florian Dold 2021-11-04 21:47:51 +01:00
parent 09d01a4bf1
commit 5a72e4ae3e
No known key found for this signature in database
GPG Key ID: D2E4F00F29D02A4B
3 changed files with 46 additions and 1 deletions

View File

@ -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];

View File

@ -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),

View File

@ -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())