mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Update API scheme on layer 136.
This commit is contained in:
parent
6f2bb43505
commit
118072db77
5 changed files with 42 additions and 10 deletions
|
@ -921,6 +921,7 @@ channelAdminLogEventActionChangeHistoryTTL#6e941a38 prev_value:int new_value:int
|
||||||
channelAdminLogEventActionParticipantJoinByRequest#afb6144a invite:ExportedChatInvite approved_by:long = ChannelAdminLogEventAction;
|
channelAdminLogEventActionParticipantJoinByRequest#afb6144a invite:ExportedChatInvite approved_by:long = ChannelAdminLogEventAction;
|
||||||
channelAdminLogEventActionToggleNoForwards#cb2ac766 new_value:Bool = ChannelAdminLogEventAction;
|
channelAdminLogEventActionToggleNoForwards#cb2ac766 new_value:Bool = ChannelAdminLogEventAction;
|
||||||
channelAdminLogEventActionSendMessage#278f2868 message:Message = ChannelAdminLogEventAction;
|
channelAdminLogEventActionSendMessage#278f2868 message:Message = ChannelAdminLogEventAction;
|
||||||
|
channelAdminLogEventActionChangeAvailableReactions#9cf7f76a prev_value:Vector<string> new_value:Vector<string> = ChannelAdminLogEventAction;
|
||||||
|
|
||||||
channelAdminLogEvent#1fad68cd id:long date:int user_id:long action:ChannelAdminLogEventAction = ChannelAdminLogEvent;
|
channelAdminLogEvent#1fad68cd id:long date:int user_id:long action:ChannelAdminLogEventAction = ChannelAdminLogEvent;
|
||||||
|
|
||||||
|
@ -1306,13 +1307,13 @@ auth.loggedOut#c3a2835f flags:# future_auth_token:flags.0?bytes = auth.LoggedOut
|
||||||
|
|
||||||
reactionCount#6fb250d1 flags:# chosen:flags.0?true reaction:string count:int = ReactionCount;
|
reactionCount#6fb250d1 flags:# chosen:flags.0?true reaction:string count:int = ReactionCount;
|
||||||
|
|
||||||
messageReactions#87b6e36 flags:# min:flags.0?true results:Vector<ReactionCount> recent_reactons:flags.1?Vector<MessageUserReaction> = MessageReactions;
|
messageReactions#87b6e36 flags:# min:flags.0?true can_see_list:flags.2?true results:Vector<ReactionCount> recent_reactons:flags.1?Vector<MessageUserReaction> = MessageReactions;
|
||||||
|
|
||||||
messageUserReaction#932844fa user_id:long reaction:string = MessageUserReaction;
|
messageUserReaction#932844fa user_id:long reaction:string = MessageUserReaction;
|
||||||
|
|
||||||
messages.messageReactionsList#a366923c flags:# count:int reactions:Vector<MessageUserReaction> users:Vector<User> next_offset:flags.0?string = messages.MessageReactionsList;
|
messages.messageReactionsList#a366923c flags:# count:int reactions:Vector<MessageUserReaction> users:Vector<User> next_offset:flags.0?string = messages.MessageReactionsList;
|
||||||
|
|
||||||
availableReaction#64222f31 reaction:string title:string static_icon:Document select_animation:Document activate_animation:Document effect_animation:Document = AvailableReaction;
|
availableReaction#21d7c4b flags:# inactive:flags.0?true reaction:string title:string static_icon:Document appear_animation:Document select_animation:Document activate_animation:Document effect_animation:Document = AvailableReaction;
|
||||||
|
|
||||||
messages.availableReactionsNotModified#9f071957 = messages.AvailableReactions;
|
messages.availableReactionsNotModified#9f071957 = messages.AvailableReactions;
|
||||||
messages.availableReactions#768e3aad hash:int reactions:Vector<AvailableReaction> = messages.AvailableReactions;
|
messages.availableReactions#768e3aad hash:int reactions:Vector<AvailableReaction> = messages.AvailableReactions;
|
||||||
|
@ -1600,6 +1601,7 @@ messages.getMessagesReactions#8bba90e6 peer:InputPeer id:Vector<int> = Updates;
|
||||||
messages.getMessageReactionsList#e0ee6b77 flags:# peer:InputPeer id:int reaction:flags.0?string offset:flags.1?string limit:int = messages.MessageReactionsList;
|
messages.getMessageReactionsList#e0ee6b77 flags:# peer:InputPeer id:int reaction:flags.0?string offset:flags.1?string limit:int = messages.MessageReactionsList;
|
||||||
messages.setChatAvailableReactions#14050ea6 peer:InputPeer available_reactions:Vector<string> = Updates;
|
messages.setChatAvailableReactions#14050ea6 peer:InputPeer available_reactions:Vector<string> = Updates;
|
||||||
messages.getAvailableReactions#18dea0ac hash:int = messages.AvailableReactions;
|
messages.getAvailableReactions#18dea0ac hash:int = messages.AvailableReactions;
|
||||||
|
messages.setDefaultReaction#d960c4d4 reaction:string = Bool;
|
||||||
|
|
||||||
updates.getState#edd4882a = updates.State;
|
updates.getState#edd4882a = updates.State;
|
||||||
updates.getDifference#25939651 flags:# pts:int pts_total_limit:flags.0?int date:int qts:int = updates.Difference;
|
updates.getDifference#25939651 flags:# pts:int pts_total_limit:flags.0?int date:int qts:int = updates.Difference;
|
||||||
|
|
|
@ -1058,7 +1058,8 @@ void Controller::fillManageSection() {
|
||||||
_navigation->parentController()->show(Box(
|
_navigation->parentController()->show(Box(
|
||||||
EditAllowedReactionsBox,
|
EditAllowedReactionsBox,
|
||||||
!_peer->isBroadcast(),
|
!_peer->isBroadcast(),
|
||||||
session->data().reactions().list(),
|
session->data().reactions().list(
|
||||||
|
Data::Reactions::Type::Active),
|
||||||
session->data().reactions().list(_peer),
|
session->data().reactions().list(_peer),
|
||||||
done));
|
done));
|
||||||
},
|
},
|
||||||
|
|
|
@ -40,8 +40,12 @@ void Reactions::refresh() {
|
||||||
request();
|
request();
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<Reaction> &Reactions::list() const {
|
const std::vector<Reaction> &Reactions::list(Type type) const {
|
||||||
return _available;
|
switch (type) {
|
||||||
|
case Type::Active: return _active;
|
||||||
|
case Type::All: return _available;
|
||||||
|
}
|
||||||
|
Unexpected("Type in Reactions::list.");
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<Reaction> Reactions::list(not_null<PeerData*> peer) const {
|
std::vector<Reaction> Reactions::list(not_null<PeerData*> peer) const {
|
||||||
|
@ -50,7 +54,7 @@ std::vector<Reaction> Reactions::list(not_null<PeerData*> peer) const {
|
||||||
} else if (const auto channel = peer->asChannel()) {
|
} else if (const auto channel = peer->asChannel()) {
|
||||||
return filtered(channel->allowedReactions());
|
return filtered(channel->allowedReactions());
|
||||||
} else {
|
} else {
|
||||||
return list();
|
return list(Type::Active);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,7 +99,7 @@ void Reactions::resolveImages() {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const auto i = ranges::find(_available, emoji, &Reaction::emoji);
|
const auto i = ranges::find(_available, emoji, &Reaction::emoji);
|
||||||
const auto document = (i != end(list()))
|
const auto document = (i != end(_available))
|
||||||
? i->staticIcon.get()
|
? i->staticIcon.get()
|
||||||
: nullptr;
|
: nullptr;
|
||||||
if (document) {
|
if (document) {
|
||||||
|
@ -173,7 +177,7 @@ std::vector<Reaction> Reactions::Filtered(
|
||||||
|
|
||||||
std::vector<Reaction> Reactions::filtered(
|
std::vector<Reaction> Reactions::filtered(
|
||||||
const std::vector<QString> &emoji) const {
|
const std::vector<QString> &emoji) const {
|
||||||
return Filtered(list(), emoji);
|
return Filtered(list(Type::Active), emoji);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<QString> Reactions::ParseAllowed(
|
std::vector<QString> Reactions::ParseAllowed(
|
||||||
|
@ -188,6 +192,9 @@ std::vector<QString> Reactions::ParseAllowed(
|
||||||
|
|
||||||
void Reactions::request() {
|
void Reactions::request() {
|
||||||
auto &api = _owner->session().api();
|
auto &api = _owner->session().api();
|
||||||
|
if (_requestId) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
_requestId = api.request(MTPmessages_GetAvailableReactions(
|
_requestId = api.request(MTPmessages_GetAvailableReactions(
|
||||||
MTP_int(_hash)
|
MTP_int(_hash)
|
||||||
)).done([=](const MTPmessages_AvailableReactions &result) {
|
)).done([=](const MTPmessages_AvailableReactions &result) {
|
||||||
|
@ -196,11 +203,16 @@ void Reactions::request() {
|
||||||
_hash = data.vhash().v;
|
_hash = data.vhash().v;
|
||||||
|
|
||||||
const auto &list = data.vreactions().v;
|
const auto &list = data.vreactions().v;
|
||||||
|
_active.clear();
|
||||||
_available.clear();
|
_available.clear();
|
||||||
_available.reserve(data.vreactions().v.size());
|
_active.reserve(list.size());
|
||||||
|
_available.reserve(list.size());
|
||||||
for (const auto &reaction : list) {
|
for (const auto &reaction : list) {
|
||||||
if (const auto parsed = parse(reaction)) {
|
if (const auto parsed = parse(reaction)) {
|
||||||
_available.push_back(*parsed);
|
_available.push_back(*parsed);
|
||||||
|
if (parsed->active) {
|
||||||
|
_active.push_back(*parsed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_waitingForList) {
|
if (_waitingForList) {
|
||||||
|
@ -228,12 +240,15 @@ std::optional<Reaction> Reactions::parse(const MTPAvailableReaction &entry) {
|
||||||
.emoji = emoji,
|
.emoji = emoji,
|
||||||
.title = qs(data.vtitle()),
|
.title = qs(data.vtitle()),
|
||||||
.staticIcon = _owner->processDocument(data.vstatic_icon()),
|
.staticIcon = _owner->processDocument(data.vstatic_icon()),
|
||||||
|
.appearAnimation = _owner->processDocument(
|
||||||
|
data.vappear_animation()),
|
||||||
.selectAnimation = _owner->processDocument(
|
.selectAnimation = _owner->processDocument(
|
||||||
data.vselect_animation()),
|
data.vselect_animation()),
|
||||||
.activateAnimation = _owner->processDocument(
|
.activateAnimation = _owner->processDocument(
|
||||||
data.vactivate_animation()),
|
data.vactivate_animation()),
|
||||||
.activateEffects = _owner->processDocument(
|
.activateEffects = _owner->processDocument(
|
||||||
data.veffect_animation()),
|
data.veffect_animation()),
|
||||||
|
.active = !data.is_inactive(),
|
||||||
})
|
})
|
||||||
: std::nullopt;
|
: std::nullopt;
|
||||||
});
|
});
|
||||||
|
|
|
@ -16,9 +16,11 @@ struct Reaction {
|
||||||
QString emoji;
|
QString emoji;
|
||||||
QString title;
|
QString title;
|
||||||
not_null<DocumentData*> staticIcon;
|
not_null<DocumentData*> staticIcon;
|
||||||
|
not_null<DocumentData*> appearAnimation;
|
||||||
not_null<DocumentData*> selectAnimation;
|
not_null<DocumentData*> selectAnimation;
|
||||||
not_null<DocumentData*> activateAnimation;
|
not_null<DocumentData*> activateAnimation;
|
||||||
not_null<DocumentData*> activateEffects;
|
not_null<DocumentData*> activateEffects;
|
||||||
|
bool active = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Reactions final {
|
class Reactions final {
|
||||||
|
@ -27,7 +29,11 @@ public:
|
||||||
|
|
||||||
void refresh();
|
void refresh();
|
||||||
|
|
||||||
[[nodiscard]] const std::vector<Reaction> &list() const;
|
enum class Type {
|
||||||
|
Active,
|
||||||
|
All,
|
||||||
|
};
|
||||||
|
[[nodiscard]] const std::vector<Reaction> &list(Type type) const;
|
||||||
[[nodiscard]] std::vector<Reaction> list(not_null<PeerData*> peer) const;
|
[[nodiscard]] std::vector<Reaction> list(not_null<PeerData*> peer) const;
|
||||||
|
|
||||||
[[nodiscard]] static std::vector<Reaction> Filtered(
|
[[nodiscard]] static std::vector<Reaction> Filtered(
|
||||||
|
@ -69,6 +75,7 @@ private:
|
||||||
|
|
||||||
const not_null<Session*> _owner;
|
const not_null<Session*> _owner;
|
||||||
|
|
||||||
|
std::vector<Reaction> _active;
|
||||||
std::vector<Reaction> _available;
|
std::vector<Reaction> _available;
|
||||||
rpl::event_stream<> _updated;
|
rpl::event_stream<> _updated;
|
||||||
|
|
||||||
|
|
|
@ -652,6 +652,7 @@ void GenerateItems(
|
||||||
MTPDchannelAdminLogEventActionParticipantJoinByRequest;
|
MTPDchannelAdminLogEventActionParticipantJoinByRequest;
|
||||||
using LogNoForwards = MTPDchannelAdminLogEventActionToggleNoForwards;
|
using LogNoForwards = MTPDchannelAdminLogEventActionToggleNoForwards;
|
||||||
using LogActionSendMessage = MTPDchannelAdminLogEventActionSendMessage;
|
using LogActionSendMessage = MTPDchannelAdminLogEventActionSendMessage;
|
||||||
|
using LogEventActionChangeAvailableReactions = MTPDchannelAdminLogEventActionChangeAvailableReactions;
|
||||||
|
|
||||||
const auto session = &history->session();
|
const auto session = &history->session();
|
||||||
const auto id = event.vid().v;
|
const auto id = event.vid().v;
|
||||||
|
@ -1370,6 +1371,10 @@ void GenerateItems(
|
||||||
ExtractSentDate(data.vmessage()));
|
ExtractSentDate(data.vmessage()));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const auto createChangeAvailableReactions = [&](const LogEventActionChangeAvailableReactions &data) {
|
||||||
|
// #TODO reactions
|
||||||
|
};
|
||||||
|
|
||||||
action.match([&](const LogTitle &data) {
|
action.match([&](const LogTitle &data) {
|
||||||
createChangeTitle(data);
|
createChangeTitle(data);
|
||||||
}, [&](const LogAbout &data) {
|
}, [&](const LogAbout &data) {
|
||||||
|
@ -1440,6 +1445,8 @@ void GenerateItems(
|
||||||
createToggleNoForwards(data);
|
createToggleNoForwards(data);
|
||||||
}, [&](const LogActionSendMessage &data) {
|
}, [&](const LogActionSendMessage &data) {
|
||||||
createSendMessage(data);
|
createSendMessage(data);
|
||||||
|
}, [&](const LogEventActionChangeAvailableReactions &data) {
|
||||||
|
createChangeAvailableReactions(data);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue