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

107 lines
4 KiB
JavaScript
Raw Normal View History

2020-05-17 23:19:21 +09:00
define(['controllers/dashboard/users/userpasswordpage', 'loading', 'libraryMenu', 'apphost', 'globalize', 'emby-button'], function (UserPasswordPage, loading, libraryMenu, appHost, globalize) {
2020-05-04 12:44:12 +02:00
'use strict';
2018-10-23 01:05:09 +03:00
function reloadUser(page) {
2020-05-04 12:44:12 +02:00
var userId = getParameterByName('userId');
2019-01-10 18:53:37 +01:00
loading.show();
ApiClient.getUser(userId).then(function (user) {
2020-05-04 12:44:12 +02:00
page.querySelector('.username').innerHTML = user.Name;
2019-01-10 18:53:37 +01:00
libraryMenu.setTitle(user.Name);
2019-09-26 01:15:36 +09:00
2020-05-04 12:44:12 +02:00
var imageUrl = 'assets/img/avatar.png';
2019-01-10 19:16:31 +01:00
if (user.PrimaryImageTag) {
imageUrl = ApiClient.getUserImageUrl(user.Id, {
2019-01-10 19:16:31 +01:00
tag: user.PrimaryImageTag,
2020-05-04 12:44:12 +02:00
type: 'Primary'
2019-01-10 19:16:31 +01:00
});
}
2019-01-10 18:53:37 +01:00
2020-05-04 12:44:12 +02:00
var userImage = page.querySelector('#image');
userImage.style.backgroundImage = 'url(' + imageUrl + ')';
2019-09-26 01:15:36 +09:00
Dashboard.getCurrentUser().then(function (loggedInUser) {
if (user.PrimaryImageTag) {
2020-05-04 12:44:12 +02:00
page.querySelector('#btnAddImage').classList.add('hide');
page.querySelector('#btnDeleteImage').classList.remove('hide');
} else if (appHost.supports('fileinput') && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) {
page.querySelector('#btnDeleteImage').classList.add('hide');
page.querySelector('#btnAddImage').classList.remove('hide');
2019-01-10 18:53:37 +01:00
}
});
loading.hide();
});
2018-10-23 01:05:09 +03:00
}
function onFileReaderError(evt) {
2019-01-10 19:16:31 +01:00
loading.hide();
switch (evt.target.error.code) {
2018-10-23 01:05:09 +03:00
case evt.target.error.NOT_FOUND_ERR:
2020-05-04 12:44:12 +02:00
require(['toast'], function (toast) {
toast(globalize.translate('FileNotFound'));
2018-10-23 01:05:09 +03:00
});
break;
case evt.target.error.ABORT_ERR:
2019-09-26 01:15:36 +09:00
onFileReaderAbort();
2018-10-23 01:05:09 +03:00
break;
2019-09-26 01:15:36 +09:00
case evt.target.error.NOT_READABLE_ERR:
2018-10-23 01:05:09 +03:00
default:
2020-05-04 12:44:12 +02:00
require(['toast'], function (toast) {
toast(globalize.translate('FileReadError'));
2019-01-10 18:53:37 +01:00
});
2018-10-23 01:05:09 +03:00
}
}
function onFileReaderAbort(evt) {
2019-01-10 18:53:37 +01:00
loading.hide();
2020-05-04 12:44:12 +02:00
require(['toast'], function (toast) {
toast(globalize.translate('FileReadCancelled'));
2019-01-10 18:53:37 +01:00
});
2018-10-23 01:05:09 +03:00
}
function setFiles(page, files) {
2020-05-04 12:44:12 +02:00
var userImage = page.querySelector('#image');
2018-10-23 01:05:09 +03:00
var file = files[0];
2019-01-10 18:53:37 +01:00
2020-05-04 12:44:12 +02:00
if (!file || !file.type.match('image.*')) {
2019-09-26 01:15:36 +09:00
return false;
2019-01-10 18:53:37 +01:00
}
var reader = new FileReader();
reader.onerror = onFileReaderError;
reader.onabort = onFileReaderAbort;
2019-01-10 19:16:31 +01:00
reader.onload = function (evt) {
2020-05-04 12:44:12 +02:00
userImage.style.backgroundImage = 'url(' + evt.target.result + ')';
var userId = getParameterByName('userId');
ApiClient.uploadUserImage(userId, 'Primary', file).then(function () {
2019-09-26 01:15:36 +09:00
loading.hide();
reloadUser(page);
});
2019-01-10 18:53:37 +01:00
};
reader.readAsDataURL(file);
2018-10-23 01:05:09 +03:00
}
2019-01-10 18:53:37 +01:00
return function (view, params) {
2018-10-23 01:05:09 +03:00
reloadUser(view);
2019-09-26 01:15:36 +09:00
new UserPasswordPage(view, params);
2020-05-04 12:44:12 +02:00
view.querySelector('#btnDeleteImage').addEventListener('click', function () {
require(['confirm'], function (confirm) {
confirm(globalize.translate('DeleteImageConfirmation'), globalize.translate('DeleteImage')).then(function () {
2018-10-23 01:05:09 +03:00
loading.show();
2020-05-04 12:44:12 +02:00
var userId = getParameterByName('userId');
ApiClient.deleteUserImage(userId, 'primary').then(function () {
2019-01-10 18:53:37 +01:00
loading.hide();
reloadUser(view);
});
});
});
});
2020-05-04 12:44:12 +02:00
view.querySelector('#btnAddImage').addEventListener('click', function (evt) {
view.querySelector('#uploadImage').click();
2019-01-10 18:53:37 +01:00
});
2020-05-04 12:44:12 +02:00
view.querySelector('#uploadImage').addEventListener('change', function (evt) {
2019-01-10 19:16:31 +01:00
setFiles(view, evt.target.files);
2019-01-10 18:53:37 +01:00
});
};
});