(namePrefill = "")
| 5 | import { createModal } from "./utils.js"; |
| 6 | |
| 7 | async function openCreateKey(namePrefill = "") { |
| 8 | const modal = createModal( |
| 9 | "Add a key", |
| 10 | `<div class="content"> |
| 11 | <label for="key-name">Key name</label> |
| 12 | <input type="text" name="key-name" class="key-name-input" placeholder="Blog comments" value="${namePrefill}" max-length="200" required> |
| 13 | </div> |
| 14 | |
| 15 | <button class="create-key-button primary">Create key</button>` |
| 16 | ); |
| 17 | modal.querySelector(".key-name-input").focus(); |
| 18 | |
| 19 | if (!namePrefill) |
| 20 | document.querySelector(".create-key-button").disabled = true; |
| 21 | |
| 22 | modal.querySelector(".key-name-input").addEventListener("input", (event) => { |
| 23 | modal.querySelector(".create-key-button").disabled = |
| 24 | !event.target.value.trim(); |
| 25 | }); |
| 26 | |
| 27 | modal |
| 28 | .querySelector(".key-name-input") |
| 29 | .addEventListener("keydown", (event) => { |
| 30 | if (event.target.value.trim() && event.key === "Enter") { |
| 31 | modal.querySelector(".create-key-button").click(); |
| 32 | } |
| 33 | }); |
| 34 | |
| 35 | modal.querySelector(".close-button").addEventListener("click", () => { |
| 36 | document.body.removeChild(modal); |
| 37 | }); |
| 38 | |
| 39 | modal |
| 40 | .querySelector(".create-key-button") |
| 41 | .addEventListener("click", async () => { |
| 42 | const name = modal.querySelector(".key-name-input").value.trim(); |
| 43 | |
| 44 | modal.querySelector(".create-key-button").disabled = true; |
| 45 | |
| 46 | try { |
| 47 | const { siteKey, secretKey } = await sendApiRequest("POST", "/keys", { |
| 48 | name, |
| 49 | }); |
| 50 | |
| 51 | document.body.removeChild(modal); |
| 52 | |
| 53 | const successModal = createModal( |
| 54 | "Key created", |
| 55 | `<div class="content"> |
| 56 | <label for="site-key">Site key</label> |
| 57 | <input type="text" name="site-key" value="${siteKey}" readonly> |
| 58 | |
| 59 | <label for="secret-key">Secret key</label> |
| 60 | <input type="text" name="secret-key" value="${secretKey}" readonly> |
| 61 | |
| 62 | <p class="small-text">Make sure to copy your secret key as it will not be shown again later.</p> |
| 63 | </div> |
| 64 |
no test coverage detected