2021-05-18 11:10:47 +01:00
|
|
|
import { Page } from "../../../types/Page";
|
|
|
|
import { SecretTitleElement } from "../../../elements/SecretTitleElement";
|
|
|
|
import { getSecretMetadata } from "../../../api/kv/getSecretMetadata";
|
2021-05-16 18:17:12 +01:00
|
|
|
import { makeElement } from "z-makeelement";
|
2021-05-18 11:10:47 +01:00
|
|
|
import { objectToMap } from "../../../utils";
|
2021-05-12 16:01:04 +01:00
|
|
|
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> {
|
2021-05-15 10:54:39 +01:00
|
|
|
if (this.state.currentSecretVersion != null) {
|
|
|
|
this.state.currentSecretVersion = null;
|
2021-05-05 17:03:00 +01:00
|
|
|
}
|
2021-05-15 10:54:39 +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",
|
2021-05-12 16:01:04 +01:00
|
|
|
class: ["uk-nav", "uk-nav-default"],
|
2021-04-15 15:37:52 +01:00
|
|
|
});
|
2021-05-15 10:54:39 +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(
|
2021-05-15 10:54:39 +01:00
|
|
|
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) => {
|
2021-05-12 16:01:04 +01:00
|
|
|
versionsList.appendChild(
|
|
|
|
makeElement({
|
|
|
|
tag: "li",
|
|
|
|
children: makeElement({
|
|
|
|
tag: "a",
|
|
|
|
text: `v${ver}`,
|
2021-05-12 17:37:09 +01:00
|
|
|
onclick: async () => {
|
2021-05-15 10:54:39 +01:00
|
|
|
this.state.currentSecretVersion = ver;
|
|
|
|
await this.router.changePage("KEY_VALUE_SECRET");
|
2021-05-12 16:01:04 +01:00
|
|
|
},
|
|
|
|
}),
|
|
|
|
}),
|
|
|
|
);
|
2021-04-15 15:37:52 +01:00
|
|
|
});
|
2021-04-17 11:06:34 +01:00
|
|
|
}
|
2021-04-15 15:37:52 +01:00
|
|
|
|
2021-05-15 10:54:39 +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 {
|
2021-04-20 23:08:02 +01:00
|
|
|
return i18next.t("kv_sec_versions_title");
|
2021-04-15 15:37:52 +01:00
|
|
|
}
|
2021-05-12 16:01:04 +01:00
|
|
|
}
|