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

155 lines
5.7 KiB
JavaScript
Raw Normal View History

2019-01-10 18:53:37 +01:00
define(["scripts/userpasswordpage", "loading", "libraryMenu", "apphost", "emby-linkbutton"], function (Userpasswordpage, loading, libraryMenu, appHost) {
2018-10-23 01:05:09 +03:00
"use strict";
function reloadUser(page) {
var userId = getParameterByName("userId");
2019-01-10 18:53:37 +01:00
loading.show();
ApiClient.getUser(userId).then(function (user) {
2018-10-23 01:05:09 +03:00
page.querySelector(".username").innerHTML = user.Name;
var uploadUserImage = page.querySelector("#uploadUserImage");
2019-01-10 18:53:37 +01:00
uploadUserImage.value = "";
uploadUserImage.dispatchEvent(new CustomEvent("change", {}));
libraryMenu.setTitle(user.Name);
var imageUrl;
var fldImage = page.querySelector("#fldImage");
2018-10-23 01:05:09 +03:00
imageUrl = user.PrimaryImageTag ? ApiClient.getUserImageUrl(user.Id, {
height: 200,
tag: user.PrimaryImageTag,
type: "Primary"
2019-01-10 18:53:37 +01:00
}) : "css/images/logindefault.png";
fldImage.classList.remove("hide");
fldImage.innerHTML = "<img width='140px' src='" + imageUrl + "' />";
var showImageEditing = true;
Dashboard.getCurrentUser().then(function (loggedInUser) {
if (showImageEditing && appHost.supports("fileinput") && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) {
page.querySelector(".newImageForm").classList.remove("hide");
if (user.PrimaryImageTag) {
page.querySelector("#btnDeleteImage").classList.remove("hide");
} else {
page.querySelector("#btnDeleteImage").classList.add("hide");
}
} else {
page.querySelector(".newImageForm").classList.add("hide");
page.querySelector("#btnDeleteImage").classList.add("hide");
}
});
loading.hide();
});
2018-10-23 01:05:09 +03:00
}
function onFileReaderError(evt) {
switch (loading.hide(), evt.target.error.code) {
case evt.target.error.NOT_FOUND_ERR:
2019-01-10 18:53:37 +01:00
require(["toast"], function (toast) {
toast(Globalize.translate("FileNotFound"));
2018-10-23 01:05:09 +03:00
});
2019-01-10 18:53:37 +01:00
2018-10-23 01:05:09 +03:00
break;
2019-01-10 18:53:37 +01:00
2018-10-23 01:05:09 +03:00
case evt.target.error.NOT_READABLE_ERR:
2019-01-10 18:53:37 +01:00
require(["toast"], function (toast) {
toast(Globalize.translate("FileReadError"));
2018-10-23 01:05:09 +03:00
});
2019-01-10 18:53:37 +01:00
2018-10-23 01:05:09 +03:00
break;
2019-01-10 18:53:37 +01:00
2018-10-23 01:05:09 +03:00
case evt.target.error.ABORT_ERR:
break;
2019-01-10 18:53:37 +01:00
2018-10-23 01:05:09 +03:00
default:
2019-01-10 18:53:37 +01:00
require(["toast"], function (toast) {
toast(Globalize.translate("FileReadError"));
});
2018-10-23 01:05:09 +03:00
}
}
function onFileReaderAbort(evt) {
2019-01-10 18:53:37 +01:00
loading.hide();
require(["toast"], function (toast) {
toast(Globalize.translate("FileReadCancelled"));
});
2018-10-23 01:05:09 +03:00
}
function setFiles(page, files) {
var file = files[0];
2019-01-10 18:53:37 +01:00
if (!file || !file.type.match("image.*")) {
page.querySelector("#userImageOutput").innerHTML = "";
page.querySelector("#fldUpload").classList.add("hide");
return void (currentFile = null);
}
2018-10-23 01:05:09 +03:00
currentFile = file;
2019-01-10 18:53:37 +01:00
var reader = new FileReader();
reader.onerror = onFileReaderError;
reader.onloadstart = function () {
page.querySelector("#fldUpload").classList.add("hide");
};
reader.onabort = onFileReaderAbort;
reader.onload = function (e__q) {
var html = ['<img style="max-width:100%;max-height:100%;" src="', e__q.target.result, '" title="', escape(file.name), '"/>'].join("");
page.querySelector("#userImageOutput").innerHTML = html;
page.querySelector("#fldUpload").classList.remove("hide");
};
reader.readAsDataURL(file);
2018-10-23 01:05:09 +03:00
}
2019-01-10 18:53:37 +01:00
function onImageDragOver(e__w) {
e__w.preventDefault();
e__w.originalEvent.dataTransfer.dropEffect = "Copy";
return false;
2018-10-23 01:05:09 +03:00
}
2019-01-10 18:53:37 +01:00
2018-10-23 01:05:09 +03:00
var currentFile;
2019-01-10 18:53:37 +01:00
return function (view, params) {
2018-10-23 01:05:09 +03:00
reloadUser(view);
new Userpasswordpage(view, params);
2019-01-10 18:53:37 +01:00
view.querySelector("#userImageDropZone").addEventListener("dragOver", onImageDragOver);
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();
var userId = getParameterByName("userId");
2019-01-10 18:53:37 +01:00
ApiClient.deleteUserImage(userId, "primary").then(function () {
loading.hide();
reloadUser(view);
});
});
});
});
view.querySelector(".btnBrowse").addEventListener("click", function () {
view.querySelector("#uploadUserImage").click();
});
view.querySelector(".newImageForm").addEventListener("submit", function (e__e) {
2018-10-23 01:05:09 +03:00
var file = currentFile;
2019-01-10 18:53:37 +01:00
if (!file) {
return false;
}
if ("image/png" != file.type && "image/jpeg" != file.type && "image/jpeg" != file.type) {
return false;
}
2018-10-23 01:05:09 +03:00
loading.show();
var userId = getParameterByName("userId");
2019-01-10 18:53:37 +01:00
ApiClient.uploadUserImage(userId, "Primary", file).then(function () {
loading.hide();
reloadUser(view);
});
e__e.preventDefault();
return false;
});
view.querySelector("#uploadUserImage").addEventListener("change", function (e__r) {
setFiles(view, e__r.target.files);
});
};
});