Exemple #1
0
 public MediaCollection(IProtoService protoService, long chatId, SearchMessagesFilter filter, string query = null)
 {
     _protoService = protoService;
     _chatId       = chatId;
     _filter       = filter;
     _query        = query ?? string.Empty;
 }
 public async void Search(string query, MessageSender from, SearchMessagesFilter filter)
 {
     bool FromEquals(MessageSender x, MessageSender y)
     {
         if (x is MessageSenderUser userX && y is MessageSenderUser userY)
         {
             return(userX.UserId == userY.UserId);
         }
 /// <summary>
 /// Returns approximate number of messages of the specified type in the chat
 /// </summary>
 public static Task <Count> GetChatMessageCountAsync(
     this Client client, long chatId = default, SearchMessagesFilter filter = default, bool returnLocal = default)
 {
     return(client.ExecuteAsync(new GetChatMessageCount
     {
         ChatId = chatId, Filter = filter, ReturnLocal = returnLocal
     }));
 }
Exemple #4
0
        public SearchChatMessagesCollection(IProtoService protoService, long chatId, string query, int senderUserId, SearchMessagesFilter filter)
        {
            _protoService = protoService;

            _chatId       = chatId;
            _query        = query;
            _senderUserId = senderUserId;
            _filter       = filter;
        }
 /// <summary>
 /// Searches for messages in secret chats. Returns the results in reverse chronological order. For optimal performance the number of returned messages is chosen by the library
 /// </summary>
 public static Task <FoundMessages> SearchSecretMessagesAsync(
     this Client client, long chatId = default, string query = default, string offset = default,
     int limit = default, SearchMessagesFilter filter        = default)
 {
     return(client.ExecuteAsync(new SearchSecretMessages
     {
         ChatId = chatId, Query = query, Offset = offset, Limit = limit, Filter = filter
     }));
 }
 /// <summary>
 /// Returns sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation. Returns the results in reverse chronological order (i.e., in order of decreasing message_id).
 /// </summary>
 public static Task <MessagePositions> GetChatSparseMessagePositionsAsync(
     this Client client, long chatId = default, SearchMessagesFilter filter = default,
     long fromMessageId = default, int limit = default)
 {
     return(client.ExecuteAsync(new GetChatSparseMessagePositions
     {
         ChatId = chatId, Filter = filter, FromMessageId = fromMessageId, Limit = limit
     }));
 }
 /// <summary>
 /// Returns information about the next messages of the specified type in the chat splitted by days. Returns the results in reverse chronological order. Can return partial result for the last returned day. Behavior of this method depends on the value of the option "utc_time_offset"
 /// </summary>
 public static Task <MessageCalendar> GetChatMessageCalendarAsync(
     this Client client, long chatId = default, SearchMessagesFilter filter = default,
     long fromMessageId = default)
 {
     return(client.ExecuteAsync(new GetChatMessageCalendar
     {
         ChatId = chatId, Filter = filter, FromMessageId = fromMessageId
     }));
 }
 /// <summary>
 /// Searches for messages with given words in the chat. Returns the results in reverse chronological order, i.e. in order of decreasing message_id. Cannot be used in secret chats with a non-empty query
 /// </summary>
 public static Task <Messages> SearchChatMessagesAsync(
     this Client client, long chatId = default, string query = default, MessageSender sender = default,
     long fromMessageId          = default, int offset = default, int limit = default,
     SearchMessagesFilter filter = default, long messageThreadId = default)
 {
     return(client.ExecuteAsync(new SearchChatMessages
     {
         ChatId = chatId, Query = query, Sender = sender, FromMessageId = fromMessageId, Offset = offset,
         Limit = limit, Filter = filter, MessageThreadId = messageThreadId
     }));
 }
        public SearchChatMessagesCollection(IProtoService protoService, long chatId, long threadId, string query, MessageSender sender, long fromMessageId, SearchMessagesFilter filter)
        {
            _protoService = protoService;

            _chatId        = chatId;
            _threadId      = threadId;
            _query         = query;
            _sender        = sender;
            _fromMessageId = fromMessageId;
            _filter        = filter;
        }
Exemple #10
0
 /// <summary>
 /// Searches for messages in all chats except secret chats. Returns the results in reverse chronological order (i.e., in order of decreasing (date, chat_id, message_id)).
 /// </summary>
 public static Task <Messages> SearchMessagesAsync(
     this Client client, ChatList chatList = default, string query = default, int offsetDate = default,
     long offsetChatId           = default, long offsetMessageId   = default, int limit   = default,
     SearchMessagesFilter filter = default, int minDate            = default, int maxDate = default)
 {
     return(client.ExecuteAsync(new SearchMessages
     {
         ChatList = chatList, Query = query, OffsetDate = offsetDate, OffsetChatId = offsetChatId,
         OffsetMessageId = offsetMessageId, Limit = limit, Filter = filter, MinDate = minDate, MaxDate = maxDate
     }));
 }
Exemple #11
0
 /// <summary>
 /// Searches for messages in secret chats. Returns the results in reverse chronological order. For optimal performance the number of returned messages is chosen by the library
 /// </summary>
 public static Task <FoundMessages> SearchSecretMessagesAsync(this Client client,
                                                              long chatId                 = default(long),
                                                              string query                = default(string),
                                                              Int64 fromSearchId          = default(Int64),
                                                              int limit                   = default(int),
                                                              SearchMessagesFilter filter = default(SearchMessagesFilter))
 {
     return(client.ExecuteAsync(new SearchSecretMessages
     {
         ChatId = chatId,
         Query = query,
         FromSearchId = fromSearchId,
         Limit = limit,
         Filter = filter,
     }));
 }
Exemple #12
0
 /// <summary>
 /// Searches for messages with given words in the chat. Returns the results in reverse chronological order, i.e. in order of decreasing message_id. Cannot be used in secret chats with a non-empty query
 /// </summary>
 public static Task <Messages> SearchChatMessagesAsync(this Client client,
                                                       long chatId                 = default(long),
                                                       string query                = default(string),
                                                       int senderUserId            = default(int),
                                                       long fromMessageId          = default(long),
                                                       int offset                  = default(int),
                                                       int limit                   = default(int),
                                                       SearchMessagesFilter filter = default(SearchMessagesFilter))
 {
     return(client.ExecuteAsync(new SearchChatMessages
     {
         ChatId = chatId,
         Query = query,
         SenderUserId = senderUserId,
         FromMessageId = fromMessageId,
         Offset = offset,
         Limit = limit,
         Filter = filter,
     }));
 }
        public ChatGalleryViewModel(IProtoService protoService, IEventAggregator aggregator, long chatId, long threadId, Message selected, bool mirrored = false)
            : base(protoService, aggregator)
        {
            _isMirrored = mirrored;

            _group = new MvxObservableCollection <GalleryContent>();

            _chatId   = chatId;
            _threadId = threadId;

            if (selected.Content is MessageAnimation)
            {
                _filter = new SearchMessagesFilterAnimation();
            }
            else
            {
                _filter = new SearchMessagesFilterPhotoAndVideo();
            }

            //if (selected.Media is TLMessageMediaPhoto photoMedia || selected.IsVideo())
            //{
            //    Items = new MvxObservableCollection<GalleryItem> { new GalleryLegacyMessageItem(selected) };
            //    SelectedItem = Items[0];
            //    FirstItem = Items[0];
            //}
            //else
            //{
            //    Items = new MvxObservableCollection<GalleryItem>();
            //}

            //Initialize(selected.Id);

            Items = new MvxObservableCollection <GalleryContent> {
                new GalleryMessage(protoService, selected)
            };
            SelectedItem = Items[0];
            FirstItem    = Items[0];

            Initialize(selected.Id);
        }
        public async void Search(string query, User from, SearchMessagesFilter filter)
        {
            if (string.Equals(_query, query) && _from?.Id == from?.Id && _filter?.GetType() == filter?.GetType() && PreviousCanExecute())
            {
                PreviousExecute();
            }
            else
            {
                From   = from;
                Filter = filter;
                Query  = query;

                var chat = _dialog.Chat;
                if (chat == null)
                {
                    return;
                }

                Items        = null;
                SelectedItem = null;

                if (string.IsNullOrEmpty(query) && from == null && filter == null)
                {
                    return;
                }

                var fromMessageId = 0L;

                var field = _dialog.ListField;
                if (field != null)
                {
                    var panel = field.ItemsPanelRoot as ItemsStackPanel;
                    if (panel != null && panel.LastVisibleIndex >= 0 && panel.LastVisibleIndex < _dialog.Items.Count && _dialog.Items.Count > 0)
                    {
                        fromMessageId = _dialog.Items[panel.LastVisibleIndex].Id;
                    }
                }

                var collection = new SearchChatMessagesCollection(ProtoService, chat.Id, query, from?.Id ?? 0, fromMessageId, filter);
                var result     = await collection.LoadMoreItemsAsync(100);

                if (result.Count > 0)
                {
                    var target = collection.FirstOrDefault();

                    if (fromMessageId != 0)
                    {
                        var closest = collection.Aggregate((x, y) => Math.Abs(x.Id - fromMessageId) < Math.Abs(y.Id - fromMessageId) ? x : y);
                        if (closest != null)
                        {
                            target = closest;
                        }
                    }

                    Items        = collection;
                    SelectedItem = target;

                    await Dialog.LoadMessageSliceAsync(null, target.Id);
                }
                else
                {
                    Items        = collection;
                    SelectedItem = null;
                }
            }
        }
Exemple #15
0
 public MediaCollection(IProtoService protoService, long chatId, SearchMessagesFilter filter)
 {
     _protoService = protoService;
     _chatId       = chatId;
     _filter       = filter;
 }
 public ChatSearchMediaFilter(SearchMessagesFilter filter, string glyph, string text)
 {
     Filter = filter;
     Glyph  = glyph;
     Text   = text;
 }
 public SearchChatsFilterContent(SearchMessagesFilter filter)
 {
     _filter = filter;
 }