From 5bb74b422b46c2be7b410e32aa65af8c5a872124 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Thu, 15 Dec 2016 14:39:47 +0100 Subject: [PATCH] Private messages refactoring --- BookAStar/BookAStar/App.xaml.cs | 15 +++++++++------ .../ViewModels/Messaging/ChatUserCollection.cs | 16 +++++++++++++++- .../ViewModels/Messaging/ChatUserInfo.cs | 11 ++++++++++- .../ViewModels/Messaging/ChatViewModel.cs | 2 -- 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/BookAStar/BookAStar/App.xaml.cs b/BookAStar/BookAStar/App.xaml.cs index b9995a00..00809aa3 100644 --- a/BookAStar/BookAStar/App.xaml.cs +++ b/BookAStar/BookAStar/App.xaml.cs @@ -347,14 +347,17 @@ namespace BookAStar chatHubProxy = chatHubConnection.CreateHubProxy("ChatHub"); chatHubProxy.On("addPV", (n, m) => { + var msg = new ChatMessage + { + Message = m, + SenderId = n, + Date = DateTime.Now + }; DataManager.Instance.PrivateMessages.Add( - new ChatMessage - { - Message = m, - SenderId = n, - Date = DateTime.Now - } + msg ); + DataManager.Instance.ChatUsers.OnPrivateMessage(msg); + }); } diff --git a/BookAStar/BookAStar/ViewModels/Messaging/ChatUserCollection.cs b/BookAStar/BookAStar/ViewModels/Messaging/ChatUserCollection.cs index a77f9523..227a6e8e 100644 --- a/BookAStar/BookAStar/ViewModels/Messaging/ChatUserCollection.cs +++ b/BookAStar/BookAStar/ViewModels/Messaging/ChatUserCollection.cs @@ -1,5 +1,6 @@ using BookAStar.Data; using BookAStar.Model.Social.Chat; +using BookAStar.Model.Social.Messaging; using System; using System.Collections.Generic; using System.Linq; @@ -16,7 +17,20 @@ namespace BookAStar.ViewModels.Messaging { } - + public void OnPrivateMessage(ChatMessage msg) + { + var sender = this.FirstOrDefault(user => user.Connections.Any( + cx => cx.ConnectionId == msg.SenderId + )); + if (sender != null) + { + sender.PrivateMessages.Add(msg); + } else + { + // TODO alert? or else get chat user info + // or else just display this message ... + } + } public override void Merge(ChatUserInfo item) { var key = GetKey(item); diff --git a/BookAStar/BookAStar/ViewModels/Messaging/ChatUserInfo.cs b/BookAStar/BookAStar/ViewModels/Messaging/ChatUserInfo.cs index 413666c3..b0cc26d1 100644 --- a/BookAStar/BookAStar/ViewModels/Messaging/ChatUserInfo.cs +++ b/BookAStar/BookAStar/ViewModels/Messaging/ChatUserInfo.cs @@ -7,6 +7,7 @@ using XLabs.Forms.Mvvm; using YavscLib; using System; using Newtonsoft.Json; +using BookAStar.Model.Social.Messaging; namespace BookAStar.Model.Social.Chat { @@ -131,7 +132,15 @@ namespace BookAStar.Model.Social.Chat throw new NotImplementedException(); } } - + ObservableCollection privateMessages ; + [JsonIgnore] + public ObservableCollection PrivateMessages + { + get + { + return privateMessages; + } + } public void OnConnected(string cxId) { diff --git a/BookAStar/BookAStar/ViewModels/Messaging/ChatViewModel.cs b/BookAStar/BookAStar/ViewModels/Messaging/ChatViewModel.cs index a6ebaa38..54b6ec3d 100644 --- a/BookAStar/BookAStar/ViewModels/Messaging/ChatViewModel.cs +++ b/BookAStar/BookAStar/ViewModels/Messaging/ChatViewModel.cs @@ -14,7 +14,6 @@ namespace BookAStar.ViewModels.Messaging { public ObservableCollection Messages { get; set; } public ObservableCollection Notifs { get; set; } - public ObservableCollection PVs { get; set; } public ChatUserCollection ChatUsers { get; set; } private ConnectionState state; @@ -29,7 +28,6 @@ namespace BookAStar.ViewModels.Messaging MainSettings.UserChanged += MainSettings_UserChanged; Messages = new ObservableCollection(); Notifs = new ObservableCollection(); - PVs = DataManager.Instance.PrivateMessages; ChatUsers = DataManager.Instance.ChatUsers; App.ChatHubProxy.On("addMessage", (n, m) => {