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); }); });