Added date of admin promotional to EditAdminBox.

This commit is contained in:
23rd 2024-09-09 16:19:17 +03:00
parent 521f991167
commit c40ca70aa6
8 changed files with 50 additions and 6 deletions

View file

@ -4226,6 +4226,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_rights_edit_admin_rank_about" = "A title that members will see instead of '{title}'."; "lng_rights_edit_admin_rank_about" = "A title that members will see instead of '{title}'.";
"lng_rights_about_add_admins_yes" = "This admin will be able to add new admins with equal or fewer rights."; "lng_rights_about_add_admins_yes" = "This admin will be able to add new admins with equal or fewer rights.";
"lng_rights_about_add_admins_no" = "This admin will not be able to add new admins."; "lng_rights_about_add_admins_no" = "This admin will not be able to add new admins.";
"lng_rights_about_by" = "This admin promoted by {user} at {date}.";
"lng_rights_about_admin_cant_edit" = "You can't edit the rights of this admin."; "lng_rights_about_admin_cant_edit" = "You can't edit the rights of this admin.";
"lng_rights_about_restriction_cant_edit" = "You cannot change the restrictions for this user."; "lng_rights_about_restriction_cant_edit" = "You cannot change the restrictions for this user.";

View file

@ -217,7 +217,9 @@ void ShowAddParticipantsError(
channel, channel,
user, user,
ChatAdminRightsInfo(), ChatAdminRightsInfo(),
QString()); QString(),
0,
nullptr);
box->setSaveCallback(saveCallback); box->setSaveCallback(saveCallback);
*weak = box.data(); *weak = box.data();
show->showBox(std::move(box)); show->showBox(std::move(box));

View file

