71 lines
2 KiB
JavaScript
71 lines
2 KiB
JavaScript
![]() |
import { Page } from "../types/Page.js";
|
||
|
import { getSecret, createOrUpdateSecret } from "../api.js";
|
||
|
import { verifyJSONString } from "../utils.js";
|
||
|
import { setPageContent, setTitleElement, setErrorText } from "../pageUtils.js";
|
||
|
import { CodeJar } from "codejar";
|
||
|
import { makeElement } from "../htmlUtils.js";
|
||
|
|
||
|
export class KeyValueSecretsEditPage extends Page {
|
||
|
constructor() {
|
||
|
super();
|
||
|
}
|
||
|
goBack() {
|
||
|
changePage(pages.KEY_VALUE_SECRETS);
|
||
|
}
|
||
|
render() {
|
||
|
setTitleElement(pageState);
|
||
|
let loadingText = makeElement({ tag: "p", text: "Loading.." });
|
||
|
let editor = makeElement({
|
||
|
tag: "div",
|
||
|
class: ["editor", "language-json"]
|
||
|
});
|
||
|
let saveButton = makeElement({
|
||
|
tag: "button",
|
||
|
class: ["uk-button", "uk-button-primary"],
|
||
|
text: "Save"
|
||
|
});
|
||
|
setPageContent(makeElement({
|
||
|
tag: "div",
|
||
|
children: [
|
||
|
loadingText,
|
||
|
editor,
|
||
|
makeElement({
|
||
|
tag: "p",
|
||
|
id: "errorText",
|
||
|
class: ["uk-text-danger", "uk-margin-top"]
|
||
|
}),
|
||
|
saveButton
|
||
|
]
|
||
|
}));
|
||
|
getSecret(pageState.currentBaseMount, pageState.currentSecretPath, pageState.currentSecret).then(secretInfo => {
|
||
|
loadingText.remove();
|
||
|
|
||
|
const secretsJSON = JSON.stringify(Object.fromEntries(new Map(Object.entries(secretInfo).sort())), null, 4);
|
||
|
|
||
|
let jar = CodeJar(editor, () => { }, { tab: ' '.repeat(4) });
|
||
|
jar.updateCode(secretsJSON);
|
||
|
saveButton.onclick = function () {
|
||
|
if (!verifyJSONString(jar.toString())) {
|
||
|
setErrorText("Invalid JSON");
|
||
|
return;
|
||
|
}
|
||
|
createOrUpdateSecret(
|
||
|
pageState.currentBaseMount,
|
||
|
pageState.currentSecretPath,
|
||
|
pageState.currentSecret,
|
||
|
JSON.parse(jar.toString())
|
||
|
).then(resp => {
|
||
|
changePage(pages.KEY_VALUE_SECRETS);
|
||
|
return;
|
||
|
}).catch(e => {
|
||
|
setErrorText(e.message);
|
||
|
});
|
||
|
};
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
get name() {
|
||
|
return "K/V Secrets Edit";
|
||
|
}
|
||
|
}
|