mirror of
https://github.com/wiz0u/WTelegramClient.git
synced 2025-12-06 06:52:01 +01:00
CollectUsersChats update user/chat fields from min info
This commit is contained in:
parent
d00725e234
commit
659906ce01
|
|
@ -1079,6 +1079,7 @@ namespace WTelegram
|
|||
self.phone == string.Concat((phone_number = Config("phone_number")).Where(char.IsDigit)))
|
||||
{
|
||||
_session.UserId = _dcSession.UserId = self.id;
|
||||
RaiseUpdate(self);
|
||||
return User = self;
|
||||
}
|
||||
var mismatch = $"Current logged user {self.id} mismatched user_id or phone_number";
|
||||
|
|
@ -1242,11 +1243,12 @@ namespace WTelegram
|
|||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public User LoginAlreadyDone(Auth_AuthorizationBase authorization)
|
||||
{
|
||||
if (authorization is not Auth_Authorization { user: User user })
|
||||
if (authorization is not Auth_Authorization { user: User self })
|
||||
throw new WTException("Failed to get Authorization: " + authorization.GetType().Name);
|
||||
_session.UserId = _dcSession.UserId = user.id;
|
||||
_session.UserId = _dcSession.UserId = self.id;
|
||||
lock (_session) _session.Save();
|
||||
return User = user;
|
||||
RaiseUpdate(self);
|
||||
return User = self;
|
||||
}
|
||||
|
||||
private MsgsAck CheckMsgsToAck()
|
||||
|
|
|
|||
|
|
@ -24,13 +24,51 @@ namespace TL
|
|||
if (user != null)
|
||||
if (!user.flags.HasFlag(User.Flags.min) || !_users.TryGetValue(user.id, out var prevUser) || prevUser.flags.HasFlag(User.Flags.min))
|
||||
_users[user.id] = user;
|
||||
else
|
||||
{
|
||||
const User.Flags good_min_flags = (User.Flags)0x55A2201E;
|
||||
const User.Flags2 good_min_flags2 = (User.Flags2)0x701;
|
||||
prevUser.flags = (prevUser.flags & ~good_min_flags) | (user.flags & good_min_flags);
|
||||
prevUser.flags2 = (prevUser.flags2 & ~good_min_flags2) | (user.flags2 & good_min_flags2);
|
||||
prevUser.first_name = user.first_name;
|
||||
prevUser.last_name = user.last_name;
|
||||
prevUser.username = user.username;
|
||||
prevUser.phone = user.phone;
|
||||
if (prevUser.flags.HasFlag(User.Flags.apply_min_photo) && user.phone != null)
|
||||
{
|
||||
prevUser.photo = user.photo;
|
||||
prevUser.flags |= User.Flags.has_photo;
|
||||
}
|
||||
prevUser.emoji_status = user.emoji_status;
|
||||
prevUser.usernames = user.usernames;
|
||||
prevUser.color = user.color;
|
||||
prevUser.profile_color = user.profile_color;
|
||||
_users[user.id] = prevUser;
|
||||
}
|
||||
if (_chats != null)
|
||||
lock (_chats)
|
||||
foreach (var kvp in chats)
|
||||
if (kvp.Value is not Channel 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))
|
||||
else if (!channel.flags.HasFlag(Channel.Flags.min) || !_chats.TryGetValue(kvp.Key, out var prevChat) || prevChat is not Channel prevChannel || prevChannel.flags.HasFlag(Channel.Flags.min))
|
||||
_chats[kvp.Key] = channel;
|
||||
else
|
||||
{
|
||||
const Channel.Flags good_min_flags = (Channel.Flags)0x7FDC09E0;
|
||||
const Channel.Flags2 good_min_flags2 = (Channel.Flags2)0x781;
|
||||
prevChannel.flags = (prevChannel.flags & ~good_min_flags) | (channel.flags & good_min_flags);
|
||||
prevChannel.flags2 = (prevChannel.flags2 & ~good_min_flags2) | (channel.flags2 & good_min_flags2);
|
||||
prevChannel.title = channel.title;
|
||||
prevChannel.username = channel.username;
|
||||
prevChannel.photo = channel.photo;
|
||||
prevChannel.default_banned_rights = channel.default_banned_rights;
|
||||
prevChannel.usernames = channel.usernames;
|
||||
prevChannel.color = channel.color;
|
||||
prevChannel.profile_color = channel.profile_color;
|
||||
prevChannel.emoji_status = channel.emoji_status;
|
||||
prevChannel.level = channel.level;
|
||||
_chats[kvp.Key] = prevChannel;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue