Skip to content
Snippets Groups Projects
Commit 8e224347 authored by Matej Vavrek's avatar Matej Vavrek
Browse files

Fixed avatar upload to ensure that only one avatar image exists at all times,...

Fixed avatar upload to ensure that only one avatar image exists at all times, regardless of extension
parent b7537438
No related branches found
No related tags found
2 merge requests!46Milestone-2,!37Avatar image upload fix
Pipeline #
......@@ -53,9 +53,7 @@ namespace BusinessLayer.Services.ImageService
return false;
}
bool replace = imageUploadDTO.ImageType == ImageType.Avatar;
return await _imageStorage.SaveImageAsync(
var saveSucceeded = await _imageStorage.SaveImageAsync(
new ImageStorageData
{
Data = imageUploadDTO.Data,
......@@ -67,7 +65,16 @@ namespace BusinessLayer.Services.ImageService
Extension = imageUploadDTO.Extension,
}
},
replace);
imageUploadDTO.ImageType == ImageType.Avatar);
// If an image is an avatar image, we want to make sure it is the only image tagged as avatar there is.
if ( saveSucceeded && imageUploadDTO.ImageType == ImageType.Avatar )
{
EnsureAvatarUniqueness(imageUploadDTO.EntityType, imageUploadDTO.EntityId,
imageUploadDTO.ImageType, imageUploadDTO.Extension);
}
return saveSucceeded;
}
public async Task<bool> SaveImagesAsync(ImageUploadDTO[] imageUploadDTOs)
......@@ -144,14 +151,33 @@ namespace BusinessLayer.Services.ImageService
}
private string ComposeNameFilter(ImageType type)
private static string ComposeNameFilter(ImageType type) => type switch
{
ImageType.Avatar => Paths.AvatarImageName + "*",
ImageType.Gallery => Paths.GalleryImageName + "*",
_ => "*"
};
private void EnsureAvatarUniqueness(OwnerEntityType type, Guid ownerId, ImageType imageType, string extension)
{
return type switch
var paths = GetImagePaths(ownerId, type, imageType);
var expectedName = imageType + extension;
foreach (var path in paths)
{
ImageType.Avatar => Paths.AvatarImageName + "*",
ImageType.Gallery => Paths.GalleryImageName + "*",
_ => "*"
};
var name = Path.GetFileName(path);
if (expectedName != name)
{
_imageStorage.RemoveImage(new SpecificImagePathData
{
OwnerEntityName = type.ToString("g"),
OwnerEntityId = ownerId.ToString(),
ImageType = imageType.ToString("g"),
Name = name
});
}
}
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment