diff options
author | Sebastian <sebasjm@gmail.com> | 2021-10-19 10:56:52 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2021-10-19 11:05:32 -0300 |
commit | 5883d42d800c7b444c59d626bcaa5abca7dc83d0 (patch) | |
tree | ac42ad7b9e26c4dd2145a31101305884906a543e /packages/anastasis-webui/src/pages/home/SecretEditorScreen.tsx | |
parent | 269022a526b670d602ca146f4df02850983bb72e (diff) | |
download | wallet-core-5883d42d800c7b444c59d626bcaa5abca7dc83d0.tar.xz |
add template from merchant backoffice
Diffstat (limited to 'packages/anastasis-webui/src/pages/home/SecretEditorScreen.tsx')
-rw-r--r-- | packages/anastasis-webui/src/pages/home/SecretEditorScreen.tsx | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/packages/anastasis-webui/src/pages/home/SecretEditorScreen.tsx b/packages/anastasis-webui/src/pages/home/SecretEditorScreen.tsx new file mode 100644 index 000000000..2963930fd --- /dev/null +++ b/packages/anastasis-webui/src/pages/home/SecretEditorScreen.tsx @@ -0,0 +1,53 @@ +/* eslint-disable @typescript-eslint/camelcase */ +import { + encodeCrock, + stringToBytes +} from "@gnu-taler/taler-util"; +import { h, VNode } from "preact"; +import { useState } from "preact/hooks"; +import { BackupReducerProps, AnastasisClientFrame, LabeledInput } from "./index"; + +export function SecretEditorScreen(props: BackupReducerProps): VNode { + const { reducer } = props; + const [secretName, setSecretName] = useState( + props.backupState.secret_name ?? "" + ); + const [secretValue, setSecretValue] = useState( + props.backupState.core_secret?.value ?? "" ?? "" + ); + const secretNext = (): void => { + reducer.runTransaction(async (tx) => { + await tx.transition("enter_secret_name", { + name: secretName, + }); + await tx.transition("enter_secret", { + secret: { + value: encodeCrock(stringToBytes(secretValue)), + mime: "text/plain", + }, + expiration: { + t_ms: new Date().getTime() + 1000 * 60 * 60 * 24 * 365 * 5, + }, + }); + await tx.transition("next", {}); + }); + }; + return ( + <AnastasisClientFrame + title="Backup: Provide secret" + onNext={() => secretNext()} + > + <div> + <LabeledInput + label="Secret Name:" + grabFocus + bind={[secretName, setSecretName]} /> + </div> + <div> + <LabeledInput + label="Secret Value:" + bind={[secretValue, setSecretValue]} /> + </div> + </AnastasisClientFrame> + ); +} |