Skip to content

Commit

Permalink
Merge ebdbd8f into 9c4a0ee
Browse files Browse the repository at this point in the history
  • Loading branch information
leha-bot committed Oct 18, 2018
2 parents 9c4a0ee + ebdbd8f commit 0bec48c
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 4 deletions.
12 changes: 11 additions & 1 deletion Telegram/SourceFiles/history/history_item.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -856,7 +856,17 @@ bool HistoryItem::canForward() const {

bool HistoryItem::canEdit(const QDateTime &cur) const {
auto messageToMyself = _history->peer->isSelf();
auto messageTooOld = messageToMyself ? false : (date.secsTo(cur) >= Global::EditTimeLimit());
auto canPinInMegagroup = [&] {
if (auto megagroup = _history->peer->asMegagroup()) {
return megagroup->canPinMessages();
}
return false;
}();

auto messageTooOld = (messageToMyself || canPinInMegagroup)
? false
: (date.secsTo(cur) >= Global::EditTimeLimit());

if (id < 0 || messageTooOld) {
return false;
}
Expand Down
11 changes: 11 additions & 0 deletions Telegram/SourceFiles/structs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -922,6 +922,17 @@ void ChannelData::setPinnedMessageId(MsgId messageId) {
}
}

bool ChannelData::canPinMessages() const {
if (isMegagroup()) {
return (adminRights().is_pin_messages())
|| amCreator();
}
// yes, you could pin messages in a channel if you have
// "edit messages" permission.
return (adminRights().is_edit_messages())
|| amCreator();
}

bool ChannelData::canNotEditLastAdmin(not_null<UserData *> user) const {
if (mgInfo) {
auto i = mgInfo->lastAdmins.constFind(user);
Expand Down
4 changes: 1 addition & 3 deletions Telegram/SourceFiles/structs.h
Original file line number Diff line number Diff line change
Expand Up @@ -909,9 +909,6 @@ class ChannelData : public PeerData {
bool canAddAdmins() const {
return adminRights().is_add_admins() || amCreator();
}
bool canPinMessages() const {
return adminRights().is_pin_messages() || amCreator();
}
bool canPublish() const {
return adminRights().is_post_messages() || amCreator();
}
Expand Down Expand Up @@ -1004,6 +1001,7 @@ class ChannelData : public PeerData {
setPinnedMessageId(0);
}

bool ChannelData::canPinMessages() const;
private:
bool canNotEditLastAdmin(not_null<UserData *> user) const;

Expand Down

0 comments on commit 0bec48c

Please sign in to comment.