|
|
|
@ -13,7 +13,8 @@ namespace BookAStar.Pages
|
|
|
|
{
|
|
|
|
{
|
|
|
|
public partial class ChatPage : TabbedPage
|
|
|
|
public partial class ChatPage : TabbedPage
|
|
|
|
{
|
|
|
|
{
|
|
|
|
public ObservableCollection<UserMessage> Messages { get; set; }
|
|
|
|
public ObservableCollection<ChatMessage> Messages { get; set; }
|
|
|
|
|
|
|
|
public ObservableCollection<ChatMessage> Notifs { get; set; }
|
|
|
|
public string ChatUser { get; set; }
|
|
|
|
public string ChatUser { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
public ChatPage()
|
|
|
|
public ChatPage()
|
|
|
|
@ -28,6 +29,8 @@ namespace BookAStar.Pages
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
ConnectionState cs = App.ChatHubConnection.State;
|
|
|
|
|
|
|
|
|
|
|
|
await App.CurrentApp.ChatHubProxy.Invoke<string>("Send", ChatUser, messageEntry.Text);
|
|
|
|
await App.CurrentApp.ChatHubProxy.Invoke<string>("Send", ChatUser, messageEntry.Text);
|
|
|
|
messageEntry.Text = null;
|
|
|
|
messageEntry.Text = null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -38,19 +41,32 @@ namespace BookAStar.Pages
|
|
|
|
|
|
|
|
|
|
|
|
IsBusy = false;
|
|
|
|
IsBusy = false;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
// contactPicker.DisplayProperty = "UserName";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
messageList.ItemsSource = Messages = new ObservableCollection<UserMessage>();
|
|
|
|
sendPVButton.Clicked += async (sender, args) =>
|
|
|
|
PVList.ItemsSource = DataManager.Current.PrivateMessages;
|
|
|
|
{
|
|
|
|
App.CurrentApp.ChatHubConnection.StateChanged += ChatHubConnection_StateChanged;
|
|
|
|
IsBusy = true;
|
|
|
|
// DataManager.Current.Contacts
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
await App.CurrentApp.ChatHubProxy.Invoke<string>("SendPV", ChatUser, pvEntry.Text);
|
|
|
|
|
|
|
|
pvEntry.Text = null;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
Debug.WriteLine(ex);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IsBusy = false;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
messageList.ItemsSource = Messages = new ObservableCollection<ChatMessage>();
|
|
|
|
|
|
|
|
notifList.ItemsSource = Notifs = new ObservableCollection<ChatMessage>();
|
|
|
|
|
|
|
|
App.ChatHubConnection.StateChanged += ChatHubConnection_StateChanged;
|
|
|
|
MainSettings.UserChanged += MainSettings_UserChanged;
|
|
|
|
MainSettings.UserChanged += MainSettings_UserChanged;
|
|
|
|
MainSettings_UserChanged(this, null);
|
|
|
|
MainSettings_UserChanged(this, null);
|
|
|
|
|
|
|
|
|
|
|
|
App.CurrentApp.ChatHubProxy.On<string, string>("addMessage", (n, m) =>
|
|
|
|
App.CurrentApp.ChatHubProxy.On<string, string>("addMessage", (n, m) =>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Messages.Add(new UserMessage
|
|
|
|
Messages.Add(new ChatMessage
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Message = m,
|
|
|
|
Message = m,
|
|
|
|
SenderId = n,
|
|
|
|
SenderId = n,
|
|
|
|
@ -58,9 +74,9 @@ namespace BookAStar.Pages
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
App.CurrentApp.ChatHubProxy.On<string, string>("addMessage", (n, m) =>
|
|
|
|
App.CurrentApp.ChatHubProxy.On<string, string>("notify", (n, m) =>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Messages.Add(new UserMessage
|
|
|
|
Notifs.Add(new ChatMessage
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Message = m,
|
|
|
|
Message = m,
|
|
|
|
SenderId = n,
|
|
|
|
SenderId = n,
|
|
|
|
@ -69,15 +85,25 @@ namespace BookAStar.Pages
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void ReconnectButton_Clicked(object sender, EventArgs e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
App.ChatHubConnection.Stop();
|
|
|
|
|
|
|
|
App.ChatHubConnection.Start();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void MainSettings_UserChanged(object sender, EventArgs e)
|
|
|
|
private void MainSettings_UserChanged(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
ChatUser = MainSettings.UserName;
|
|
|
|
ChatUser = MainSettings.UserName;
|
|
|
|
contactPicker.ItemsSource = DataManager.Current.Contacts;
|
|
|
|
contactPicker.ItemsSource = DataManager.Current.Contacts;
|
|
|
|
|
|
|
|
PVList.ItemsSource = DataManager.Current.PrivateMessages;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void ChatHubConnection_StateChanged(StateChange obj)
|
|
|
|
private void ChatHubConnection_StateChanged(StateChange obj)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
Xamarin.Forms.Device.BeginInvokeOnMainThread(
|
|
|
|
|
|
|
|
() => {
|
|
|
|
sendButton.IsEnabled = obj.NewState == ConnectionState.Connected;
|
|
|
|
sendButton.IsEnabled = obj.NewState == ConnectionState.Connected;
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|