diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-connect/connecthelper.js b/dashboard-ui/bower_components/emby-webcomponents/emby-connect/connecthelper.js
new file mode 100644
index 0000000000..2a80fe5425
--- /dev/null
+++ b/dashboard-ui/bower_components/emby-webcomponents/emby-connect/connecthelper.js
@@ -0,0 +1,180 @@
+define(['globalize', 'loading', 'alert'], function (globalize, loading, alert) {
+ 'use strict';
+
+ function showNewUserInviteMessage(result) {
+
+ if (!result.IsNewUserInvitation && !result.IsPending) {
+
+ // It was immediately approved
+ return Promise.resolve();
+ }
+
+ var message = result.IsNewUserInvitation ?
+ globalize.translate('MessageInvitationSentToNewUser', result.GuestDisplayName) :
+ globalize.translate('MessageInvitationSentToUser', result.GuestDisplayName);
+
+ alert({
+ text: message,
+ title: globalize.translate('HeaderInvitationSent')
+ });
+ }
+
+ function inviteGuest(options) {
+
+ var apiClient = options.apiClient;
+
+ loading.show();
+
+ // Add/Update connect info
+ return apiClient.ajax({
+
+ type: "POST",
+ url: apiClient.getUrl('Connect/Invite'),
+ dataType: 'json',
+ data: options.guestOptions || {}
+
+ }).then(function (result) {
+
+ loading.hide();
+ return showNewUserInviteMessage(result);
+
+ }, function (response) {
+
+ loading.hide();
+
+ if (response.status == 404) {
+ // User doesn't exist
+ alert({
+ text: globalize.translate('GuestUserNotFound')
+ });
+
+ } else if ((response.status || 0) >= 500) {
+
+ // Unable to reach connect server ?
+ alert({
+ text: globalize.translate('ErrorReachingEmbyConnect')
+ });
+
+ } else {
+
+ // status 400 = account not activated
+
+ // General error
+ showGuestGeneralErrorMessage();
+ }
+ });
+ }
+
+ function showGuestGeneralErrorMessage() {
+
+ var html = globalize.translate('ErrorAddingGuestAccount1', 'https://emby.media/connect');
+ html += '
' + globalize.translate('ErrorAddingGuestAccount2', 'apps@emby.media');
+
+ var text = globalize.translate('ErrorAddingGuestAccount1', 'https://emby.media/connect');
+ text += '\n\n' + globalize.translate('ErrorAddingGuestAccount2', 'apps@emby.media');
+
+ alert({
+ text: text,
+ html: html
+ });
+ }
+
+ function showLinkUserMessage(username) {
+
+ var html;
+ var text;
+
+ if (username) {
+
+ html = globalize.translate('ErrorAddingEmbyConnectAccount1', 'https://emby.media/connect');
+ html += '
' + globalize.translate('ErrorAddingEmbyConnectAccount2', 'apps@emby.media');
+
+ text = globalize.translate('ErrorAddingEmbyConnectAccount1', 'https://emby.media/connect');
+ text += '\n\n' + globalize.translate('ErrorAddingEmbyConnectAccount2', 'apps@emby.media');
+
+ } else {
+ html = text = globalize.translate('DefaultErrorMessage');
+ }
+
+ return alert({
+ text: text,
+ html: html
+ });
+ }
+
+ function updateUserLink(apiClient, user, newConnectUsername) {
+ var currentConnectUsername = user.ConnectUserName || '';
+ var enteredConnectUsername = newConnectUsername;
+
+ var linkUrl = apiClient.getUrl('Users/' + user.Id + '/Connect/Link');
+
+ if (currentConnectUsername && !enteredConnectUsername) {
+
+ // Remove connect info
+ // Add/Update connect info
+ return apiClient.ajax({
+
+ type: "DELETE",
+ url: linkUrl
+
+ }).then(function () {
+
+ return alert({
+ text: globalize.translate('MessageEmbyAccontRemoved'),
+ title: globalize.translate('HeaderEmbyAccountRemoved'),
+
+ }).catch(function () {
+ return Promise.resolve();
+ });
+
+ }, function () {
+
+ return alert({
+ text: globalize.translate('ErrorRemovingEmbyConnectAccount')
+
+ }).then(function () {
+ return Promise.reject();
+ });
+ });
+
+ }
+ else if (currentConnectUsername != enteredConnectUsername) {
+
+ // Add/Update connect info
+ return apiClient.ajax({
+ type: "POST",
+ url: linkUrl,
+ data: {
+ ConnectUsername: enteredConnectUsername
+ },
+ dataType: 'json'
+
+ }).then(function (result) {
+
+ var msgKey = result.IsPending ? 'MessagePendingEmbyAccountAdded' : 'MessageEmbyAccountAdded';
+
+ return alert({
+ text: globalize.translate(msgKey),
+ title: globalize.translate('HeaderEmbyAccountAdded'),
+
+ }).catch(function () {
+ return Promise.resolve();
+ });
+
+ }, function () {
+
+ return showLinkUserMessage('.').then(function () {
+ return Promise.reject();
+ });
+ });
+
+ } else {
+ return Promise.reject();
+ }
+ }
+
+ return {
+ inviteGuest: inviteGuest,
+ updateUserLink: updateUserLink
+ };
+});
\ No newline at end of file
diff --git a/dashboard-ui/components/guestinviter/connectlink.js b/dashboard-ui/components/guestinviter/connectlink.js
index f4171d2534..4858e1baaf 100644
--- a/dashboard-ui/components/guestinviter/connectlink.js
+++ b/dashboard-ui/components/guestinviter/connectlink.js
@@ -1,101 +1,6 @@
-define(['dialogHelper', 'jQuery', 'emby-input', 'emby-button', 'emby-collapse', 'paper-icon-button-light', 'formDialogStyle'], function (dialogHelper, $) {
+define(['dialogHelper', 'connectHelper', 'emby-input', 'emby-button', 'emby-collapse', 'paper-icon-button-light', 'formDialogStyle'], function (dialogHelper, connectHelper) {
'use strict';
- function updateUserInfo(user, newConnectUsername, actionCallback, noActionCallback) {
- var currentConnectUsername = user.ConnectUserName || '';
- var enteredConnectUsername = newConnectUsername;
-
- var linkUrl = ApiClient.getUrl('Users/' + user.Id + '/Connect/Link');
-
- if (currentConnectUsername && !enteredConnectUsername) {
-
- // Remove connect info
- // Add/Update connect info
- ApiClient.ajax({
-
- type: "DELETE",
- url: linkUrl
-
- }).then(function () {
-
- Dashboard.alert({
-
- message: Globalize.translate('MessageEmbyAccontRemoved'),
- title: Globalize.translate('HeaderEmbyAccountRemoved'),
-
- callback: actionCallback
-
- });
- }, function () {
-
- Dashboard.alert({
-
- message: Globalize.translate('ErrorRemovingEmbyConnectAccount')
-
- });
- });
-
- }
- else if (currentConnectUsername != enteredConnectUsername) {
-
- // Add/Update connect info
- ApiClient.ajax({
- type: "POST",
- url: linkUrl,
- data: {
- ConnectUsername: enteredConnectUsername
- },
- dataType: 'json'
-
- }).then(function (result) {
-
- var msgKey = result.IsPending ? 'MessagePendingEmbyAccountAdded' : 'MessageEmbyAccountAdded';
-
- Dashboard.alert({
- message: Globalize.translate(msgKey),
- title: Globalize.translate('HeaderEmbyAccountAdded'),
-
- callback: actionCallback
-
- });
-
- }, function () {
-
- showEmbyConnectErrorMessage('.');
- });
-
- } else {
- if (noActionCallback) {
- noActionCallback();
- }
- }
- }
-
- function showEmbyConnectErrorMessage(username) {
-
- var html;
- var text;
-
- if (username) {
-
- html = Globalize.translate('ErrorAddingEmbyConnectAccount1', 'https://emby.media/connect');
- html += '
' + Globalize.translate('ErrorAddingEmbyConnectAccount2', 'apps@emby.media');
-
- text = Globalize.translate('ErrorAddingEmbyConnectAccount1', 'https://emby.media/connect');
- text += '\n\n' + Globalize.translate('ErrorAddingEmbyConnectAccount2', 'apps@emby.media');
-
- } else {
- html = text = Globalize.translate('DefaultErrorMessage');
- }
-
- require(['alert'], function (alert) {
- alert({
- text: text,
- html: html
- });
- });
- }
-
return {
show: function () {
return new Promise(function (resolve, reject) {
@@ -141,7 +46,8 @@
dlg.querySelector('form').addEventListener('submit', function (e) {
ApiClient.getCurrentUser().then(function (user) {
- updateUserInfo(user, dlg.querySelector('#txtConnectUsername').value, function() {
+
+ connectHelper.updateUserLink(ApiClient, user, dlg.querySelector('#txtConnectUsername').value).then(function () {
dialogHelper.close(dlg);
}, function () {
dialogHelper.close(dlg);
diff --git a/dashboard-ui/components/guestinviter/guestinviter.js b/dashboard-ui/components/guestinviter/guestinviter.js
index 110fc9d852..405f2bd112 100644
--- a/dashboard-ui/components/guestinviter/guestinviter.js
+++ b/dashboard-ui/components/guestinviter/guestinviter.js
@@ -24,101 +24,30 @@
Dashboard.showLoadingMsg();
- ApiClient.getJSON(ApiClient.getUrl("Channels", {})).then(function (channelsResult) {
+ var shareExcludes = $(".chkShareFolder", dlg).get().filter(function (i) {
- var shareExcludes = $(".chkShareFolder", dlg).get().filter(function (i) {
+ return i.checked;
- return i.checked;
+ }).map(function (i) {
- }).map(function (i) {
+ return i.getAttribute('data-folderid');
+ });
- return i.getAttribute('data-folderid');
- });
+ require(['connectHelper'], function (connectHelper) {
- // Add/Update connect info
- ApiClient.ajax({
-
- type: "POST",
- url: ApiClient.getUrl('Connect/Invite'),
- dataType: 'json',
- data: {
+ connectHelper.inviteGuest({
+ apiClient: ApiClient,
+ guestOptions: {
ConnectUsername: dlg.querySelector('#txtConnectUsername').value,
EnabledLibraries: shareExcludes.join(','),
SendingUserId: Dashboard.getCurrentUserId(),
EnableLiveTv: false
}
-
- }).then(function (result) {
-
+ }).then(function() {
+
dlg.submitted = true;
dialogHelper.close(dlg);
-
- Dashboard.hideLoadingMsg();
-
- showNewUserInviteMessage(dlg, result);
-
- }, function (response) {
-
- Dashboard.hideLoadingMsg();
-
- if (!response.status) {
- // General error
- require(['alert'], function (alert) {
- alert({
- text: Globalize.translate('DefaultErrorMessage')
- });
- });
- } else if (response.status == 404) {
- // User doesn't exist
- require(['alert'], function (alert) {
- alert({
- text: Globalize.translate('GuestUserNotFound')
- });
- });
- } else {
-
- // status 400 = account not activated
-
- // General error
- showAccountErrorMessage();
- }
- });
- });
- }
-
- function showAccountErrorMessage() {
-
- var html = Globalize.translate('ErrorAddingGuestAccount1', 'https://emby.media/connect');
- html += '
' + Globalize.translate('ErrorAddingGuestAccount2', 'apps@emby.media');
-
- var text = Globalize.translate('ErrorAddingGuestAccount1', 'https://emby.media/connect');
- text += '\n\n' + Globalize.translate('ErrorAddingGuestAccount2', 'apps@emby.media');
-
- require(['alert'], function (alert) {
- alert({
- text: text,
- html: html
- });
- });
- }
-
- function showNewUserInviteMessage(page, result) {
-
- if (!result.IsNewUserInvitation && !result.IsPending) {
-
- // It was immediately approved
- return;
- }
-
- var message = result.IsNewUserInvitation ?
- Globalize.translate('MessageInvitationSentToNewUser', result.GuestDisplayName) :
- Globalize.translate('MessageInvitationSentToUser', result.GuestDisplayName);
-
- require(['alert'], function (alert) {
- alert({
- text: message,
- title: Globalize.translate('HeaderInvitationSent')
});
});
}
diff --git a/dashboard-ui/scripts/livetvrecordings.js b/dashboard-ui/scripts/livetvrecordings.js
index f38052e298..dc8d76df00 100644
--- a/dashboard-ui/scripts/livetvrecordings.js
+++ b/dashboard-ui/scripts/livetvrecordings.js
@@ -132,7 +132,9 @@
promise.then(function (result) {
renderRecordings(context.querySelector('#latestRecordings'), result.Items, {
- shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop')
+ shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'),
+ showYear: true,
+ lines: 2
});
Dashboard.hideLoadingMsg();
diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js
index 20c506bdfc..c36dce77b9 100644
--- a/dashboard-ui/scripts/site.js
+++ b/dashboard-ui/scripts/site.js
@@ -1252,6 +1252,8 @@ var AppInfo = {};
define("alphaPicker", [embyWebComponentsBowerPath + "/alphapicker/alphapicker"], returnFirstDependency);
define("paper-icon-button-light", [embyWebComponentsBowerPath + "/emby-button/paper-icon-button-light"]);
+ define("connectHelper", [embyWebComponentsBowerPath + "/emby-connect/connecthelper"], returnFirstDependency);
+
define("emby-input", [embyWebComponentsBowerPath + "/emby-input/emby-input"], returnFirstDependency);
define("emby-select", [embyWebComponentsBowerPath + "/emby-select/emby-select"], returnFirstDependency);
define("emby-slider", [embyWebComponentsBowerPath + "/emby-slider/emby-slider"], returnFirstDependency);
diff --git a/dashboard-ui/scripts/useredit.js b/dashboard-ui/scripts/useredit.js
index 7d1ed677d2..08162da1f1 100644
--- a/dashboard-ui/scripts/useredit.js
+++ b/dashboard-ui/scripts/useredit.js
@@ -55,111 +55,6 @@
Dashboard.hideLoadingMsg();
}
- function updateUserInfo(user, newConnectUsername, actionCallback, noActionCallback) {
- var currentConnectUsername = user.ConnectUserName || '';
- var enteredConnectUsername = newConnectUsername;
-
- var linkUrl = ApiClient.getUrl('Users/' + user.Id + '/Connect/Link');
-
- if (currentConnectUsername && !enteredConnectUsername) {
-
- // Remove connect info
- // Add/Update connect info
- ApiClient.ajax({
-
- type: "DELETE",
- url: linkUrl
-
- }).then(function () {
-
- Dashboard.alert({
-
- message: Globalize.translate('MessageEmbyAccontRemoved'),
- title: Globalize.translate('HeaderEmbyAccountRemoved'),
-
- callback: actionCallback
-
- });
- }, function () {
-
- Dashboard.alert({
-
- message: Globalize.translate('ErrorRemovingEmbyConnectAccount')
-
- });
- });
-
- }
- else if (currentConnectUsername != enteredConnectUsername) {
-
- // Add/Update connect info
- ApiClient.ajax({
- type: "POST",
- url: linkUrl,
- data: {
- ConnectUsername: enteredConnectUsername
- },
- dataType: 'json'
-
- }).then(function (result) {
-
- var msgKey = result.IsPending ? 'MessagePendingEmbyAccountAdded' : 'MessageEmbyAccountAdded';
-
- Dashboard.alert({
- message: Globalize.translate(msgKey),
- title: Globalize.translate('HeaderEmbyAccountAdded'),
-
- callback: actionCallback
-
- });
-
- }, function (response) {
-
- if (response.status == 500) {
-
- Dashboard.alert({
-
- message: Globalize.translate('ErrorAddingEmbyConnectAccount3')
-
- });
-
- } else {
- showEmbyConnectErrorMessage('.');
- }
- });
-
- } else {
- if (noActionCallback) {
- noActionCallback();
- }
- }
- }
-
- function showEmbyConnectErrorMessage(username) {
-
- var html;
- var text;
-
- if (username) {
-
- html = Globalize.translate('ErrorAddingEmbyConnectAccount1', 'https://emby.media/connect');
- html += '
' + Globalize.translate('ErrorAddingEmbyConnectAccount2', 'apps@emby.media');
-
- text = Globalize.translate('ErrorAddingEmbyConnectAccount1', 'https://emby.media/connect');
- text += '\n\n' + Globalize.translate('ErrorAddingEmbyConnectAccount2', 'apps@emby.media');
-
- } else {
- html = text = Globalize.translate('DefaultErrorMessage');
- }
-
- require(['alert'], function (alert) {
- alert({
- text: text,
- html: html
- });
- });
- }
-
function onSaveComplete(page, user) {
Dashboard.hideLoadingMsg();
@@ -173,9 +68,11 @@
});
} else {
- updateUserInfo(user, $('#txtConnectUserName', page).val(), function () {
+ require(['connectHelper'], function (connectHelper) {
+ connectHelper.updateUserLink(ApiClient, user, $('#txtConnectUserName', page).val()).then(function () {
- loadData(page);
+ loadData(page);
+ });
});
}
}