| 215 | } |
| 216 | |
| 217 | PeerData *PeerFromInputMTP( |
| 218 | not_null<Session*> owner, |
| 219 | const MTPInputPeer &input) { |
| 220 | return input.match([&](const MTPDinputPeerUser &data) { |
| 221 | const auto user = owner->user(data.vuser_id().v); |
| 222 | user->setAccessHash(data.vaccess_hash().v); |
| 223 | return (PeerData*)user; |
| 224 | }, [&](const MTPDinputPeerChat &data) { |
| 225 | return (PeerData*)owner->chat(data.vchat_id().v); |
| 226 | }, [&](const MTPDinputPeerChannel &data) { |
| 227 | const auto channel = owner->channel(data.vchannel_id().v); |
| 228 | channel->setAccessHash(data.vaccess_hash().v); |
| 229 | return (PeerData*)channel; |
| 230 | }, [&](const MTPDinputPeerSelf &data) { |
| 231 | return (PeerData*)owner->session().user(); |
| 232 | }, [&](const auto &data) { |
| 233 | return (PeerData*)nullptr; |
| 234 | }); |
| 235 | } |
| 236 | |
| 237 | UserData *UserFromInputMTP( |
| 238 | not_null<Session*> owner, |
no test coverage detected