Esempio n. 1
0
        private void _room_Presence(string from, string status)
        {
            if (!RoomMode && from != _uniqueName)
            {
                return;
            }
            switch (status)
            {
            case "offline":
                var user = ConversationItems.FirstOrDefault(i => i.UserName.EqIgnoreCase(from));
                if (user != null)
                {
                    DispatcherHelper.BeginInvoke(new Action(() => ConversationItems.Remove(user)));
                    //INFO: если были не просмотренные сообщения, то покажем их
                    var receivedMess = _room.GetMessages(user.UserName);
                    if (receivedMess.Any(i => i.State == MsgState.Received))
                    {
                        OnPrivateChatWindowInternal(user.UserName);
                    }
                }
                break;

            case "online":
                DispatcherHelper.BeginInvoke(
                    new Action(
                        () =>
                        ConversationItems.Add(new JidItem()
                {
                    UserName  = from,
                    GroupName = _uniqueName,
                    Status    = status
                })));
                break;

            default:
                break;
            }
            RefreshContent();
        }