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(); }