@ -170,11 +170,15 @@ void AddBotToGroupBoxController::requestExistingRights(
channel); channel);
_existingRights = participant.rights().flags; _existingRights = participant.rights().flags;
_existingRank = participant.rank(); _existingRank = participant.rank();
_promotedSince = participant.promotedSince();
_promotedBy = participant.by();
addBotToGroup(_existingRightsChannel); addBotToGroup(_existingRightsChannel);
}); });
}).fail([=] { }).fail([=] {
_existingRights = ChatAdminRights(); _existingRights = ChatAdminRights();
_existingRank = QString(); _existingRank = QString();
_promotedSince = 0;
_promotedBy = 0;
addBotToGroup(_existingRightsChannel); addBotToGroup(_existingRightsChannel);
}).send(); }).send();
} }
@ -191,6 +195,8 @@ void AddBotToGroupBoxController::addBotToGroup(not_null<PeerData*> chat) {
_existingRights = {}; _existingRights = {};
_existingRank = QString(); _existingRank = QString();
_existingRightsChannel = nullptr; _existingRightsChannel = nullptr;
_promotedSince = 0;
_promotedBy = 0;
_bot->session().api().request(_existingRightsRequestId).cancel(); _bot->session().api().request(_existingRightsRequestId).cancel();
} }
const auto requestedAddAdmin = (_scope == Scope::GroupAdmin) const auto requestedAddAdmin = (_scope == Scope::GroupAdmin)
@ -241,9 +247,12 @@ void AddBotToGroupBoxController::addBotToGroup(not_null<PeerData*> chat) {
bot, bot,
ChatAdminRightsInfo(rights), ChatAdminRightsInfo(rights),
_existingRank, _existingRank,
_promotedSince,
_promotedBy ? chat->owner().user(_promotedBy) : nullptr,
EditAdminBotFields{ EditAdminBotFields{
_token, _token,
_existingRights.value_or(ChatAdminRights()) }); _existingRights.value_or(ChatAdminRights()),
});
box->setSaveCallback(saveCallback); box->setSaveCallback(saveCallback);
controller->show(std::move(box)); controller->show(std::move(box));
} else { } else {

View file

@ -65,6 +65,8 @@ private:
mtpRequestId _existingRightsRequestId = 0; mtpRequestId _existingRightsRequestId = 0;
std::optional<ChatAdminRights> _existingRights; std::optional<ChatAdminRights> _existingRights;
QString _existingRank; QString _existingRank;
TimeId _promotedSince = 0;
UserId _promotedBy = 0;
rpl::event_stream<not_null<PeerData*>> _groups; rpl::event_stream<not_null<PeerData*>> _groups;
rpl::event_stream<not_null<PeerData*>> _channels; rpl::event_stream<not_null<PeerData*>> _channels;

View file

@ -1276,7 +1276,9 @@ void AddSpecialBoxController::showAdmin(
_peer, _peer,
user, user,
currentRights, currentRights,
_additional.adminRank(user)); _additional.adminRank(user),
_additional.adminPromotedSince(user),
_additional.adminPromotedBy(user));
const auto show = delegate()->peerListUiShow(); const auto show = delegate()->peerListUiShow();
if (_additional.canAddOrEditAdmin(user)) { if (_additional.canAddOrEditAdmin(user)) {
const auto done = crl::guard(this, [=]( const auto done = crl::guard(this, [=](

View file

@ -206,6 +206,8 @@ EditAdminBox::EditAdminBox(
not_null<UserData*> user, not_null<UserData*> user,
ChatAdminRightsInfo rights, ChatAdminRightsInfo rights,
const QString &rank, const QString &rank,
TimeId promotedSince,
UserData *by,
std::optional<EditAdminBotFields> addingBot) std::optional<EditAdminBotFields> addingBot)
: EditParticipantBox( : EditParticipantBox(
nullptr, nullptr,
@ -214,6 +216,8 @@ EditAdminBox::EditAdminBox(
(rights.flags != 0)) (rights.flags != 0))
, _oldRights(rights) , _oldRights(rights)
, _oldRank(rank) , _oldRank(rank)
, _promotedSince(promotedSince)
, _by(by)
, _addingBot(std::move(addingBot)) { , _addingBot(std::move(addingBot)) {
} }
@ -288,8 +292,26 @@ void EditAdminBox::prepare() {
object_ptr<Ui::VerticalLayout>(this))); object_ptr<Ui::VerticalLayout>(this)));
const auto inner = _adminControlsWrap->entity(); const auto inner = _adminControlsWrap->entity();
Ui::AddDivider(inner); if (_promotedSince) {
Ui::AddSkip(inner); const auto parsed = base::unixtime::parse(_promotedSince);
const auto label = Ui::AddDividerText(
inner,
tr::lng_rights_about_by(
lt_user,
rpl::single(_by
? Ui::Text::Link(_by->name(), 1)
: TextWithEntities(QString::fromUtf8("\U0001F47B"))),
lt_date,
rpl::single(TextWithEntities{ langDateTimeFull(parsed) }),
Ui::Text::WithEntities));
if (_by) {
label->setLink(1, _by->createOpenLink());
}
Ui::AddSkip(inner);
} else {
Ui::AddDivider(inner);
Ui::AddSkip(inner);
}
const auto chat = peer()->asChat(); const auto chat = peer()->asChat();
const auto channel = peer()->asChannel(); const auto channel = peer()->asChannel();

View file

@ -79,6 +79,8 @@ public:
not_null<UserData*> user, not_null<UserData*> user,
ChatAdminRightsInfo rights, ChatAdminRightsInfo rights,
const QString &rank, const QString &rank,
TimeId promotedSince,
UserData *by,
std::optional<EditAdminBotFields> addingBot = {}); std::optional<EditAdminBotFields> addingBot = {});
void setSaveCallback( void setSaveCallback(
@ -130,6 +132,8 @@ private:
mtpRequestId _transferRequestId = 0; mtpRequestId _transferRequestId = 0;
Fn<void()> _save, _finishSave; Fn<void()> _save, _finishSave;
TimeId _promotedSince = 0;
UserData *_by = nullptr;
std::optional<EditAdminBotFields> _addingBot; std::optional<EditAdminBotFields> _addingBot;
}; };

View file

@ -1748,7 +1748,9 @@ void ParticipantsBoxController::showAdmin(not_null<UserData*> user) {
_peer, _peer,
user, user,
currentRights, currentRights,
_additional.adminRank(user)); _additional.adminRank(user),
_additional.adminPromotedSince(user),
_additional.adminPromotedBy(user));
if (_additional.canAddOrEditAdmin(user)) { if (_additional.canAddOrEditAdmin(user)) {
const auto done = crl::guard(this, [=]( const auto done = crl::guard(this, [=](
ChatAdminRightsInfo newRights, ChatAdminRightsInfo newRights,