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

58 lines
1.5 KiB
TypeScript
Raw Normal View History

2021-05-07 23:33:58 +01:00
import { Page } from "../../types/Page";
2021-05-07 23:21:38 +01:00
import { changePage, setPageContent, setTitleElement } from "../../pageUtils";
2021-05-08 00:21:58 +01:00
import { getSecretMetadata } from "../../api/getSecretMetadata";
import { makeElement } from "../../htmlUtils";
import { objectToMap } from "../../utils";
2021-05-08 02:58:04 +01:00
import { pageState } from "../../globalPageState";
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-08 02:58:04 +01:00
goBack(): void {
if (pageState.currentSecretVersion != null) {
pageState.currentSecretVersion = null;
2021-05-05 17:03:00 +01:00
}
changePage("KEY_VALUE_SECRET");
2021-04-15 15:37:52 +01:00
}
2021-05-08 02:58:04 +01:00
async render(): Promise<void> {
2021-04-15 15:37:52 +01:00
setTitleElement(pageState);
2021-04-15 13:01:58 +01:00
2021-05-08 02:58:04 +01:00
const versionsList = makeElement({
2021-04-15 15:37:52 +01:00
tag: "ul",
id: "versionsList",
class: ["uk-nav", "uk-nav-default"]
});
setPageContent(versionsList);
2021-05-08 02:58:04 +01:00
const metadata = await getSecretMetadata(
2021-04-15 15:37:52 +01:00
pageState.currentBaseMount,
pageState.currentSecretPath,
pageState.currentSecret
);
2021-05-07 14:19:34 +01:00
objectToMap(metadata.versions).forEach((_, ver) => {
2021-04-15 15:37:52 +01:00
versionsList.appendChild(makeElement({
tag: "li",
children: makeElement({
tag: "a",
text: `v${ver}`,
onclick: _ => {
pageState.currentSecretVersion = ver;
changePage("KEY_VALUE_SECRET");
2021-04-15 15:37:52 +01:00
}
})
}));
});
}
2021-04-15 15:37:52 +01:00
2021-05-08 02:58:04 +01:00
get titleSuffix(): string {
return 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
}
}