define(["datetime", "loading", "libraryMenu", "dom", "globalize", "emby-button"], function (datetime, loading, libraryMenu, dom, globalize) { "use strict"; function revoke(page, key) { require(["confirm"], function (confirm) { confirm(globalize.translate("MessageConfirmRevokeApiKey"), globalize.translate("HeaderConfirmRevokeApiKey")).then(function () { loading.show(); ApiClient.ajax({ type: "DELETE", url: ApiClient.getUrl("Auth/Keys/" + key) }).then(function () { loadData(page); }); }); }); } function renderKeys(page, keys) { var rows = keys.map(function (item) { var html = ""; html += ''; html += ''; html += '"; html += ""; html += ''; html += item.AccessToken; html += ""; html += ''; html += item.AppName || ""; html += ""; html += ''; var date = datetime.parseISO8601Date(item.DateCreated, true); html += datetime.toLocaleDateString(date) + " " + datetime.getDisplayTime(date); html += ""; return html += ""; }).join(""); page.querySelector(".resultBody").innerHTML = rows; loading.hide(); } function loadData(page) { loading.show(); ApiClient.getJSON(ApiClient.getUrl("Auth/Keys")).then(function (result) { renderKeys(page, result.Items); }); } function showNewKeyPrompt(page) { require(["prompt"], function (prompt) { prompt({ title: globalize.translate("HeaderNewApiKey"), label: globalize.translate("LabelAppName"), description: globalize.translate("LabelAppNameExample") }).then(function (value) { ApiClient.ajax({ type: "POST", url: ApiClient.getUrl("Auth/Keys", { App: value }) }).then(function () { loadData(page); }); }); }); } pageIdOn("pageinit", "apiKeysPage", function () { var page = this; page.querySelector(".btnNewKey").addEventListener("click", function () { showNewKeyPrompt(page); }); page.querySelector(".tblApiKeys").addEventListener("click", function (e) { var btnRevoke = dom.parentWithClass(e.target, "btnRevoke"); if (btnRevoke) { revoke(page, btnRevoke.getAttribute("data-token")); } }); }); pageIdOn("pagebeforeshow", "apiKeysPage", function () { loadData(this); }); });