1
0
Fork 0
VaultUI/src/ui/pages/Secrets/Transit/TransitView.tsx

65 lines
2.5 KiB
TypeScript

import { Component, render } from "preact";
import { DefaultPageProps } from "../../../../types/DefaultPageProps";
import { Grid, GridSizes } from "../../../elements/Grid";
import { SecretTitleElement } from "../SecretTitleElement";
import { Tile } from "../../../elements/Tile";
import { TransitKeyType } from "../../../../api/types/transit";
import i18next from "i18next";
import { route } from "preact-router";
import {
transitDecryptSecretURL,
transitEncryptSecretURL,
transitRewrapSecretURL,
} from "../../pageLinks";
export class TransitView extends Component<DefaultPageProps, { transitKey: TransitKeyType }> {
async componentDidMount() {
const baseMount = this.props.matches["baseMount"];
const secretItem = this.props.matches["secretItem"];
const transitKey = await this.props.api.getTransitKey(baseMount, secretItem);
this.setState({ transitKey });
}
render() {
if (!this.state.transitKey) return;
const baseMount = this.props.matches["baseMount"];
const secretItem = this.props.matches["secretItem"];
const transitKey = this.state.transitKey;
return (
<>
<SecretTitleElement type="transit" baseMount={baseMount} item={secretItem} />
<Grid size={GridSizes.MATCHING_TWO_ROWS}>
{transitKey.supports_encryption && (
<Tile
title={i18next.t("transit_view_encrypt_text")}
description={i18next.t("transit_view_encrypt_description")}
icon="lock"
iconText={i18next.t("transit_view_encrypt_icon_text")}
onclick={async () => route(transitEncryptSecretURL(baseMount, secretItem))}
/>
)}
{transitKey.supports_decryption && (
<Tile
title={i18next.t("transit_view_decrypt_text")}
description={i18next.t("transit_view_decrypt_description")}
icon="mail"
iconText={i18next.t("transit_view_decrypt_icon_text")}
onclick={() => route(transitDecryptSecretURL(baseMount, secretItem))}
/>
)}
{transitKey.supports_decryption && (
<Tile
title={i18next.t("transit_view_rewrap_text")}
description={i18next.t("transit_view_rewrap_description")}
icon="code"
iconText={i18next.t("transit_view_rewrap_icon_text")}
onclick={async () => route(transitRewrapSecretURL(baseMount, secretItem))}
/>
)}
</Grid>
</>
);
}
}