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, !0); return html += datetime.toLocaleDateString(date) + " " + datetime.getDisplayTime(date), html += "", 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"); btnRevoke && revoke(page, btnRevoke.getAttribute("data-token")) }); }); pageIdOn("pagebeforeshow", "apiKeysPage", function() { loadData(this); }) });