diff --git a/src/Application/Users/Commands/UploadBannerPicture.cs b/src/Application/Users/Commands/UploadBannerPicture.cs
index ae8e783..e99f28a 100644
--- a/src/Application/Users/Commands/UploadBannerPicture.cs
+++ b/src/Application/Users/Commands/UploadBannerPicture.cs
@@ -3,15 +3,25 @@ using Hutopy.Application.Common.Interfaces;
namespace Hutopy.Application.Users.Commands;
+///
+/// Upload a banner picture. If the user has the url already, set the BannerPictureUrl in the user only without upload.
+///
public class UploadBannerPictureCommand : IRequest
{
public required Stream BannerPicture { get; init; }
+ public string BannerPictureUrl { get; init; } = string.Empty;
}
public class UploadBannerPictureCommandHandler(IIdentityService identityService, IAzureBlobStorageService azureBlobStorageService) : IRequestHandler
{
public async Task Handle(UploadBannerPictureCommand request, CancellationToken cancellationToken)
{
+ if (!string.IsNullOrEmpty(request.BannerPictureUrl))
+ {
+ await identityService.UpdateCurrentUserBannerPictureUrlAsync(request.BannerPictureUrl);
+ return request.BannerPictureUrl;
+ }
+
var identityUser = await identityService.GetCurrentUserAsync();
var currentUserId = new Guid(identityUser?.Id ?? "").ToString();
diff --git a/src/Application/Users/Commands/UploadProfilePicture.cs b/src/Application/Users/Commands/UploadProfilePicture.cs
index 154ace7..ae15d31 100644
--- a/src/Application/Users/Commands/UploadProfilePicture.cs
+++ b/src/Application/Users/Commands/UploadProfilePicture.cs
@@ -3,15 +3,25 @@ using Hutopy.Application.Common.Interfaces;
namespace Hutopy.Application.Users.Commands;
+///
+/// Upload a profile picture. If the user has the url already, set the ProfilePictureUrl in the user only without upload.
+///
public class UploadProfilePictureCommand : IRequest
{
public required Stream ProfilePicture { get; init; }
+ public string ProfilePictureUrl { get; init; } = string.Empty;
}
public class UploadProfilePictureCommandHandler(IIdentityService identityService, IAzureBlobStorageService azureBlobStorageService) : IRequestHandler
{
public async Task Handle(UploadProfilePictureCommand request, CancellationToken cancellationToken)
{
+ if (!string.IsNullOrEmpty(request.ProfilePictureUrl))
+ {
+ await identityService.UpdateCurrentUserProfilePictureUrlAsync(request.ProfilePictureUrl);
+ return request.ProfilePictureUrl;
+ }
+
var identityUser = await identityService.GetCurrentUserAsync();
var currentUserId = new Guid(identityUser?.Id ?? "").ToString();
diff --git a/src/Application/Users/Commands/UploadWebsiteIcon.cs b/src/Application/Users/Commands/UploadWebsiteIcon.cs
index 26caa25..31f3f5f 100644
--- a/src/Application/Users/Commands/UploadWebsiteIcon.cs
+++ b/src/Application/Users/Commands/UploadWebsiteIcon.cs
@@ -3,15 +3,26 @@ using Hutopy.Application.Common.Interfaces;
namespace Hutopy.Application.Users.Commands;
+///
+/// Upload a website icon. If the user has the url already, set the WebsitePictureUrl in the user only without upload.
+///
public class UploadWebsiteIconCommand : IRequest
{
public required Stream WebsiteIcon { get; init; }
+
+ public string WebsitePictureUrl { get; init; } = string.Empty;
}
public class UploadWebsiteIconCommandHandler(IIdentityService identityService, IAzureBlobStorageService azureBlobStorageService) : IRequestHandler
{
public async Task Handle(UploadWebsiteIconCommand request, CancellationToken cancellationToken)
{
+ if (!string.IsNullOrEmpty(request.WebsitePictureUrl))
+ {
+ await identityService.UpdateCurrentUserWebsiteIconUrlAsync(request.WebsitePictureUrl);
+ return request.WebsitePictureUrl;
+ }
+
var identityUser = await identityService.GetCurrentUserAsync();
var currentUserId = new Guid(identityUser?.Id ?? "").ToString();
diff --git a/src/Application/Users/Queries/GetMinimalUser/GetMinimalUser.cs b/src/Application/Users/Queries/GetMinimalUser/GetMinimalUser.cs
index 124e9cf..454e8ae 100644
--- a/src/Application/Users/Queries/GetMinimalUser/GetMinimalUser.cs
+++ b/src/Application/Users/Queries/GetMinimalUser/GetMinimalUser.cs
@@ -31,9 +31,11 @@ public class GetMinimalUserQueryHandler(
var user = new MinimalUserDto
{
+ Id = identityUser?.Id ?? string.Empty,
FirstName = identityUser?.FirstName ?? string.Empty,
LastName = identityUser?.LastName ?? string.Empty,
UserName = identityUser?.UserName ?? string.Empty,
+ Occupation = identityUser?.Occupation ?? string.Empty,
SocialNetworks = identityUser?.SocialNetworks ?? new(),
ProfileColors = identityUser?.ProfileColors ?? new(),
StoredDataUrls = identityUser?.StoredDataUrls ?? new(),
diff --git a/src/Application/Users/Queries/GetMinimalUser/MinimalUserDto.cs b/src/Application/Users/Queries/GetMinimalUser/MinimalUserDto.cs
index 7648fa7..a38fd64 100644
--- a/src/Application/Users/Queries/GetMinimalUser/MinimalUserDto.cs
+++ b/src/Application/Users/Queries/GetMinimalUser/MinimalUserDto.cs
@@ -4,9 +4,11 @@ namespace Hutopy.Application.Users.Queries.GetMinimalUser;
public class MinimalUserDto
{
+ public required string Id { get; init; }
public required string FirstName { get; init; }
public required string LastName { get; init; }
public required string UserName { get; init; } = String.Empty;
+ public required string Occupation { get; init; } = String.Empty;
public SocialNetworksModel SocialNetworks { get; init; } = new();
public ProfileColorsModel ProfileColors { get; init; } = new();
diff --git a/src/Web/Endpoints/UpdateMyUser.cs b/src/Web/Endpoints/UpdateMyUser.cs
index 9aca4dc..8f13133 100644
--- a/src/Web/Endpoints/UpdateMyUser.cs
+++ b/src/Web/Endpoints/UpdateMyUser.cs
@@ -19,21 +19,21 @@ public class UpdateMyUser : EndpointGroupBase
return await sender.Send(command);
}
- private static async Task UpdateCurrentUserProfilePicture(ISender sender, Stream stream)
+ private static async Task UpdateCurrentUserProfilePicture(ISender sender, Stream stream, string url = "")
{
- var command = new UploadProfilePictureCommand { ProfilePicture = stream };
+ var command = new UploadProfilePictureCommand { ProfilePicture = stream, ProfilePictureUrl = url};
return await sender.Send(command);
}
- private static async Task UpdateCurrentUserBannerPicture(ISender sender, Stream stream)
+ private static async Task UpdateCurrentUserBannerPicture(ISender sender, Stream stream, string url = "")
{
- var command = new UploadBannerPictureCommand { BannerPicture = stream };
+ var command = new UploadBannerPictureCommand { BannerPicture = stream, BannerPictureUrl = url};
return await sender.Send(command);
}
- private static async Task UpdateCurrentUserWebsiteIcon(ISender sender, Stream stream)
+ private static async Task UpdateCurrentUserWebsiteIcon(ISender sender, Stream stream, string url = "")
{
- var command = new UploadWebsiteIconCommand { WebsiteIcon = stream };
+ var command = new UploadWebsiteIconCommand { WebsiteIcon = stream, WebsitePictureUrl = url};
return await sender.Send(command);
}
}