CollectUsersChats allows null dictionaries

This commit is contained in:
Wizou 2023-07-08 01:35:15 +02:00
parent 8a9f886b62
commit 2b65e8f1ed

View file

@ -17,17 +17,19 @@ namespace TL
internal IDictionary<long, ChatBase> _chats; internal IDictionary<long, ChatBase> _chats;
protected internal override IPeerInfo UserOrChat(Dictionary<long, User> users, Dictionary<long, ChatBase> chats) protected internal override IPeerInfo UserOrChat(Dictionary<long, User> users, Dictionary<long, ChatBase> chats)
{ {
lock (_users) if (_users != null)
foreach (var user in users.Values) lock (_users)
if (user != null) foreach (var user in users.Values)
if (!user.flags.HasFlag(User.Flags.min) || !_users.TryGetValue(user.id, out var prevUser) || prevUser.flags.HasFlag(User.Flags.min)) if (user != null)
_users[user.id] = user; if (!user.flags.HasFlag(User.Flags.min) || !_users.TryGetValue(user.id, out var prevUser) || prevUser.flags.HasFlag(User.Flags.min))
lock (_chats) _users[user.id] = user;
foreach (var kvp in chats) if (_chats != null)
if (kvp.Value is not Channel channel) lock (_chats)
_chats[kvp.Key] = kvp.Value; foreach (var kvp in chats)
else if (!channel.flags.HasFlag(Channel.Flags.min) || !_chats.TryGetValue(channel.id, out var prevChat) || prevChat is not Channel prevChannel || prevChannel.flags.HasFlag(Channel.Flags.min)) if (kvp.Value is not Channel channel)
_chats[kvp.Key] = channel; _chats[kvp.Key] = kvp.Value;
else if (!channel.flags.HasFlag(Channel.Flags.min) || !_chats.TryGetValue(channel.id, out var prevChat) || prevChat is not Channel prevChannel || prevChannel.flags.HasFlag(Channel.Flags.min))
_chats[kvp.Key] = channel;
return null; return null;
} }
} }