@ -7,7 +7,6 @@ using XLabs.Forms.Mvvm;
namespace BookAStar.ViewModels.Messaging
namespace BookAStar.ViewModels.Messaging
{
{
using Data ;
using Data ;
using Model ;
using Model.Social.Messaging ;
using Model.Social.Messaging ;
class ChatViewModel : ViewModel
class ChatViewModel : ViewModel
@ -15,19 +14,8 @@ namespace BookAStar.ViewModels.Messaging
public ObservableCollection < ChatMessage > Messages { get ; set ; }
public ObservableCollection < ChatMessage > Messages { get ; set ; }
public ObservableCollection < ChatMessage > Notifs { get ; set ; }
public ObservableCollection < ChatMessage > Notifs { get ; set ; }
public ObservableCollection < ChatMessage > PVs { get ; set ; }
public ObservableCollection < ChatMessage > PVs { get ; set ; }
public ObservableCollection < ClientProviderInfo > Contacts { get ; set ; }
public ObservableCollection < UserViewModel > Contacts { get ; set ; }
private string chatUser ;
public string ChatUser
{
get
{
return chatUser ;
}
set
{
SetProperty < string > ( ref chatUser , value ) ;
}
}
private ConnectionState state ;
private ConnectionState state ;
public ConnectionState State
public ConnectionState State
{
{
@ -41,7 +29,9 @@ namespace BookAStar.ViewModels.Messaging
Messages = new ObservableCollection < ChatMessage > ( ) ;
Messages = new ObservableCollection < ChatMessage > ( ) ;
Notifs = new ObservableCollection < ChatMessage > ( ) ;
Notifs = new ObservableCollection < ChatMessage > ( ) ;
PVs = DataManager . Current . PrivateMessages ;
PVs = DataManager . Current . PrivateMessages ;
Contacts = DataManager . Current . Contacts ;
Contacts =
new ObservableCollection < UserViewModel > (
DataManager . Current . Contacts . Select ( c = > new UserViewModel { Data = c } ) ) ;
App . ChatHubProxy . On < string , string > ( "addMessage" , ( n , m ) = >
App . ChatHubProxy . On < string , string > ( "addMessage" , ( n , m ) = >
{
{
Messages . Add ( new ChatMessage
Messages . Add ( new ChatMessage
@ -54,45 +44,44 @@ namespace BookAStar.ViewModels.Messaging
App . ChatHubProxy . On < string , string , string > ( "notify" , ( eventId , cxId , userName ) = >
App . ChatHubProxy . On < string , string , string > ( "notify" , ( eventId , cxId , userName ) = >
{
{
// TODO make admin possible
var msg = new ChatMessage
// by assigning a server side username to anonymous.
// From now, don't log anonymous
if ( ! string . IsNullOrEmpty ( userName ) )
{
Notifs . Add ( new ChatMessage
{
{
Message = eventId ,
Message = eventId ,
SenderId = userName ,
SenderId = userName ,
Date = DateTime . Now
Date = DateTime . Now
} ) ;
} ;
// TODO make admin possible
// by assigning a server side username to anonymous.
if ( string . IsNullOrEmpty ( userName ) )
{
msg . SenderId = $"({cxId})" ;
}
Notifs . Add ( msg ) ;
if ( eventId = = "connected" )
if ( eventId = = "connected" )
OnUserConnected ( cxId , userName ) ;
OnUserConnected ( cxId , userName ) ;
else if ( eventId = = "disconnected" )
else if ( eventId = = "disconnected" )
OnUserDisconnected ( userName ) ;
OnUserDisconnected ( userName ) ;
}
} ) ;
} ) ;
ChatUser = MainSettings . UserName ;
}
}
private void OnUserConnected ( string cxId , string userName )
private void OnUserConnected ( string cxId , string userName )
{
{
var user = Contacts . SingleOrDefault (
var user = Contacts . SingleOrDefault (
c = > c . UserName = = userName ) ;
c = > c . Data. UserName = = userName ) ;
if ( user ! = null )
if ( user ! = null )
user . C hatHubConnect ionId = cxId ;
user . C onnex ionId = cxId ;
}
}
private void OnUserDisconnected ( string userName )
private void OnUserDisconnected ( string userName )
{
{
var user = Contacts . SingleOrDefault (
var user = Contacts . SingleOrDefault (
c = > c . UserName = = userName ) ;
c = > c . Data. UserName = = userName ) ;
if ( user ! = null )
if ( user ! = null )
user . C hatHubConnect ionId = null ;
user . C onnex ionId = null ;
}
}
private void MainSettings_UserChanged ( object sender , EventArgs e )
private void MainSettings_UserChanged ( object sender , EventArgs e )
{
{
ChatUser = MainSettings . UserName ;
}
}
private void ChatHubConnection_StateChanged ( StateChange obj )
private void ChatHubConnection_StateChanged ( StateChange obj )