public Dialogs(TelegramSession session) { this.session = session; model = new DialogListModel(session); session.Updates.NewMessageEvent += delegate(Message message) { Deployment.Current.Dispatcher.BeginInvoke(() => model.ProcessNewMessage(message)); }; }
private void Read(BinaryReader reader) { logger.info("loading dialogs"); int stateExists = reader.ReadInt32(); if (stateExists != 0) { logger.info("dialog model found"); model = new DialogListModel(session, reader); } else { logger.info("dialogs model not found"); model = null; } }
public async Task <ActionResult> Index() { UserDTO user = await UserService .GetUserById(User.Identity.GetUserId()); List <DialogDTO> usersDialogs = (await DialogService .ListDialogs(new DialogFilter { Account = user, })).ResultDialogs.ToList(); DialogListModel result = new DialogListModel(); foreach (DialogDTO dialog in usersDialogs) { MessageDTO lastMessage = (await MessageService.ListDialogMessages(new MessageFilter { Chat = dialog })).ResultMessages.OrderBy(x => x.Time).LastOrDefault(); string message; if (lastMessage != null) { message = lastMessage.Content; if (message.Length > 50) { message = message.Substring(0, 50) + "..."; } } else { message = Resources.Resource.NoMessage; } result.dialogs.Add(new DialogViewModel { DialogId = dialog.Id, Dialog = dialog.Name, LastMessage = message, Data = lastMessage != null ? lastMessage.Time.ToShortDateString() + " " + lastMessage.Time.ToShortTimeString() : " ", Sender = lastMessage != null ? lastMessage.Sender.Name : " " }); } return(View(result)); }
public async Task DialogsRequest() // call it only on login! { DialogListModel newState = new DialogListModel(session); int offset = 0; while (true) { logger.info("request dialogs with offset {0}", offset); messages_Dialogs dialogsPart = await session.Api.messages_getDialogs(offset, 0, 100); offset += newState.ProcessDialogs(dialogsPart); if (dialogsPart.Constructor == Constructor.messages_dialogs) { break; } } //model.Replace(newState); model = newState; }