コード例 #1
0
 public MediaCollection(IProtoService protoService, long chatId, SearchMessagesFilter filter, string query = null)
 {
     _protoService = protoService;
     _chatId       = chatId;
     _filter       = filter;
     _query        = query ?? string.Empty;
 }
コード例 #2
0
 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);
         }
コード例 #3
0
 /// <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
     }));
 }
コード例 #4
0
        public SearchChatMessagesCollection(IProtoService protoService, long chatId, string query, int senderUserId, SearchMessagesFilter filter)
        {
            _protoService = protoService;

            _chatId       = chatId;
            _query        = query;
            _senderUserId = senderUserId;
            _filter       = filter;
        }
コード例 #5
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, 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
     }));
 }
コード例 #6
0
 /// <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
     }));
 }
コード例 #7
0
 /// <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
     }));
 }
コード例 #8
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, 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
     }));
 }
コード例 #9
0
        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;
        }
コード例 #10
0
ファイル: SearchMessages.cs プロジェクト: egramtel/tdsharp
 /// <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
     }));
 }
コード例 #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,
     }));
 }
コード例 #12
0
ファイル: SearchChatMessages.cs プロジェクト: studasd/tdsharp
 /// <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,
     }));
 }
コード例 #13
0
        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);
        }
コード例 #14
0
        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;
                }
            }
        }
コード例 #15
0
 public MediaCollection(IProtoService protoService, long chatId, SearchMessagesFilter filter)
 {
     _protoService = protoService;
     _chatId       = chatId;
     _filter       = filter;
 }
コード例 #16
0
 public ChatSearchMediaFilter(SearchMessagesFilter filter, string glyph, string text)
 {
     Filter = filter;
     Glyph  = glyph;
     Text   = text;
 }
コード例 #17
0
 public SearchChatsFilterContent(SearchMessagesFilter filter)
 {
     _filter = filter;
 }