Request WhoRead/Reacted only for group leader.

This commit is contained in:
John Preston 2023-04-23 18:41:33 +04:00
parent 4eefebc96c
commit 480c109b09

View file

@ -2128,21 +2128,30 @@ void HistoryInner::showContextMenu(QContextMenuEvent *e, bool showFromTouch) {
isUponSelected = hasSelected; isUponSelected = hasSelected;
} }
const auto hasWhoReactedItem = _dragStateItem const auto groupLeaderOrSelf = [](HistoryItem *item) -> HistoryItem* {
&& Api::WhoReactedExists(_dragStateItem, Api::WhoReactedList::All); if (!item) {
return nullptr;
} else if (const auto group = item->history()->owner().groups().find(item)) {
return group->items.front();
}
return item;
};
const auto whoReactedItem = groupLeaderOrSelf(_dragStateItem);
const auto hasWhoReactedItem = whoReactedItem
&& Api::WhoReactedExists(whoReactedItem, Api::WhoReactedList::All);
const auto clickedReaction = link const auto clickedReaction = link
? link->property( ? link->property(
kReactionsCountEmojiProperty).value<Data::ReactionId>() kReactionsCountEmojiProperty).value<Data::ReactionId>()
: Data::ReactionId(); : Data::ReactionId();
_whoReactedMenuLifetime.destroy(); _whoReactedMenuLifetime.destroy();
if (!clickedReaction.empty() if (!clickedReaction.empty()
&& _dragStateItem && whoReactedItem
&& Api::WhoReactedExists(_dragStateItem, Api::WhoReactedList::One)) { && Api::WhoReactedExists(whoReactedItem, Api::WhoReactedList::One)) {
HistoryView::ShowWhoReactedMenu( HistoryView::ShowWhoReactedMenu(
&_menu, &_menu,
e->globalPos(), e->globalPos(),
this, this,
_dragStateItem, whoReactedItem,
clickedReaction, clickedReaction,
_controller, _controller,
_whoReactedMenuLifetime); _whoReactedMenuLifetime);
@ -2152,14 +2161,6 @@ void HistoryInner::showContextMenu(QContextMenuEvent *e, bool showFromTouch) {
_menu = base::make_unique_q<Ui::PopupMenu>(this, st::popupMenuWithIcons); _menu = base::make_unique_q<Ui::PopupMenu>(this, st::popupMenuWithIcons);
const auto session = &this->session(); const auto session = &this->session();
const auto controller = _controller; const auto controller = _controller;
const auto groupLeaderOrSelf = [](HistoryItem *item) -> HistoryItem* {
if (!item) {
return nullptr;
} else if (const auto group = item->history()->owner().groups().find(item)) {
return group->items.front();
}
return item;
};
const auto addItemActions = [&]( const auto addItemActions = [&](
HistoryItem *item, HistoryItem *item,
HistoryItem *albumPartItem) { HistoryItem *albumPartItem) {
@ -2630,7 +2631,7 @@ void HistoryInner::showContextMenu(QContextMenuEvent *e, bool showFromTouch) {
HistoryView::AddWhoReactedAction( HistoryView::AddWhoReactedAction(
_menu, _menu,
this, this,
_dragStateItem, whoReactedItem,
_controller); _controller);
} }