diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index e3c9635e76..62fe5bf50f 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -592,7 +592,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_blocked_list_title" = "Blocked users"; "lng_blocked_list_unknown_phone" = "unknown phone number"; "lng_blocked_list_unblock" = "Unblock"; -"lng_blocked_list_restart" = "Restart"; "lng_blocked_list_add" = "Block user"; "lng_blocked_list_add_title" = "Select user to block"; "lng_blocked_list_already_blocked" = "blocked already"; diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp index 576fe17810..50e8281312 100644 --- a/Telegram/SourceFiles/apiwrap.cpp +++ b/Telegram/SourceFiles/apiwrap.cpp @@ -2224,38 +2224,40 @@ void ApiWrap::blockUser(not_null user) { } } -void ApiWrap::unblockUser(not_null user) { +void ApiWrap::unblockUser(not_null user, Fn onDone) { if (!user->isBlocked()) { Notify::peerUpdatedDelayed( user, Notify::PeerUpdate::Flag::UserIsBlocked); - } else if (_blockRequests.find(user) == end(_blockRequests)) { - const auto requestId = request(MTPcontacts_Unblock( - user->inputUser - )).done([=](const MTPBool &result) { - _blockRequests.erase(user); - user->setIsBlocked(false); - if (_blockedUsersSlice) { - auto &list = _blockedUsersSlice->list; - for (auto i = list.begin(); i != list.end(); ++i) { - if (i->user == user) { - list.erase(i); - break; - } - } - if (_blockedUsersSlice->total > list.size()) { - --_blockedUsersSlice->total; - } - _blockedUsersChanges.fire_copy(*_blockedUsersSlice); - } - if (user->isBot() && !user->isSupport()) { - sendBotStart(user); - } - }).fail([=](const RPCError &error) { - _blockRequests.erase(user); - }).send(); - _blockRequests.emplace(user, requestId); + return; + } else if (_blockRequests.find(user) != end(_blockRequests)) { + return; } + const auto requestId = request(MTPcontacts_Unblock( + user->inputUser + )).done([=](const MTPBool &result) { + _blockRequests.erase(user); + user->setIsBlocked(false); + if (_blockedUsersSlice) { + auto &list = _blockedUsersSlice->list; + for (auto i = list.begin(); i != list.end(); ++i) { + if (i->user == user) { + list.erase(i); + break; + } + } + if (_blockedUsersSlice->total > list.size()) { + --_blockedUsersSlice->total; + } + _blockedUsersChanges.fire_copy(*_blockedUsersSlice); + } + if (onDone) { + onDone(); + } + }).fail([=](const RPCError &error) { + _blockRequests.erase(user); + }).send(); + _blockRequests.emplace(user, requestId); } void ApiWrap::exportInviteLink(not_null peer) { diff --git a/Telegram/SourceFiles/apiwrap.h b/Telegram/SourceFiles/apiwrap.h index 61d323aec8..9c6089517c 100644 --- a/Telegram/SourceFiles/apiwrap.h +++ b/Telegram/SourceFiles/apiwrap.h @@ -249,7 +249,7 @@ public: void leaveChannel(not_null channel); void blockUser(not_null user); - void unblockUser(not_null user); + void unblockUser(not_null user, Fn onDone = nullptr); void exportInviteLink(not_null peer); void requestNotifySettings(const MTPInputNotifyPeer &peer); diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 5aacf53528..7cda840c97 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -2831,11 +2831,11 @@ void HistoryWidget::send(Qt::KeyboardModifiers modifiers) { } void HistoryWidget::unblockUser() { - if (!_peer || !_peer->isUser()) { + if (const auto user = _peer ? _peer->asUser() : nullptr) { + Window::PeerMenuUnblockUserWithBotRestart(user); + } else { updateControlsVisibility(); - return; } - session().api().unblockUser(_peer->asUser()); } void HistoryWidget::sendBotStartCommand() { diff --git a/Telegram/SourceFiles/info/profile/info_profile_actions.cpp b/Telegram/SourceFiles/info/profile/info_profile_actions.cpp index 948fe1660d..51cf0df90f 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_actions.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_actions.cpp @@ -615,14 +615,12 @@ void ActionsFiller::addBlockAction(not_null user) { }); auto callback = [=] { if (user->isBlocked()) { - user->session().api().unblockUser(user); + Window::PeerMenuUnblockUserWithBotRestart(user); if (user->botInfo) { Ui::showPeerHistory(user, ShowAtUnreadMsgId); } - } else if (user->isBot()) { - user->session().api().blockUser(user); } else { - window->show(Box(Window::PeerMenuBlockUserBox, window, user)); + user->session().api().blockUser(user); } }; AddActionButton( diff --git a/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp b/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp index 9303612e2b..9775cecf3c 100644 --- a/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp +++ b/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp @@ -286,9 +286,7 @@ bool BlockedBoxController::prependRow(not_null user) { std::unique_ptr BlockedBoxController::createRow( not_null user) const { auto row = std::make_unique(user); - row->setActionLink((user->isBot() && !user->isSupport()) - ? tr::lng_blocked_list_restart(tr::now) - : tr::lng_blocked_list_unblock(tr::now)); + row->setActionLink(tr::lng_blocked_list_unblock(tr::now)); const auto status = [&] { if (!user->phone().isEmpty()) { return App::formatPhone(user->phone()); diff --git a/Telegram/SourceFiles/window/window_peer_menu.cpp b/Telegram/SourceFiles/window/window_peer_menu.cpp index 4e1250c74d..5403114548 100644 --- a/Telegram/SourceFiles/window/window_peer_menu.cpp +++ b/Telegram/SourceFiles/window/window_peer_menu.cpp @@ -344,7 +344,7 @@ void Filler::addBlockUser(not_null user) { }; const auto blockAction = _addAction(blockText(user), [=] { if (user->isBlocked()) { - user->session().api().unblockUser(user); + PeerMenuUnblockUserWithBotRestart(user); } else if (user->isBot()) { user->session().api().blockUser(user); } else { @@ -778,6 +778,14 @@ void PeerMenuBlockUserBox( }); } +void PeerMenuUnblockUserWithBotRestart(not_null user) { + user->session().api().unblockUser(user, [=] { + if (user->isBot() && !user->isSupport()) { + user->session().api().sendBotStart(user); + } + }); +} + QPointer ShowForwardMessagesBox( MessageIdsList &&items, FnMut &&successCallback) { diff --git a/Telegram/SourceFiles/window/window_peer_menu.h b/Telegram/SourceFiles/window/window_peer_menu.h index 36712d6da6..ab79537c4c 100644 --- a/Telegram/SourceFiles/window/window_peer_menu.h +++ b/Telegram/SourceFiles/window/window_peer_menu.h @@ -57,6 +57,7 @@ void PeerMenuBlockUserBox( not_null box, not_null window, not_null user); +void PeerMenuUnblockUserWithBotRestart(not_null user); void ToggleHistoryArchived(not_null history, bool archived); Fn ClearHistoryHandler(not_null peer);