void MembersBox::Inner::mouseReleaseEvent(QMouseEvent *e) { auto pressed = _pressed; auto kickPressed = _kickPressed; setPressed(-1); if (e->button() == Qt::LeftButton) { if (pressed == _selected && kickPressed == _kickSelected) { if (kickPressed >= 0) { if (!_kickRequestId) { _kickConfirm = _rows.at(_kickSelected); if (_kickBox) _kickBox->deleteLater(); auto text = (_filter == MembersFilter::Recent ? (_channel->isMegagroup() ? lng_profile_sure_kick : lng_profile_sure_kick_channel) : lng_profile_sure_kick_admin)(lt_user, _kickConfirm->firstName); _kickBox = Ui::show(Box<ConfirmBox>(text, base::lambda_guarded(this, [this] { if (_filter == MembersFilter::Recent) { _kickRequestId = MTP::send(MTPchannels_KickFromChannel(_channel->inputChannel, _kickConfirm->inputUser, MTP_bool(true)), rpcDone(&Inner::kickDone), rpcFail(&Inner::kickFail)); } else { _kickRequestId = MTP::send(MTPchannels_EditAdmin(_channel->inputChannel, _kickConfirm->inputUser, MTP_channelRoleEmpty()), rpcDone(&Inner::kickAdminDone), rpcFail(&Inner::kickFail)); } })), KeepOtherLayers); } } else if (pressed >= 0) { chooseParticipant(); } } } }
void ApiWrap::kickParticipant(PeerData *peer, UserData *user) { KickRequest req(peer, user); if (_kickRequests.contains(req)) return; if (peer->isChannel()) { _kickRequests.insert(req, MTP::send(MTPchannels_KickFromChannel(peer->asChannel()->inputChannel, user->inputUser, MTP_bool(true)), rpcDone(&ApiWrap::kickParticipantDone, req), rpcFail(&ApiWrap::kickParticipantFail, req))); } }
void RichDeleteMessageBox::onDelete() { if (_banUser.checked()) { MTP::send(MTPchannels_KickFromChannel(_channel->inputChannel, _from->inputUser, MTP_boolTrue()), App::main()->rpcDone(&MainWidget::sentUpdatesReceived)); } if (_reportSpam.checked()) { MTP::send(MTPchannels_ReportSpam(_channel->inputChannel, _from->inputUser, MTP_vector<MTPint>(1, MTP_int(_msgId)))); } if (_deleteAll.checked()) { App::main()->deleteAllFromUser(_channel, _from); } if (HistoryItem *item = App::histItemById(_channel ? peerToChannel(_channel->id) : 0, _msgId)) { bool wasLast = (item->history()->lastMsg == item); item->destroy(); if (_msgId > 0) { App::main()->deleteMessages(_channel, QVector<MTPint>(1, MTP_int(_msgId))); } else if (wasLast) { App::main()->checkPeerHistory(_channel); } } Ui::hideLayer(); }