예제 #1
0
파일: Dialogs.cs 프로젝트: mtm9999/kilogram
 public Dialogs(TelegramSession session)
 {
     this.session = session;
     model        = new DialogListModel(session);
     session.Updates.NewMessageEvent += delegate(Message message) {
         Deployment.Current.Dispatcher.BeginInvoke(() => model.ProcessNewMessage(message));
     };
 }
예제 #2
0
파일: Dialogs.cs 프로젝트: mtm9999/kilogram
        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));
        }
예제 #4
0
파일: Dialogs.cs 프로젝트: mtm9999/kilogram
        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;
        }