From 0ca9bff61b226f590ac7ad61c73636db05e335b3 Mon Sep 17 00:00:00 2001 From: zadam Date: Mon, 7 Feb 2022 22:50:28 +0100 Subject: [PATCH 1/7] fix multiple UI bugs, closes #2616 --- src/becca/entities/etapi_token.js | 4 ++- src/public/app/dialogs/options/etapi.js | 30 ++++++++++----------- src/public/app/dialogs/prompt.js | 7 ++--- src/routes/api/etapi_tokens.js | 10 +++---- src/services/etapi_tokens.js | 35 ++++++++++++------------- src/views/dialogs/prompt.ejs | 2 +- 6 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/becca/entities/etapi_token.js b/src/becca/entities/etapi_token.js index 04c882536..170e79bc8 100644 --- a/src/becca/entities/etapi_token.js +++ b/src/becca/entities/etapi_token.js @@ -42,7 +42,9 @@ class EtapiToken extends AbstractEntity { /** @type {boolean} */ this.isDeleted = !!row.isDeleted; - this.becca.etapiTokens[this.etapiTokenId] = this; + if (this.etapiTokenId) { + this.becca.etapiTokens[this.etapiTokenId] = this; + } } init() { diff --git a/src/public/app/dialogs/options/etapi.js b/src/public/app/dialogs/options/etapi.js index 2246d3ecd..aba500d44 100644 --- a/src/public/app/dialogs/options/etapi.js +++ b/src/public/app/dialogs/options/etapi.js @@ -48,46 +48,46 @@ const TPL = ` export default class EtapiOptions { constructor() { $("#options-etapi").html(TPL); - + $("#create-etapi-token").on("click", async () => { const promptDialog = await import('../../dialogs/prompt.js'); const tokenName = await promptDialog.ask({ title: "New ETAPI token", - message: "Please enter new token's name", - defaultValue: "new token" + message: "Please enter new token's name", + defaultValue: "new token" }); - + if (!tokenName.trim()) { alert("Token name can't be empty"); return; } - - const {token} = await server.post('etapi-tokens', {tokenName}); - await promptDialog.ask({ + const {authToken} = await server.post('etapi-tokens', {tokenName}); + + await promptDialog.ask({ title: "ETAPI token created", - message: 'Copy the created token into clipboard. Trilium stores the token hashed and this is the last time you see it.', - defaultValue: token + message: 'Copy the created token into clipboard. Trilium stores the token hashed and this is the last time you see it.', + defaultValue: authToken }); - + this.refreshTokens(); }); this.refreshTokens(); } - + async refreshTokens() { const $noTokensYet = $("#no-tokens-yet"); const $tokensTable = $("#tokens-table"); - + const tokens = await server.get('etapi-tokens'); - + $noTokensYet.toggle(tokens.length === 0); $tokensTable.toggle(tokens.length > 0); const $tokensTableBody = $tokensTable.find("tbody"); $tokensTableBody.empty(); - + for (const token of tokens) { $tokensTableBody.append( $("") @@ -112,7 +112,7 @@ export default class EtapiOptions { }); await server.patch(`etapi-tokens/${etapiTokenId}`, {name: tokenName}); - + this.refreshTokens(); } diff --git a/src/public/app/dialogs/prompt.js b/src/public/app/dialogs/prompt.js index c4e03b6b1..94a8e9c46 100644 --- a/src/public/app/dialogs/prompt.js +++ b/src/public/app/dialogs/prompt.js @@ -13,9 +13,9 @@ let shownCb; export function ask({ title, message, defaultValue, shown }) { shownCb = shown; - + $("#prompt-title").text(title || "Prompt"); - + $question = $("