1 // 2 // Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2021 3 // 4 // Distributed under the Boost Software License, Version 1.0. (See accompanying 5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 // 7 #include "td/telegram/MessageSearchFilter.h" 8 9 #include "td/utils/common.h" 10 11 namespace td { 12 get_input_messages_filter(MessageSearchFilter filter)13tl_object_ptr<telegram_api::MessagesFilter> get_input_messages_filter(MessageSearchFilter filter) { 14 switch (filter) { 15 case MessageSearchFilter::Empty: 16 return make_tl_object<telegram_api::inputMessagesFilterEmpty>(); 17 case MessageSearchFilter::Animation: 18 return make_tl_object<telegram_api::inputMessagesFilterGif>(); 19 case MessageSearchFilter::Audio: 20 return make_tl_object<telegram_api::inputMessagesFilterMusic>(); 21 case MessageSearchFilter::Document: 22 return make_tl_object<telegram_api::inputMessagesFilterDocument>(); 23 case MessageSearchFilter::Photo: 24 return make_tl_object<telegram_api::inputMessagesFilterPhotos>(); 25 case MessageSearchFilter::Video: 26 return make_tl_object<telegram_api::inputMessagesFilterVideo>(); 27 case MessageSearchFilter::VoiceNote: 28 return make_tl_object<telegram_api::inputMessagesFilterVoice>(); 29 case MessageSearchFilter::PhotoAndVideo: 30 return make_tl_object<telegram_api::inputMessagesFilterPhotoVideo>(); 31 case MessageSearchFilter::Url: 32 return make_tl_object<telegram_api::inputMessagesFilterUrl>(); 33 case MessageSearchFilter::ChatPhoto: 34 return make_tl_object<telegram_api::inputMessagesFilterChatPhotos>(); 35 case MessageSearchFilter::Call: 36 return make_tl_object<telegram_api::inputMessagesFilterPhoneCalls>(0, false /*ignored*/); 37 case MessageSearchFilter::MissedCall: 38 return make_tl_object<telegram_api::inputMessagesFilterPhoneCalls>( 39 telegram_api::inputMessagesFilterPhoneCalls::MISSED_MASK, false /*ignored*/); 40 case MessageSearchFilter::VideoNote: 41 return make_tl_object<telegram_api::inputMessagesFilterRoundVideo>(); 42 case MessageSearchFilter::VoiceAndVideoNote: 43 return make_tl_object<telegram_api::inputMessagesFilterRoundVoice>(); 44 case MessageSearchFilter::Mention: 45 return make_tl_object<telegram_api::inputMessagesFilterMyMentions>(); 46 case MessageSearchFilter::Pinned: 47 return make_tl_object<telegram_api::inputMessagesFilterPinned>(); 48 case MessageSearchFilter::UnreadMention: 49 case MessageSearchFilter::FailedToSend: 50 default: 51 UNREACHABLE(); 52 return nullptr; 53 } 54 } 55 get_message_search_filter(const tl_object_ptr<td_api::SearchMessagesFilter> & filter)56MessageSearchFilter get_message_search_filter(const tl_object_ptr<td_api::SearchMessagesFilter> &filter) { 57 if (filter == nullptr) { 58 return MessageSearchFilter::Empty; 59 } 60 switch (filter->get_id()) { 61 case td_api::searchMessagesFilterEmpty::ID: 62 return MessageSearchFilter::Empty; 63 case td_api::searchMessagesFilterAnimation::ID: 64 return MessageSearchFilter::Animation; 65 case td_api::searchMessagesFilterAudio::ID: 66 return MessageSearchFilter::Audio; 67 case td_api::searchMessagesFilterDocument::ID: 68 return MessageSearchFilter::Document; 69 case td_api::searchMessagesFilterPhoto::ID: 70 return MessageSearchFilter::Photo; 71 case td_api::searchMessagesFilterVideo::ID: 72 return MessageSearchFilter::Video; 73 case td_api::searchMessagesFilterVoiceNote::ID: 74 return MessageSearchFilter::VoiceNote; 75 case td_api::searchMessagesFilterPhotoAndVideo::ID: 76 return MessageSearchFilter::PhotoAndVideo; 77 case td_api::searchMessagesFilterUrl::ID: 78 return MessageSearchFilter::Url; 79 case td_api::searchMessagesFilterChatPhoto::ID: 80 return MessageSearchFilter::ChatPhoto; 81 case td_api::searchMessagesFilterCall::ID: 82 return MessageSearchFilter::Call; 83 case td_api::searchMessagesFilterMissedCall::ID: 84 return MessageSearchFilter::MissedCall; 85 case td_api::searchMessagesFilterVideoNote::ID: 86 return MessageSearchFilter::VideoNote; 87 case td_api::searchMessagesFilterVoiceAndVideoNote::ID: 88 return MessageSearchFilter::VoiceAndVideoNote; 89 case td_api::searchMessagesFilterMention::ID: 90 return MessageSearchFilter::Mention; 91 case td_api::searchMessagesFilterUnreadMention::ID: 92 return MessageSearchFilter::UnreadMention; 93 case td_api::searchMessagesFilterFailedToSend::ID: 94 return MessageSearchFilter::FailedToSend; 95 case td_api::searchMessagesFilterPinned::ID: 96 return MessageSearchFilter::Pinned; 97 default: 98 UNREACHABLE(); 99 return MessageSearchFilter::Empty; 100 } 101 } 102 operator <<(StringBuilder & string_builder,MessageSearchFilter filter)103StringBuilder &operator<<(StringBuilder &string_builder, MessageSearchFilter filter) { 104 switch (filter) { 105 case MessageSearchFilter::Empty: 106 return string_builder << "Empty"; 107 case MessageSearchFilter::Animation: 108 return string_builder << "Animation"; 109 case MessageSearchFilter::Audio: 110 return string_builder << "Audio"; 111 case MessageSearchFilter::Document: 112 return string_builder << "Document"; 113 case MessageSearchFilter::Photo: 114 return string_builder << "Photo"; 115 case MessageSearchFilter::Video: 116 return string_builder << "Video"; 117 case MessageSearchFilter::VoiceNote: 118 return string_builder << "VoiceNote"; 119 case MessageSearchFilter::PhotoAndVideo: 120 return string_builder << "PhotoAndVideo"; 121 case MessageSearchFilter::Url: 122 return string_builder << "Url"; 123 case MessageSearchFilter::ChatPhoto: 124 return string_builder << "ChatPhoto"; 125 case MessageSearchFilter::Call: 126 return string_builder << "Call"; 127 case MessageSearchFilter::MissedCall: 128 return string_builder << "MissedCall"; 129 case MessageSearchFilter::VideoNote: 130 return string_builder << "VideoNote"; 131 case MessageSearchFilter::VoiceAndVideoNote: 132 return string_builder << "VoiceAndVideoNote"; 133 case MessageSearchFilter::Mention: 134 return string_builder << "Mention"; 135 case MessageSearchFilter::UnreadMention: 136 return string_builder << "UnreadMention"; 137 case MessageSearchFilter::FailedToSend: 138 return string_builder << "FailedToSend"; 139 case MessageSearchFilter::Pinned: 140 return string_builder << "Pinned"; 141 default: 142 UNREACHABLE(); 143 return string_builder; 144 } 145 } 146 147 } // namespace td 148