aboutsummaryrefslogtreecommitdiffhomepage
path: root/td/telegram/DialogActionBar.cpp
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2021-11-23 13:06:38 +0300
committerlevlam <levlam@telegram.org>2021-11-23 13:06:38 +0300
commit2eb5f1195c693fe6acbe56e3d570a8c39c9173c3 (patch)
tree1287bd15b0a5d99af6deae406d9d5534723ec0f1 /td/telegram/DialogActionBar.cpp
parent11b13021d23be7f0889319bda503253ed067584c (diff)
Add chatActionBarJoinRequest.
Diffstat (limited to 'td/telegram/DialogActionBar.cpp')
-rw-r--r--td/telegram/DialogActionBar.cpp85
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