Fix CharaDataGetShared
Co-authored-by: Stanley Dimant <root.darkarchon@outlook.com>
This commit is contained in:
@@ -137,7 +137,8 @@ public partial class MareHub
|
|||||||
.ToListAsync()
|
.ToListAsync()
|
||||||
.ConfigureAwait(false);
|
.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
|
var allSharedDataByPair = await DbContext.CharaData
|
||||||
.Include(u => u.Files)
|
.Include(u => u.Files)
|
||||||
@@ -146,8 +147,10 @@ public partial class MareHub
|
|||||||
.Include(u => u.Poses)
|
.Include(u => u.Poses)
|
||||||
.Include(u => u.Uploader)
|
.Include(u => u.Uploader)
|
||||||
.Where(p => p.UploaderUID != UserUID && p.ShareType == CharaDataShare.Shared)
|
.Where(p => p.UploaderUID != UserUID && p.ShareType == CharaDataShare.Shared)
|
||||||
.Where(p => (validPairs.Contains(p.UploaderUID)
|
.Where(p =>
|
||||||
|| (p.AllowedIndividiuals.Any(u => u.AllowedUserUID == UserUID || (u.AllowedGroupGID != null && groups.Contains(u.AllowedGroupGID))))))
|
(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()
|
.AsSplitQuery()
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.ToListAsync()
|
.ToListAsync()
|
||||||
|
|||||||
@@ -104,6 +104,18 @@ public partial class MareHub
|
|||||||
return ret.Where(k => !k.IsPaused).Select(k => k.UID).ToList();
|
return ret.Where(k => !k.IsPaused).Select(k => k.UID).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task<List<string>> 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<Dictionary<string, string>> GetOnlineUsers(List<string> uids)
|
private async Task<Dictionary<string, string>> GetOnlineUsers(List<string> uids)
|
||||||
{
|
{
|
||||||
var result = await _redis.GetAllAsync<string>(uids.Select(u => "UID:" + u).ToHashSet(StringComparer.Ordinal)).ConfigureAwait(false);
|
var result = await _redis.GetAllAsync<string>(uids.Select(u => "UID:" + u).ToHashSet(StringComparer.Ordinal)).ConfigureAwait(false);
|
||||||
|
|||||||
Reference in New Issue
Block a user