MCPcopy Create free account
hub / github.com/TDesktop-x64/tdesktop / applyChanges

Method applyChanges

Telegram/SourceFiles/data/data_poll.cpp:95–185  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

93}
94
95bool PollData::applyChanges(const MTPDpoll &poll) {
96 Expects(poll.vid().v == id);
97
98 const auto newQuestion = Api::ParseTextWithEntities(
99 &session(),
100 poll.vquestion());
101 const auto newFlags = (poll.is_closed() ? Flag::Closed : Flag(0))
102 | (poll.is_public_voters() ? Flag::PublicVotes : Flag(0))
103 | (poll.is_multiple_choice() ? Flag::MultiChoice : Flag(0))
104 | (poll.is_quiz() ? Flag::Quiz : Flag(0))
105 | (poll.is_shuffle_answers() ? Flag::ShuffleAnswers : Flag(0))
106 | (poll.is_revoting_disabled() ? Flag::RevotingDisabled : Flag(0))
107 | (poll.is_open_answers() ? Flag::OpenAnswers : Flag(0))
108 | (poll.is_hide_results_until_close()
109 ? Flag::HideResultsUntilClose
110 : Flag(0))
111 | (poll.is_creator() ? Flag::Creator : Flag(0))
112 | (poll.is_subscribers_only() ? Flag::SubscribersOnly : Flag(0));
113 const auto newCloseDate = poll.vclose_date().value_or_empty();
114 const auto newClosePeriod = poll.vclose_period().value_or_empty();
115 auto newCountries = std::vector<QString>();
116 if (const auto countries = poll.vcountries_iso2()) {
117 newCountries.reserve(countries->v.size());
118 for (const auto &country : countries->v) {
119 newCountries.push_back(qs(country));
120 }
121 }
122 auto newAnswers = ranges::views::all(
123 poll.vanswers().v
124 ) | ranges::views::transform([&](const MTPPollAnswer &data) {
125 return data.match([&](const MTPDpollAnswer &answer) {
126 auto result = PollAnswer();
127 result.option = answer.voption().v;
128 result.text = Api::ParseTextWithEntities(
129 &session(),
130 answer.vtext());
131 if (const auto media = answer.vmedia()) {
132 ProcessPollMedia(_owner, *media);
133 result.media = PollMediaFromMTP(_owner, *media);
134 }
135 if (const auto addedBy = answer.vadded_by()) {
136 result.addedBy = _owner->peer(peerFromMTP(*addedBy));
137 result.addedDate = answer.vdate().value_or_empty();
138 }
139 return result;
140 }, [&](const MTPDinputPollAnswer &answer) {
141 auto result = PollAnswer();
142 result.text = Api::ParseTextWithEntities(
143 &session(),
144 answer.vtext());
145 if (const auto media = answer.vmedia()) {
146 result.media = PollMediaFromInputMTP(_owner, *media);
147 }
148 return result;
149 }, [](const auto &) {
150 return PollAnswer();
151 });
152 }) | ranges::views::take(

Callers 4

parseAndApplyMethod · 0.45
webpageApplyFieldsMethod · 0.45
processPollMethod · 0.45
processTodoListMethod · 0.45

Calls 10

ParseTextWithEntitiesFunction · 0.85
qsFunction · 0.85
ProcessPollMediaFunction · 0.85
PollMediaFromMTPFunction · 0.85
peerFromMTPFunction · 0.85
PollMediaFromInputMTPFunction · 0.85
FlagEnum · 0.70
PollAnswerClass · 0.70
sizeMethod · 0.45
peerMethod · 0.45

Tested by

no test coverage detected