fix group clearing etc. probably
This commit is contained in:
@@ -104,9 +104,11 @@ public partial class MareHub
|
|||||||
var pairIdent = await GetUserIdent(pair.GroupUserUID).ConfigureAwait(false);
|
var pairIdent = await GetUserIdent(pair.GroupUserUID).ConfigureAwait(false);
|
||||||
if (string.IsNullOrEmpty(pairIdent)) continue;
|
if (string.IsNullOrEmpty(pairIdent)) continue;
|
||||||
|
|
||||||
|
var pairInfo = await GetAllPairInfo(pair.GroupUserUID).ConfigureAwait(false);
|
||||||
|
|
||||||
foreach (var groupUserPair in groupUsers.Where(g => !string.Equals(g.GroupUserUID, pair.GroupUserUID, StringComparison.Ordinal)))
|
foreach (var groupUserPair in groupUsers.Where(g => !string.Equals(g.GroupUserUID, pair.GroupUserUID, StringComparison.Ordinal)))
|
||||||
{
|
{
|
||||||
await UserGroupLeave(groupUserPair, pairIdent, pair.GroupUserUID).ConfigureAwait(false);
|
await UserGroupLeave(groupUserPair, pairIdent, pairInfo, pair.GroupUserUID).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -166,10 +168,9 @@ public partial class MareHub
|
|||||||
await _redis.AddAsync("UID:" + UserUID, UserCharaIdent, TimeSpan.FromSeconds(60), StackExchange.Redis.When.Always, StackExchange.Redis.CommandFlags.FireAndForget).ConfigureAwait(false);
|
await _redis.AddAsync("UID:" + UserUID, UserCharaIdent, TimeSpan.FromSeconds(60), StackExchange.Redis.When.Always, StackExchange.Redis.CommandFlags.FireAndForget).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task UserGroupLeave(GroupPair groupUserPair, string userIdent, string? uid = null)
|
private async Task UserGroupLeave(GroupPair groupUserPair, string userIdent, Dictionary<string, UserInfo> allUserPairs, string? uid = null)
|
||||||
{
|
{
|
||||||
uid ??= UserUID;
|
uid ??= UserUID;
|
||||||
var allUserPairs = await GetAllPairInfo(uid).ConfigureAwait(false);
|
|
||||||
if (!allUserPairs.TryGetValue(groupUserPair.GroupUserUID, out var info) || !info.IsSynced)
|
if (!allUserPairs.TryGetValue(groupUserPair.GroupUserUID, out var info) || !info.IsSynced)
|
||||||
{
|
{
|
||||||
var groupUserIdent = await GetUserIdent(groupUserPair.GroupUserUID).ConfigureAwait(false);
|
var groupUserIdent = await GetUserIdent(groupUserPair.GroupUserUID).ConfigureAwait(false);
|
||||||
@@ -241,9 +242,11 @@ public partial class MareHub
|
|||||||
|
|
||||||
var ident = await GetUserIdent(userUid).ConfigureAwait(false);
|
var ident = await GetUserIdent(userUid).ConfigureAwait(false);
|
||||||
|
|
||||||
|
var pairs = await GetAllPairInfo(userUid).ConfigureAwait(false);
|
||||||
|
|
||||||
foreach (var groupUserPair in groupPairsWithoutSelf)
|
foreach (var groupUserPair in groupPairsWithoutSelf)
|
||||||
{
|
{
|
||||||
await UserGroupLeave(groupUserPair, ident, userUid).ConfigureAwait(false);
|
await UserGroupLeave(groupUserPair, ident, pairs, userUid).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -117,13 +117,12 @@ public partial class MareHub
|
|||||||
if (!hasRights) return;
|
if (!hasRights) return;
|
||||||
|
|
||||||
var groupPairs = await DbContext.GroupPairs.Include(p => p.GroupUser).Where(p => p.GroupGID == dto.Group.GID).ToListAsync().ConfigureAwait(false);
|
var groupPairs = await DbContext.GroupPairs.Include(p => p.GroupUser).Where(p => p.GroupGID == dto.Group.GID).ToListAsync().ConfigureAwait(false);
|
||||||
|
var notPinned = groupPairs.Where(g => !g.IsPinned && !g.IsModerator).ToList();
|
||||||
|
|
||||||
await Clients.Users(groupPairs.Where(p => !p.IsPinned && !p.IsModerator).Select(g => g.GroupUserUID)).Client_GroupDelete(new GroupDto(group.ToGroupData())).ConfigureAwait(false);
|
await Clients.Users(notPinned.Select(g => g.GroupUserUID)).Client_GroupDelete(new GroupDto(group.ToGroupData())).ConfigureAwait(false);
|
||||||
|
|
||||||
_logger.LogCallInfo(MareHubLogger.Args(dto, "Success"));
|
_logger.LogCallInfo(MareHubLogger.Args(dto, "Success"));
|
||||||
|
|
||||||
var notPinned = groupPairs.Where(g => !g.IsPinned && !g.IsModerator).ToList();
|
|
||||||
|
|
||||||
DbContext.GroupPairs.RemoveRange(notPinned);
|
DbContext.GroupPairs.RemoveRange(notPinned);
|
||||||
|
|
||||||
foreach (var pair in notPinned)
|
foreach (var pair in notPinned)
|
||||||
@@ -134,9 +133,11 @@ public partial class MareHub
|
|||||||
var pairIdent = await GetUserIdent(pair.GroupUserUID).ConfigureAwait(false);
|
var pairIdent = await GetUserIdent(pair.GroupUserUID).ConfigureAwait(false);
|
||||||
if (string.IsNullOrEmpty(pairIdent)) continue;
|
if (string.IsNullOrEmpty(pairIdent)) continue;
|
||||||
|
|
||||||
|
var allUserPairs = await GetAllPairInfo(pair.GroupUserUID).ConfigureAwait(false);
|
||||||
|
|
||||||
foreach (var groupUserPair in groupPairs.Where(p => !string.Equals(p.GroupUserUID, pair.GroupUserUID, StringComparison.Ordinal)))
|
foreach (var groupUserPair in groupPairs.Where(p => !string.Equals(p.GroupUserUID, pair.GroupUserUID, StringComparison.Ordinal)))
|
||||||
{
|
{
|
||||||
await UserGroupLeave(groupUserPair, pairIdent, pair.GroupUserUID).ConfigureAwait(false);
|
await UserGroupLeave(pair, pairIdent, allUserPairs, pair.GroupUserUID).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -534,9 +535,10 @@ public partial class MareHub
|
|||||||
|
|
||||||
await Clients.User(dto.User.UID).Client_GroupDelete(new GroupDto(dto.Group)).ConfigureAwait(false);
|
await Clients.User(dto.User.UID).Client_GroupDelete(new GroupDto(dto.Group)).ConfigureAwait(false);
|
||||||
|
|
||||||
|
var userPairs = await GetAllPairInfo(dto.User.UID).ConfigureAwait(false);
|
||||||
foreach (var groupUserPair in groupPairs)
|
foreach (var groupUserPair in groupPairs)
|
||||||
{
|
{
|
||||||
await UserGroupLeave(groupUserPair, userIdent, dto.User.UID).ConfigureAwait(false);
|
await UserGroupLeave(groupUserPair, userIdent, userPairs, dto.User.UID).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user