1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

add connect helper

This commit is contained in:
Luke Pulverenti 2016-12-27 02:22:44 -05:00
parent d09e598f8c
commit 088e52bc65
6 changed files with 203 additions and 287 deletions

View file

@ -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', '<a href="https://emby.media/connect" target="_blank">https://emby.media/connect</a>');
html += '<br/><br/>' + 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', '<a href="https://emby.media/connect" target="_blank">https://emby.media/connect</a>');
html += '<br/><br/>' + 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
};
});

View file

@ -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'; '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', '<a href="https://emby.media/connect" target="_blank">https://emby.media/connect</a>');
html += '<br/><br/>' + 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 { return {
show: function () { show: function () {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
@ -141,7 +46,8 @@
dlg.querySelector('form').addEventListener('submit', function (e) { dlg.querySelector('form').addEventListener('submit', function (e) {
ApiClient.getCurrentUser().then(function (user) { 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); dialogHelper.close(dlg);
}, function () { }, function () {
dialogHelper.close(dlg); dialogHelper.close(dlg);

View file

@ -24,8 +24,6 @@
Dashboard.showLoadingMsg(); 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;
@ -35,90 +33,21 @@
return i.getAttribute('data-folderid'); return i.getAttribute('data-folderid');
}); });
// Add/Update connect info require(['connectHelper'], function (connectHelper) {
ApiClient.ajax({
type: "POST", connectHelper.inviteGuest({
url: ApiClient.getUrl('Connect/Invite'), apiClient: ApiClient,
dataType: 'json', guestOptions: {
data: {
ConnectUsername: dlg.querySelector('#txtConnectUsername').value, ConnectUsername: dlg.querySelector('#txtConnectUsername').value,
EnabledLibraries: shareExcludes.join(','), EnabledLibraries: shareExcludes.join(','),
SendingUserId: Dashboard.getCurrentUserId(), SendingUserId: Dashboard.getCurrentUserId(),
EnableLiveTv: false EnableLiveTv: false
} }
}).then(function() {
}).then(function (result) {
dlg.submitted = true; dlg.submitted = true;
dialogHelper.close(dlg); 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', '<a href="https://emby.media/connect" target="_blank">https://emby.media/connect</a>');
html += '<br/><br/>' + 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')
}); });
}); });
} }

View file

@ -132,7 +132,9 @@
promise.then(function (result) { promise.then(function (result) {
renderRecordings(context.querySelector('#latestRecordings'), result.Items, { renderRecordings(context.querySelector('#latestRecordings'), result.Items, {
shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop') shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'),
showYear: true,
lines: 2
}); });
Dashboard.hideLoadingMsg(); Dashboard.hideLoadingMsg();

View file

@ -1252,6 +1252,8 @@ var AppInfo = {};
define("alphaPicker", [embyWebComponentsBowerPath + "/alphapicker/alphapicker"], returnFirstDependency); define("alphaPicker", [embyWebComponentsBowerPath + "/alphapicker/alphapicker"], returnFirstDependency);
define("paper-icon-button-light", [embyWebComponentsBowerPath + "/emby-button/paper-icon-button-light"]); 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-input", [embyWebComponentsBowerPath + "/emby-input/emby-input"], returnFirstDependency);
define("emby-select", [embyWebComponentsBowerPath + "/emby-select/emby-select"], returnFirstDependency); define("emby-select", [embyWebComponentsBowerPath + "/emby-select/emby-select"], returnFirstDependency);
define("emby-slider", [embyWebComponentsBowerPath + "/emby-slider/emby-slider"], returnFirstDependency); define("emby-slider", [embyWebComponentsBowerPath + "/emby-slider/emby-slider"], returnFirstDependency);

View file

@ -55,111 +55,6 @@
Dashboard.hideLoadingMsg(); 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', '<a href="https://emby.media/connect" target="_blank">https://emby.media/connect</a>');
html += '<br/><br/>' + 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) { function onSaveComplete(page, user) {
Dashboard.hideLoadingMsg(); Dashboard.hideLoadingMsg();
@ -173,10 +68,12 @@
}); });
} else { } else {
updateUserInfo(user, $('#txtConnectUserName', page).val(), function () { require(['connectHelper'], function (connectHelper) {
connectHelper.updateUserLink(ApiClient, user, $('#txtConnectUserName', page).val()).then(function () {
loadData(page); loadData(page);
}); });
});
} }
} }