| 550 | } |
| 551 | |
| 552 | PollMedia PollMediaFromInputMTP( |
| 553 | not_null<Data::Session*> owner, |
| 554 | const MTPInputMedia &media) { |
| 555 | auto result = PollMedia(); |
| 556 | media.match([&](const MTPDinputMediaPhoto &data) { |
| 557 | data.vid().match([&](const MTPDinputPhoto &photo) { |
| 558 | result.photo = owner->photo(photo.vid().v); |
| 559 | }, [](const auto &) { |
| 560 | }); |
| 561 | }, [&](const MTPDinputMediaDocument &data) { |
| 562 | data.vid().match([&](const MTPDinputDocument &document) { |
| 563 | result.document = owner->document(document.vid().v); |
| 564 | }, [](const auto &) { |
| 565 | }); |
| 566 | }, [&](const MTPDinputMediaGeoPoint &data) { |
| 567 | data.vgeo_point().match([&](const MTPDinputGeoPoint &point) { |
| 568 | result.geo.emplace( |
| 569 | point.vlat().v, |
| 570 | point.vlong().v, |
| 571 | Data::LocationPoint::NoAccessHash); |
| 572 | }, [](const auto &) { |
| 573 | }); |
| 574 | }, [&](const MTPDinputMediaWebPage &data) { |
| 575 | result.url = qs(data.vurl()); |
| 576 | }, [](const auto &) { |
| 577 | }); |
| 578 | return result; |
| 579 | } |
| 580 | |
| 581 | QByteArray PollOptionFromLink(const QString &value) { |
| 582 | return QByteArray::fromBase64(value.toLatin1()); |