Added OnIncomingMessages (for loading messages from json array)
This commit is contained in:
@@ -82,8 +82,7 @@ namespace PolyChat
|
||||
Debug.WriteLine("--- Controller.OnMessage ---");
|
||||
if (data != null && data.Length > 0 && data[0] != null)
|
||||
{
|
||||
Debug.WriteLine("Message: " + data[0]);
|
||||
Debug.WriteLine($"RAW: {data[0].ToString()}");
|
||||
Debug.WriteLine("RAW: " + data[0]);
|
||||
UIController.OnIncomingMessage(ip, data[0].ToString());
|
||||
}
|
||||
else Debug.WriteLine("Undefined: " + data);
|
||||
@@ -94,8 +93,8 @@ namespace PolyChat
|
||||
Connections[IP].Close();
|
||||
Connections.Remove(IP);
|
||||
UIController.OnChatPartnerDeleted(IP);
|
||||
if(!wasConnected)
|
||||
UIController.ShowConnectionError("Connection close", IP, $"Connection to {IP} failed...");
|
||||
string heading = wasConnected ? "Connection Closed" : "Connection Failed";
|
||||
UIController.ShowConnectionError(IP, heading, $"Connecting to {IP} failed...");
|
||||
}
|
||||
|
||||
public string getIP()
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
using PolyChat.Models;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using PolyChat.Models;
|
||||
using PolyChat.Util;
|
||||
using PolyChat.Views;
|
||||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Windows.UI.Core;
|
||||
@@ -36,7 +38,7 @@ namespace PolyChat
|
||||
updateSendButtonEnabled();
|
||||
}
|
||||
|
||||
public async void ShowConnectionError(string code, string heading, string message)
|
||||
public async void ShowConnectionError(string param, string heading, string message)
|
||||
{
|
||||
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
|
||||
{
|
||||
@@ -48,10 +50,10 @@ namespace PolyChat
|
||||
"Retry",
|
||||
() =>
|
||||
{
|
||||
Controller.Connect(code);
|
||||
Controller.Connect(param);
|
||||
Partners.Add(new ChatPartner(
|
||||
"Connecting...",
|
||||
code
|
||||
param
|
||||
));
|
||||
updateNoChatsPlaceholder();
|
||||
}
|
||||
@@ -122,10 +124,32 @@ namespace PolyChat
|
||||
/// Adds an message to the UI, based on .sender if known
|
||||
/// </summary>
|
||||
/// <param name="message">ChatMessage</param>
|
||||
public void OnIncomingMessage(string origin, string json)
|
||||
public async void OnIncomingMessage(string origin, string json)
|
||||
{
|
||||
ChatPartner sendingPartner = Partners.FirstOrDefault(p => p.Code == origin);
|
||||
sendingPartner.AddMessage(new ChatMessage(origin, json));
|
||||
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
|
||||
{
|
||||
ChatPartner sendingPartner = Partners.FirstOrDefault(p => p.Code == origin);
|
||||
sendingPartner.AddMessage(new ChatMessage(origin, json));
|
||||
});
|
||||
}
|
||||
public async void OnIncomingMessages(string origin, string json)
|
||||
{
|
||||
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
|
||||
{
|
||||
ChatPartner sendingPartner = Partners.FirstOrDefault(p => p.Code == origin);
|
||||
JArray arr = JArray.Parse(json);
|
||||
foreach (JObject item in arr)
|
||||
{
|
||||
sendingPartner.AddMessage(
|
||||
new ChatMessage(
|
||||
origin,
|
||||
item["type"].ToString(),
|
||||
item["content"].ToString()//,
|
||||
//DateTime.Parse(item["timestamp"].ToString())
|
||||
)
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void OnDeleteChat(object sender = null, RoutedEventArgs e = null)
|
||||
|
||||
@@ -11,7 +11,13 @@ namespace PolyChat.Models
|
||||
public string Content;
|
||||
public DateTime TimeStamp;
|
||||
public readonly bool Foreign;
|
||||
//
|
||||
|
||||
/// <summary>
|
||||
/// Create own Message (directly sent)
|
||||
/// </summary>
|
||||
/// <param name="origin">My IP</param>
|
||||
/// <param name="type">Message Type</param>
|
||||
/// <param name="content">Message Content (not JSON)</param>
|
||||
public ChatMessage(string origin, string type, string content)
|
||||
{
|
||||
Origin = origin;
|
||||
@@ -23,6 +29,28 @@ namespace PolyChat.Models
|
||||
Debug.WriteLine("Created Message: " + ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create Message loaded with timestamp
|
||||
/// </summary>
|
||||
/// <param name="origin">Origin IP</param>
|
||||
/// <param name="type">Message Type</param>
|
||||
/// <param name="content">Message Content (not JSON)</param>
|
||||
/// <param name="timeStamp">Message Content (not JSON)</param>
|
||||
public ChatMessage(string origin, string type, string content, DateTime timeStamp, bool foreign = false)
|
||||
{
|
||||
Origin = origin;
|
||||
TimeStamp = timeStamp;
|
||||
Type = type;
|
||||
Content = content;
|
||||
Foreign = foreign;
|
||||
Debug.WriteLine("Created Loaded Message: " + ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create foreign Message (directly incoming)
|
||||
/// </summary>
|
||||
/// <param name="origin">Foreign IP</param>
|
||||
/// <param name="json">Message Content as JSON with type and content</param>
|
||||
public ChatMessage(string origin, string json)
|
||||
{
|
||||
Origin = origin;
|
||||
|
||||
Reference in New Issue
Block a user