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

Function PollDataToMTP

Telegram/SourceFiles/data/data_poll.cpp:590–641  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

588}
589
590MTPPoll PollDataToMTP(not_null<const PollData*> poll, bool close) {
591 const auto convert = [&](const PollAnswer &answer) {
592 const auto flags = answer.media
593 ? MTPDinputPollAnswer::Flag::f_media
594 : MTPDinputPollAnswer::Flag(0);
595 return MTP_inputPollAnswer(
596 MTP_flags(flags),
597 MTP_textWithEntities(
598 MTP_string(answer.text.text),
599 Api::EntitiesToMTP(&poll->session(), answer.text.entities)),
600 answer.media
601 ? PollMediaToMTP(answer.media)
602 : MTPInputMedia());
603 };
604 auto answers = QVector<MTPPollAnswer>();
605 answers.reserve(poll->answers.size());
606 ranges::transform(
607 poll->answers,
608 ranges::back_inserter(answers),
609 convert);
610 auto countries = QVector<MTPstring>();
611 countries.reserve(poll->countries.size());
612 for (const auto &country : poll->countries) {
613 countries.push_back(MTP_string(country));
614 }
615 using Flag = MTPDpoll::Flag;
616 const auto flags = ((poll->closed() || close) ? Flag::f_closed : Flag(0))
617 | (poll->multiChoice() ? Flag::f_multiple_choice : Flag(0))
618 | (poll->publicVotes() ? Flag::f_public_voters : Flag(0))
619 | (poll->quiz() ? Flag::f_quiz : Flag(0))
620 | (poll->shuffleAnswers() ? Flag::f_shuffle_answers : Flag(0))
621 | (poll->revotingDisabled() ? Flag::f_revoting_disabled : Flag(0))
622 | (poll->openAnswers() ? Flag::f_open_answers : Flag(0))
623 | (poll->hideResultsUntilClose()
624 ? Flag::f_hide_results_until_close
625 : Flag(0))
626 | (poll->subscribersOnly() ? Flag::f_subscribers_only : Flag(0))
627 | (poll->closePeriod > 0 ? Flag::f_close_period : Flag(0))
628 | (poll->closeDate > 0 ? Flag::f_close_date : Flag(0))
629 | (countries.isEmpty() ? Flag(0) : Flag::f_countries_iso2);
630 return MTP_poll(
631 MTP_long(poll->id),
632 MTP_flags(flags),
633 MTP_textWithEntities(
634 MTP_string(poll->question.text),
635 Api::EntitiesToMTP(&poll->session(), poll->question.entities)),
636 MTP_vector<MTPPollAnswer>(answers),
637 MTP_int(poll->closePeriod),
638 MTP_int(poll->closeDate),
639 MTP_vector<MTPstring>(std::move(countries)), // countries_iso2
640 MTP_long(0));
641}
642
643MTPInputMedia PollDataToInputMedia(
644 not_null<const PollData*> poll,

Callers 1

PollDataToInputMediaFunction · 0.85

Calls 15

MTP_flagsFunction · 0.85
MTP_stringFunction · 0.85
EntitiesToMTPFunction · 0.85
PollMediaToMTPFunction · 0.85
MTP_longFunction · 0.85
multiChoiceMethod · 0.80
publicVotesMethod · 0.80
quizMethod · 0.80
shuffleAnswersMethod · 0.80
revotingDisabledMethod · 0.80
openAnswersMethod · 0.80
hideResultsUntilCloseMethod · 0.80

Tested by

no test coverage detected