Fix profile images.

This commit is contained in:
Patrick Barron 2020-05-20 12:09:52 -04:00
parent 623dcde65c
commit 7d9d54d2ec
5 changed files with 23 additions and 12 deletions

View File

@ -6,11 +6,9 @@ namespace Jellyfin.Data.Entities
{ {
public class ImageInfo public class ImageInfo
{ {
public ImageInfo(string path, int width, int height) public ImageInfo(string path)
{ {
Path = path; Path = path;
Width = width;
Height = height;
LastModified = DateTime.UtcNow; LastModified = DateTime.UtcNow;
} }
@ -20,14 +18,10 @@ namespace Jellyfin.Data.Entities
public int Id { get; protected set; } public int Id { get; protected set; }
[Required] [Required]
[MaxLength(512)]
[StringLength(512)]
public string Path { get; set; } public string Path { get; set; }
[Required]
public int Width { get; set; }
[Required]
public int Height { get; set; }
[Required] [Required]
public DateTime LastModified { get; set; } public DateTime LastModified { get; set; }
} }

View File

@ -118,7 +118,7 @@ namespace Jellyfin.Server.Migrations.Routines
{ {
ItemImageInfo info = mockup.ImageInfos[0]; ItemImageInfo info = mockup.ImageInfos[0];
user.ProfileImage = new ImageInfo(info.Path, info.Width, info.Height) user.ProfileImage = new ImageInfo(info.Path)
{ {
LastModified = info.DateModified LastModified = info.DateModified
}; };

View File

@ -471,8 +471,17 @@ namespace MediaBrowser.Api.Images
AssertCanUpdateUser(_authContext, _userManager, userId, true); AssertCanUpdateUser(_authContext, _userManager, userId, true);
var user = _userManager.GetUserById(userId); var user = _userManager.GetUserById(userId);
try
{
File.Delete(user.ProfileImage.Path);
}
catch (IOException e)
{
// TODO: Log this
}
user.ProfileImage = null; user.ProfileImage = null;
_userManager.UpdateUser(user);
} }
/// <summary> /// <summary>
@ -639,6 +648,7 @@ namespace MediaBrowser.Api.Images
IDictionary<string, string> headers, IDictionary<string, string> headers,
bool isHeadRequest) bool isHeadRequest)
{ {
info.Type = ImageType.Profile;
var options = new ImageProcessingOptions var options = new ImageProcessingOptions
{ {
CropWhiteSpace = true, CropWhiteSpace = true,
@ -886,9 +896,10 @@ namespace MediaBrowser.Api.Images
// Handle image/png; charset=utf-8 // Handle image/png; charset=utf-8
mimeType = mimeType.Split(';').FirstOrDefault(); mimeType = mimeType.Split(';').FirstOrDefault();
var userDataPath = Path.Combine(ServerConfigurationManager.ApplicationPaths.UserConfigurationDirectoryPath, user.Username); var userDataPath = Path.Combine(ServerConfigurationManager.ApplicationPaths.UserConfigurationDirectoryPath, user.Username);
user.ProfileImage = new Jellyfin.Data.Entities.ImageInfo(Path.Combine(userDataPath, "profile" + MimeTypes.ToExtension(mimeType)));
await _providerManager await _providerManager
.SaveImage(user, memoryStream, mimeType, Path.Combine(userDataPath, "profile" + MimeTypes.ToExtension(mimeType))) .SaveImage(user, memoryStream, mimeType, user.ProfileImage.Path)
.ConfigureAwait(false); .ConfigureAwait(false);
await _userManager.UpdateUserAsync(user); await _userManager.UpdateUserAsync(user);
} }

View File

@ -57,6 +57,7 @@ namespace MediaBrowser.Controller.Drawing
case ImageType.BoxRear: case ImageType.BoxRear:
case ImageType.Disc: case ImageType.Disc:
case ImageType.Menu: case ImageType.Menu:
case ImageType.Profile:
return 1; return 1;
case ImageType.Logo: case ImageType.Logo:
return 2.58; return 2.58;

View File

@ -63,6 +63,11 @@ namespace MediaBrowser.Model.Entities
/// <summary> /// <summary>
/// The box rear. /// The box rear.
/// </summary> /// </summary>
BoxRear = 11 BoxRear = 11,
/// <summary>
/// The user profile image.
/// </summary>
Profile = 12
} }
} }