Keep in chat list empty joined basic groups.

This commit is contained in:
levlam 2022-04-08 15:35:21 +03:00
parent 1302aa2520
commit 161d34fc15
3 changed files with 40 additions and 16 deletions

View File

@ -14646,6 +14646,14 @@ void ContactsManager::send_get_chat_full_query(ChatId chat_id, Promise<Unit> &&p
get_chat_full_queries_.add_query(DialogId(chat_id).get(), std::move(send_query), std::move(promise)); get_chat_full_queries_.add_query(DialogId(chat_id).get(), std::move(send_query), std::move(promise));
} }
int32 ContactsManager::get_chat_date(ChatId chat_id) const {
auto c = get_chat(chat_id);
if (c == nullptr) {
return 0;
}
return c->date;
}
int32 ContactsManager::get_chat_participant_count(ChatId chat_id) const { int32 ContactsManager::get_chat_participant_count(ChatId chat_id) const {
auto c = get_chat(chat_id); auto c = get_chat(chat_id);
if (c == nullptr) { if (c == nullptr) {

View File

@ -496,6 +496,7 @@ class ContactsManager final : public Actor {
FileSourceId get_chat_full_file_source_id(ChatId chat_id); FileSourceId get_chat_full_file_source_id(ChatId chat_id);
void reload_chat_full(ChatId chat_id, Promise<Unit> &&promise); void reload_chat_full(ChatId chat_id, Promise<Unit> &&promise);
int32 get_chat_date(ChatId chat_id) const;
int32 get_chat_participant_count(ChatId chat_id) const; int32 get_chat_participant_count(ChatId chat_id) const;
bool get_chat_is_active(ChatId chat_id) const; bool get_chat_is_active(ChatId chat_id) const;
ChannelId get_chat_migrated_to_channel_id(ChatId chat_id) const; ChannelId get_chat_migrated_to_channel_id(ChatId chat_id) const;

View File

@ -37139,24 +37139,39 @@ void MessagesManager::update_dialog_pos(Dialog *d, const char *source, bool need
new_order = draft_order; new_order = draft_order;
} }
} }
auto dialog_type = d->dialog_id.get_type(); switch (d->dialog_id.get_type()) {
if (dialog_type == DialogType::Channel) { case DialogType::Chat: {
auto date = td_->contacts_manager_->get_channel_date(d->dialog_id.get_channel_id()); auto chat_id = d->dialog_id.get_chat_id();
LOG(INFO) << "Join of channel at " << date << " found"; auto date = td_->contacts_manager_->get_chat_date(chat_id);
int64 join_order = get_dialog_order(MessageId(), date); LOG(INFO) << "Creation at " << date << " found";
if (join_order > new_order) { int64 join_order = get_dialog_order(MessageId(), date);
new_order = join_order; if (join_order > new_order && td_->contacts_manager_->get_chat_status(chat_id).is_member()) {
} new_order = join_order;
}
if (dialog_type == DialogType::SecretChat) {
auto date = td_->contacts_manager_->get_secret_chat_date(d->dialog_id.get_secret_chat_id());
if (date != 0 && !is_deleted_secret_chat(d)) {
LOG(INFO) << "Creation of secret chat at " << date << " found";
int64 creation_order = get_dialog_order(MessageId(), date);
if (creation_order > new_order) {
new_order = creation_order;
} }
break;
} }
case DialogType::Channel: {
auto date = td_->contacts_manager_->get_channel_date(d->dialog_id.get_channel_id());
LOG(INFO) << "Join at " << date << " found";
int64 join_order = get_dialog_order(MessageId(), date);
if (join_order > new_order) {
new_order = join_order;
}
break;
}
case DialogType::SecretChat: {
auto date = td_->contacts_manager_->get_secret_chat_date(d->dialog_id.get_secret_chat_id());
if (date != 0 && !is_deleted_secret_chat(d)) {
LOG(INFO) << "Creation at " << date << " found";
int64 creation_order = get_dialog_order(MessageId(), date);
if (creation_order > new_order) {
new_order = creation_order;
}
}
break;
}
default:
break;
} }
if (new_order == DEFAULT_ORDER && !d->is_empty) { if (new_order == DEFAULT_ORDER && !d->is_empty) {
LOG(INFO) << "There are no known messages in the chat, just leave it where it is"; LOG(INFO) << "There are no known messages in the chat, just leave it where it is";