Exemple #1
0
        public async Task FillDialog(string dialogName, Peer peer, int dialogId)
        {
            Stack <Message> messages = new Stack <Message>();

            Dialog = _ioc.Resolve <Dialog>();
            dynamic history;
            var     dialogs = (TlDialogs)await _client.GetUserDialogsAsync();

            try
            {
                switch (peer)
                {
                case Peer.User:

                    var user = dialogs.Users.Lists.OfType <TlUser>().FirstOrDefault(c => c.Id == dialogId);
                    history = await _client.GetHistoryAsync(
                        new TlInputPeerUser { UserId = user.Id, AccessHash = (long)user.AccessHash }, 0, -1, 50);

                    break;

                case Peer.Chat:
                    history = await _client.GetHistoryAsync(new TlInputPeerChat { ChatId = dialogId }, 0, -1, 50);

                    break;

                default:
                    var channel = dialogs.Chats.Lists.OfType <TlChannel>().FirstOrDefault(c => c.Id == dialogId);
                    history = await _client.GetHistoryAsync(
                        new TlInputPeerChannel { ChannelId = channel.Id, AccessHash = (long)channel.AccessHash }, 0,
                        -1,
                        50);

                    break;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }

            foreach (var message in history.Messages.Lists)
            {
                if (message is TlMessage)
                {
                    string senderName = dialogName;

                    if (_userId == message.FromId)
                    {
                        senderName = "You";
                    }
                    else
                    {
                        foreach (TlUser user in history.Users.Lists)
                        {
                            if (user.Id == message.FromId)
                            {
                                senderName = $"{user.FirstName} {user.LastName}";
                                break;
                            }
                        }
                    }

                    AddMsg(message, messages, senderName);
                }
            }
            //foreach (var message in history.Messages.Lists)
            //{
            //    string senderName = dialogName;

            //    if (_userId == message.FromId)
            //    {
            //        senderName = "You";
            //    }
            //    else
            //    {
            //        foreach (TlUser user in history.Users.Lists)
            //        {
            //            if (user.Id == message.FromId)
            //            {
            //                senderName = $"{user.FirstName} {user.LastName}";
            //                break;
            //            }
            //        }
            //    }

            //    AddMsg(message, messages, senderName);
            //}
            Dialog.FillValues(dialogName, messages);
            Dialog.Id = dialogId;
        }