| 588 | } |
| 589 | |
| 590 | MTPPoll 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 | |
| 643 | MTPInputMedia PollDataToInputMedia( |
| 644 | not_null<const PollData*> poll, |
no test coverage detected