From 8e4494153b8bca3da5c4078239407ebde2503325 Mon Sep 17 00:00:00 2001 From: Loporrit <141286461+loporrit@users.noreply.github.com> Date: Fri, 27 Jun 2025 22:10:37 +0000 Subject: [PATCH] Fix CharaDataGetShared Co-authored-by: Stanley Dimant --- .../MareSynchronosServer/Hubs/MareHub.CharaData.cs | 9 ++++++--- .../MareSynchronosServer/Hubs/MareHub.Functions.cs | 12 ++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.CharaData.cs b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.CharaData.cs index 9bf0189..7904ebc 100644 --- a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.CharaData.cs +++ b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.CharaData.cs @@ -137,7 +137,8 @@ public partial class MareHub .ToListAsync() .ConfigureAwait(false); - var validPairs = await GetAllPairedUnpausedUsers().ConfigureAwait(false); + var individualPairs = await GetDirectPairedUnpausedUsers().ConfigureAwait(false); + var allPairs = await GetAllPairedUnpausedUsers().ConfigureAwait(false); var allSharedDataByPair = await DbContext.CharaData .Include(u => u.Files) @@ -146,8 +147,10 @@ public partial class MareHub .Include(u => u.Poses) .Include(u => u.Uploader) .Where(p => p.UploaderUID != UserUID && p.ShareType == CharaDataShare.Shared) - .Where(p => (validPairs.Contains(p.UploaderUID) - || (p.AllowedIndividiuals.Any(u => u.AllowedUserUID == UserUID || (u.AllowedGroupGID != null && groups.Contains(u.AllowedGroupGID)))))) + .Where(p => + (individualPairs.Contains(p.UploaderUID) && p.AccessType == CharaDataAccess.ClosePairs) + || (allPairs.Contains(p.UploaderUID) && p.AccessType == CharaDataAccess.AllPairs) + || (p.AllowedIndividiuals.Any(u => u.AllowedUserUID == UserUID || (u.AllowedGroupGID != null && groups.Contains(u.AllowedGroupGID))))) .AsSplitQuery() .AsNoTracking() .ToListAsync() diff --git a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Functions.cs b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Functions.cs index 559eb97..c1a7944 100644 --- a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Functions.cs +++ b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Functions.cs @@ -104,6 +104,18 @@ public partial class MareHub return ret.Where(k => !k.IsPaused).Select(k => k.UID).ToList(); } + private async Task> GetDirectPairedUnpausedUsers(string? uid = null) + { + uid ??= UserUID; + + var query = await (from userPair in DbContext.ClientPairs + join otherUserPair in DbContext.ClientPairs on userPair.OtherUserUID equals otherUserPair.UserUID + where otherUserPair.OtherUserUID == uid && userPair.UserUID == uid && !userPair.IsPaused && !otherUserPair.IsPaused + select Convert.ToString(userPair.OtherUserUID)).AsNoTracking().ToListAsync().ConfigureAwait(false); + + return query; + } + private async Task> GetOnlineUsers(List uids) { var result = await _redis.GetAllAsync(uids.Select(u => "UID:" + u).ToHashSet(StringComparer.Ordinal)).ConfigureAwait(false);