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