1
0
Fork 0
VaultUI/src/pages/Secrets/KeyValue/KeyValueVersions.ts

57 lines
1.6 KiB
TypeScript
Raw Normal View History

import { Page } from "../../../types/Page";
import { SecretTitleElement } from "../../../elements/SecretTitleElement";
import { getSecretMetadata } from "../../../api/kv/getSecretMetadata";
import { makeElement } from "z-makeelement";
import { objectToMap } from "../../../utils";
import i18next from "i18next";
2021-04-15 13:01:58 +01:00
export class KeyValueVersionsPage extends Page {
2021-04-15 15:37:52 +01:00
constructor() {
super();
}
2021-05-12 17:37:09 +01:00
async goBack(): Promise<void> {
if (this.state.currentSecretVersion != null) {
this.state.currentSecretVersion = null;
2021-05-05 17:03:00 +01:00
}
await this.router.changePage("KEY_VALUE_SECRET");
2021-04-15 15:37:52 +01:00
}
2021-05-08 02:58:04 +01:00
async render(): Promise<void> {
const versionsList = makeElement({
2021-04-15 15:37:52 +01:00
tag: "ul",
id: "versionsList",
class: ["uk-nav", "uk-nav-default"],
2021-04-15 15:37:52 +01:00
});
await this.router.setPageContent(versionsList);
2021-04-15 15:37:52 +01:00
2021-05-08 02:58:04 +01:00
const metadata = await getSecretMetadata(
this.state.currentBaseMount,
this.state.currentSecretPath,
this.state.currentSecret,
2021-04-15 15:37:52 +01:00
);
2021-05-07 14:19:34 +01:00
objectToMap(metadata.versions).forEach((_, ver) => {
versionsList.appendChild(
makeElement({
tag: "li",
children: makeElement({
tag: "a",
text: `v${ver}`,
2021-05-12 17:37:09 +01:00
onclick: async () => {
this.state.currentSecretVersion = ver;
await this.router.changePage("KEY_VALUE_SECRET");
},
}),
}),
);
2021-04-15 15:37:52 +01:00
});
}
2021-04-15 15:37:52 +01:00
async getPageTitle(): Promise<Element | string> {
return await SecretTitleElement(this.router, i18next.t("kv_sec_versions_suffix"));
2021-04-15 15:37:52 +01:00
}
2021-05-08 02:58:04 +01:00
get name(): string {
return i18next.t("kv_sec_versions_title");
2021-04-15 15:37:52 +01:00
}
}