コード例 #1
0
        public async Task <int> getHistoryMessage()
        {
            IEnumerable <IAVIMMessage> messages;

            if (oldestMessage == null)
            {
                messages = (await conversation.QueryMessageAsync(limit: MessagePerPage));
            }
            else
            {
                messages = (await conversation.QueryMessageAsync(
                                beforeMessageId: oldestMessage.Id,
                                beforeTimeStamp: oldestMessage.ServerTimestamp,
                                limit: MessagePerPage));
            }

            foreach (var message in messages.Reverse())
            {
                if (message is AVIMTextMessage)
                {
                    var         textMessage = (AVIMTextMessage)message;
                    MessageItem newItem     = fromIMTextMessage(textMessage);
                    itemList.Insert(0, newItem);
                }
            }

            List <IAVIMMessage> list = messages.ToList();

            if (list.Count > 0)
            {
                oldestMessage = list[0];
            }

            return(list.Count);
        }
コード例 #2
0
ファイル: Main.xaml.cs プロジェクト: z-wl/TnecnetOO
        //上拉到顶部刷新出历史聊天记录
        private async void Received_ScrollChanged(object sender, ScrollChangedEventArgs e)
        {
            ScrollViewer viewer = e.OriginalSource as ScrollViewer;

            if (viewer != null)
            {
                if (viewer.VerticalOffset == 0 && Conversation != null)
                {
                    //加载历史记录
                    var earliestMessages = await Conversation.QueryMessageAsync(limit : 20);

                    List <Message> earliestMessageList = new List <Message>();
                    foreach (AVIMMessage message in earliestMessages)
                    {
                        earliestMessageList.Add(new Message(message));
                    }
                    InviteFriend.MessageList.InsertRange(0, earliestMessageList);
                    received.ItemsSource = null;
                    received.ItemsSource = InviteFriend.MessageList;
                    //聚焦最新的消息
                    received.ScrollIntoView(received.Items.GetItemAt(InviteFriend.MessageList.Count - 1));
                }
            }
        }