diff options
| author | levlam <levlam@telegram.org> | 2021-11-23 13:06:38 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2021-11-23 13:06:38 +0300 |
| commit | 2eb5f1195c693fe6acbe56e3d570a8c39c9173c3 (patch) | |
| tree | 1287bd15b0a5d99af6deae406d9d5534723ec0f1 /td/telegram/DialogActionBar.cpp | |
| parent | 11b13021d23be7f0889319bda503253ed067584c (diff) | |
Add chatActionBarJoinRequest.
Diffstat (limited to 'td/telegram/DialogActionBar.cpp')
| -rw-r--r-- | td/telegram/DialogActionBar.cpp | 85 |
1 files changed, 66 insertions, 19 deletions
diff --git a/td/telegram/DialogActionBar.cpp b/td/telegram/DialogActionBar.cpp index 0fdab829c..208d2e397 100644 --- a/td/telegram/DialogActionBar.cpp +++ b/td/telegram/DialogActionBar.cpp @@ -13,9 +13,11 @@ namespace td { unique_ptr<DialogActionBar> DialogActionBar::create(bool can_report_spam, bool can_add_contact, bool can_block_user, bool can_share_phone_number, bool can_report_location, - bool can_unarchive, int32 distance, bool can_invite_members) { + bool can_unarchive, int32 distance, bool can_invite_members, + string join_request_dialog_title, bool is_join_request_broadcast, + int32 join_request_date) { if (!can_report_spam && !can_add_contact && !can_block_user && !can_share_phone_number && !can_report_location && - !can_invite_members) { + !can_invite_members && join_request_dialog_title.empty()) { return nullptr; } @@ -28,29 +30,59 @@ unique_ptr<DialogActionBar> DialogActionBar::create(bool can_report_spam, bool c action_bar->can_unarchive_ = can_unarchive; action_bar->distance_ = distance >= 0 ? distance : -1; action_bar->can_invite_members_ = can_invite_members; + action_bar->join_request_dialog_title_ = std::move(join_request_dialog_title); + action_bar->is_join_request_broadcast_ = is_join_request_broadcast; + action_bar->join_request_date_ = join_request_date; return action_bar; } bool DialogActionBar::is_empty() const { return !can_report_spam_ && !can_add_contact_ && !can_block_user_ && !can_share_phone_number_ && - !can_report_location_ && !can_invite_members_; + !can_report_location_ && !can_invite_members_ && join_request_dialog_title_.empty(); } void DialogActionBar::fix(Td *td, DialogId dialog_id, bool is_dialog_blocked, FolderId folder_id) { auto dialog_type = dialog_id.get_type(); if (distance_ >= 0 && dialog_type != DialogType::User) { - LOG(ERROR) << "Receive distance_ " << distance_ << " to " << dialog_id; + LOG(ERROR) << "Receive distance " << distance_ << " to " << dialog_id; distance_ = -1; } + if (!join_request_dialog_title_.empty()) { + if (dialog_type != DialogType::User || join_request_date_ <= 0) { + LOG(ERROR) << "Receive join_request_date = " << join_request_date_ << " in " << dialog_id; + join_request_dialog_title_.clear(); + is_join_request_broadcast_ = false; + join_request_date_ = 0; + } else if (can_report_location_ || can_report_spam_ || can_add_contact_ || can_block_user_ || + can_share_phone_number_ || can_unarchive_ || can_invite_members_) { + LOG(ERROR) << "Receive action bar " << can_report_location_ << '/' << can_report_spam_ << '/' << can_add_contact_ + << '/' << can_block_user_ << '/' << can_share_phone_number_ << '/' << can_report_location_ << '/' + << can_unarchive_ << '/' << can_invite_members_; + can_report_location_ = false; + can_report_spam_ = false; + can_add_contact_ = false; + can_block_user_ = false; + can_share_phone_number_ = false; + can_unarchive_ = false; + can_invite_members_ = false; + distance_ = -1; + } + } + if (join_request_dialog_title_.empty() && (is_join_request_broadcast_ || join_request_date_ != 0)) { + LOG(ERROR) << "Receive join request date = " << join_request_date_ << " and " << is_join_request_broadcast_ + << " in " << dialog_id; + is_join_request_broadcast_ = false; + join_request_date_ = 0; + } if (can_report_location_) { if (dialog_type != DialogType::Channel) { - LOG(ERROR) << "Receive can_report_location_ in " << dialog_id; + LOG(ERROR) << "Receive can_report_location in " << dialog_id; can_report_location_ = false; } else if (can_report_spam_ || can_add_contact_ || can_block_user_ || can_share_phone_number_ || can_unarchive_ || can_invite_members_) { - LOG(ERROR) << "Receive action bar " << can_report_spam_ << "/" << can_add_contact_ << "/" << can_block_user_ - << "/" << can_share_phone_number_ << "/" << can_report_location_ << "/" << can_unarchive_ << "/" + LOG(ERROR) << "Receive action bar " << can_report_spam_ << '/' << can_add_contact_ << '/' << can_block_user_ + << '/' << can_share_phone_number_ << '/' << can_report_location_ << '/' << can_unarchive_ << '/' << can_invite_members_; can_report_spam_ = false; can_add_contact_ = false; @@ -65,11 +97,11 @@ void DialogActionBar::fix(Td *td, DialogId dialog_id, bool is_dialog_blocked, Fo if (dialog_type != DialogType::Chat && (dialog_type != DialogType::Channel || td->contacts_manager_->get_channel_type(dialog_id.get_channel_id()) == ContactsManager::ChannelType::Broadcast)) { - LOG(ERROR) << "Receive can_invite_members_ in " << dialog_id; + LOG(ERROR) << "Receive can_invite_members in " << dialog_id; can_invite_members_ = false; } else if (can_report_spam_ || can_add_contact_ || can_block_user_ || can_share_phone_number_ || can_unarchive_) { - LOG(ERROR) << "Receive action bar " << can_report_spam_ << "/" << can_add_contact_ << "/" << can_block_user_ - << "/" << can_share_phone_number_ << "/" << can_unarchive_ << "/" << can_invite_members_; + LOG(ERROR) << "Receive action bar " << can_report_spam_ << '/' << can_add_contact_ << '/' << can_block_user_ + << '/' << can_share_phone_number_ << '/' << can_unarchive_ << '/' << can_invite_members_; can_report_spam_ = false; can_add_contact_ = false; can_block_user_ = false; @@ -102,11 +134,11 @@ void DialogActionBar::fix(Td *td, DialogId dialog_id, bool is_dialog_blocked, Fo CHECK(!can_report_location_); CHECK(!can_invite_members_); if (dialog_type != DialogType::User) { - LOG(ERROR) << "Receive can_share_phone_number_ in " << dialog_id; + LOG(ERROR) << "Receive can_share_phone_number in " << dialog_id; can_share_phone_number_ = false; } else if (can_report_spam_ || can_add_contact_ || can_block_user_ || can_unarchive_ || distance_ >= 0) { - LOG(ERROR) << "Receive action bar " << can_report_spam_ << "/" << can_add_contact_ << "/" << can_block_user_ - << "/" << can_share_phone_number_ << "/" << can_unarchive_ << "/" << distance_; + LOG(ERROR) << "Receive action bar " << can_report_spam_ << '/' << can_add_contact_ << '/' << can_block_user_ + << '/' << can_share_phone_number_ << '/' << can_unarchive_ << '/' << distance_; can_report_spam_ = false; can_add_contact_ = false; can_block_user_ = false; @@ -118,10 +150,10 @@ void DialogActionBar::fix(Td *td, DialogId dialog_id, bool is_dialog_blocked, Fo CHECK(!can_invite_members_); CHECK(!can_share_phone_number_); if (dialog_type != DialogType::User) { - LOG(ERROR) << "Receive can_block_user_ in " << dialog_id; + LOG(ERROR) << "Receive can_block_user in " << dialog_id; can_block_user_ = false; } else if (!can_report_spam_ || !can_add_contact_) { - LOG(ERROR) << "Receive action bar " << can_report_spam_ << "/" << can_add_contact_ << "/" << can_block_user_; + LOG(ERROR) << "Receive action bar " << can_report_spam_ << '/' << can_add_contact_ << '/' << can_block_user_; can_report_spam_ = true; can_add_contact_ = true; } @@ -131,10 +163,10 @@ void DialogActionBar::fix(Td *td, DialogId dialog_id, bool is_dialog_blocked, Fo CHECK(!can_invite_members_); CHECK(!can_share_phone_number_); if (dialog_type != DialogType::User) { - LOG(ERROR) << "Receive can_add_contact_ in " << dialog_id; + LOG(ERROR) << "Receive can_add_contact in " << dialog_id; can_add_contact_ = false; } else if (can_report_spam_ != can_block_user_) { - LOG(ERROR) << "Receive action bar " << can_report_spam_ << "/" << can_add_contact_ << "/" << can_block_user_; + LOG(ERROR) << "Receive action bar " << can_report_spam_ << '/' << can_add_contact_ << '/' << can_block_user_; can_report_spam_ = false; can_block_user_ = false; can_unarchive_ = false; @@ -150,6 +182,13 @@ void DialogActionBar::fix(Td *td, DialogId dialog_id, bool is_dialog_blocked, Fo td_api::object_ptr<td_api::ChatActionBar> DialogActionBar::get_chat_action_bar_object(DialogType dialog_type, bool hide_unarchive) const { + if (!join_request_dialog_title_.empty()) { + CHECK(dialog_type == DialogType::User); + CHECK(!can_report_location_ && !can_share_phone_number_ && !can_block_user_ && !can_add_contact_ && + !can_report_spam_ && !can_invite_members_); + return td_api::make_object<td_api::chatActionBarJoinRequest>(join_request_dialog_title_, is_join_request_broadcast_, + join_request_date_); + } if (can_report_location_) { CHECK(dialog_type == DialogType::Channel); CHECK(!can_share_phone_number_ && !can_block_user_ && !can_add_contact_ && !can_report_spam_ && @@ -213,10 +252,14 @@ bool DialogActionBar::on_user_contact_added() { } bool DialogActionBar::on_user_deleted() { - if (!can_share_phone_number_ && !can_block_user_ && !can_add_contact_ && distance_ < 0) { + if (join_request_dialog_title_.empty() && !can_share_phone_number_ && !can_block_user_ && !can_add_contact_ && + distance_ < 0) { return false; } + join_request_dialog_title_.clear(); + is_join_request_broadcast_ = false; + join_request_date_ = 0; can_share_phone_number_ = false; can_block_user_ = false; can_add_contact_ = false; @@ -243,7 +286,11 @@ bool operator==(const unique_ptr<DialogActionBar> &lhs, const unique_ptr<DialogA return lhs->can_report_spam_ == rhs->can_report_spam_ && lhs->can_add_contact_ == rhs->can_add_contact_ && lhs->can_block_user_ == rhs->can_block_user_ && lhs->can_share_phone_number_ == rhs->can_share_phone_number_ && lhs->can_report_location_ == rhs->can_report_location_ && lhs->can_unarchive_ == rhs->can_unarchive_ && - lhs->distance_ == rhs->distance_ && lhs->can_invite_members_ == rhs->can_invite_members_; + lhs->distance_ == rhs->distance_ && lhs->can_invite_members_ == rhs->can_invite_members_ && + lhs->join_request_dialog_title_ == rhs->join_request_dialog_title_ && + lhs->is_join_request_broadcast_ == lhs->is_join_request_broadcast_ && + lhs->join_request_date_ == rhs->join_request_date_; + ; } } // namespace td |
