Fixed some issues with profiles on groups

This commit is contained in:
CakeAndBanana
2025-10-14 18:19:46 +02:00
parent 58f5f3ad85
commit 59f3739b9c
3 changed files with 31 additions and 13 deletions

View File

@@ -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);

View File

@@ -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;
}
}

View File

@@ -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);