From 59f3739b9cff279934904bc91f1b1a3bc7104c31 Mon Sep 17 00:00:00 2001 From: CakeAndBanana Date: Tue, 14 Oct 2025 18:19:46 +0200 Subject: [PATCH] Fixed some issues with profiles on groups --- .../Hubs/LightlessHub.Functions.cs | 4 +-- .../Hubs/LightlessHub.Groups.cs | 34 +++++++++++++------ .../LightlessSyncServer/Utils/Extensions.cs | 6 ++++ 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/LightlessSyncServer/LightlessSyncServer/Hubs/LightlessHub.Functions.cs b/LightlessSyncServer/LightlessSyncServer/Hubs/LightlessHub.Functions.cs index 40ca003..5280474 100644 --- a/LightlessSyncServer/LightlessSyncServer/Hubs/LightlessHub.Functions.cs +++ b/LightlessSyncServer/LightlessSyncServer/Hubs/LightlessHub.Functions.cs @@ -161,7 +161,7 @@ public partial class LightlessHub if (isOwnerResult.ReferredGroup == null) return (false, null); - var groupPairSelf = await DbContext.GroupPairs.SingleOrDefaultAsync(g => g.GroupGID == gid && g.GroupUserUID == UserUID).ConfigureAwait(false); + var groupPairSelf = await DbContext.GroupPairs.SingleOrDefaultAsync(g => g.GroupGID == gid || g.Group.Alias == gid && g.GroupUserUID == UserUID).ConfigureAwait(false); if (groupPairSelf == null || !groupPairSelf.IsModerator) return (false, null); return (true, isOwnerResult.ReferredGroup); @@ -169,7 +169,7 @@ public partial class LightlessHub private async Task<(bool isValid, Group ReferredGroup)> TryValidateOwner(string gid) { - var group = await DbContext.Groups.SingleOrDefaultAsync(g => g.GID == gid).ConfigureAwait(false); + var group = await DbContext.Groups.SingleOrDefaultAsync(g => g.GID == gid || g.Alias == gid).ConfigureAwait(false); if (group == null) return (false, null); return (string.Equals(group.OwnerUID, UserUID, StringComparison.Ordinal), group); diff --git a/LightlessSyncServer/LightlessSyncServer/Hubs/LightlessHub.Groups.cs b/LightlessSyncServer/LightlessSyncServer/Hubs/LightlessHub.Groups.cs index 69a32e4..31218f2 100644 --- a/LightlessSyncServer/LightlessSyncServer/Hubs/LightlessHub.Groups.cs +++ b/LightlessSyncServer/LightlessSyncServer/Hubs/LightlessHub.Groups.cs @@ -746,7 +746,7 @@ public partial class LightlessHub var cancellationToken = _contextAccessor.HttpContext.RequestAborted; var data = await DbContext.GroupProfiles - .FirstOrDefaultAsync(g => g.GroupGID == dto.Group.GID, cancellationToken) + .FirstOrDefaultAsync(g => g.Group.GID == dto.Group.GID || g.Group.Alias == dto.Group.GID, cancellationToken) .ConfigureAwait(false); var profileDto = new GroupProfileDto(dto.Group, Description: null, Tags: null, PictureBase64: null); @@ -759,10 +759,6 @@ public partial class LightlessHub Tags = data.Tags, PictureBase64 = data.Base64GroupProfileImage, }; - - await Clients.User(UserUID) - .Client_GroupSendProfile(profileDto) - .ConfigureAwait(false); } return profileDto; @@ -779,15 +775,33 @@ public partial class LightlessHub if (!hasRights) return; var groupProfileDb = await DbContext.GroupProfiles - .FirstOrDefaultAsync(g => g.GroupGID == dto.Group.GID, + .FirstOrDefaultAsync(g => g.Group.GID == dto.Group.GID || g.Group.Alias == dto.Group.GID, _contextAccessor.HttpContext.RequestAborted) .ConfigureAwait(false); if (groupProfileDb != null) { - groupProfileDb.Description = dto.Description; - groupProfileDb.Tags = dto.Tags; - groupProfileDb.Base64GroupProfileImage = dto.PictureBase64; + var groupPairs = DbContext.GroupPairs.Where(p => p.GroupGID == groupProfileDb.GroupGID).Select(p => p.GroupUserUID).ToList(); + + if (string.Equals("", dto.PictureBase64, StringComparison.OrdinalIgnoreCase)) + { + groupProfileDb.Base64GroupProfileImage = null; + } + else if (dto.PictureBase64 != null) + { + groupProfileDb.Base64GroupProfileImage = dto.PictureBase64; + } + else if (dto.Tags != null) + { + groupProfileDb.Tags = dto.Tags; + } + + if (dto.Description != null) + { + groupProfileDb.Description = dto.Description; + } + + await Clients.Users(groupPairs).Client_GroupSendProfile(groupProfileDb.ToDTO()).ConfigureAwait(false); } else { @@ -990,6 +1004,4 @@ public partial class LightlessHub return results; } - - } \ No newline at end of file diff --git a/LightlessSyncServer/LightlessSyncServer/Utils/Extensions.cs b/LightlessSyncServer/LightlessSyncServer/Utils/Extensions.cs index 34bedac..33e367f 100644 --- a/LightlessSyncServer/LightlessSyncServer/Utils/Extensions.cs +++ b/LightlessSyncServer/LightlessSyncServer/Utils/Extensions.cs @@ -1,6 +1,7 @@ using LightlessSync.API.Data; using LightlessSync.API.Data.Enum; using LightlessSync.API.Data.Extensions; +using LightlessSync.API.Dto.Group; using LightlessSyncShared.Models; using static LightlessSyncServer.Hubs.LightlessHub; @@ -8,6 +9,11 @@ namespace LightlessSyncServer.Utils; public static class Extensions { + public static GroupProfileDto ToDTO(this GroupProfile groupProfile) + { + return new GroupProfileDto(groupProfile.Group.ToGroupData(), groupProfile.Description, groupProfile.Tags, groupProfile.Base64GroupProfileImage); + } + public static GroupData ToGroupData(this Group group) { return new GroupData(group.GID, group.Alias, group.CreatedDate);