Added BoardcastMessage, Username Changed event via Broadcast, remove json parsing from ChatMessage

This commit is contained in:
Patrick Hellebrand
2021-09-23 10:56:10 +02:00
parent f2b0af08c5
commit 871ed22956
4 changed files with 33 additions and 25 deletions

View File

@@ -80,6 +80,15 @@ namespace PolyChat
});
}
public void SendBroadcastMessage(string type, string content)
{
Debug.WriteLine("--- Controller.Broadcast ---");
foreach (KeyValuePair<string, Connection> entry in Connections)
{
SendMessage(entry.Key, type, content);
}
}
public void SendMessage(string ip, string type, string content)
{
Debug.WriteLine("--- Controller.SendMessage ---");
@@ -111,7 +120,7 @@ namespace PolyChat
Connections[IP].Close();
Connections.Remove(IP);
}
CloseChatUI(IP,wasConnected);
CloseChatUI(IP, wasConnected);
}
private void CloseChatUI(string IP, bool wasConnected = true)
@@ -123,7 +132,7 @@ namespace PolyChat
private bool isInConnections(string IP)
{
if(Connections.ContainsKey(IP))
if (Connections.ContainsKey(IP))
return true;
return false;
}

View File

@@ -6,6 +6,7 @@ using System;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Windows.UI.Core;
using Windows.UI.Xaml;
@@ -99,8 +100,8 @@ namespace PolyChat
if (result == ContentDialogResult.Primary)
{
username = dialog.getValue();
if (username.Length == 0) textUsername.Text = "Unknown";
else textUsername.Text = username;
textUsername.Text = username;
Controller.SendBroadcastMessage("username", username);
}
updateNoUsernamePlaceholder();
}
@@ -128,8 +129,19 @@ namespace PolyChat
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
var doc = JsonDocument.Parse(json).RootElement;
string type = doc.GetProperty("type").GetString();
string content = doc.GetProperty("content").GetString();
ChatPartner sendingPartner = Partners.FirstOrDefault(p => p.Code == origin);
sendingPartner.AddMessage(new ChatMessage(origin, json));
switch (type)
{
case "username":
sendingPartner.SetName(Name);
break;
default:
sendingPartner.AddMessage(new ChatMessage(origin, type, content));
break;
}
});
}
public async void OnIncomingMessages(string origin, string json)
@@ -145,7 +157,7 @@ namespace PolyChat
origin,
item["type"].ToString(),
item["content"].ToString()//,
//DateTime.Parse(item["timestamp"].ToString())
//DateTime.Parse(item["timestamp"].ToString())
)
);
}

View File

@@ -24,7 +24,7 @@ namespace PolyChat.Models
TimeStamp = DateTime.Now;
Type = type;
Content = content;
// no json = my messages
// TODO
Foreign = false;
Debug.WriteLine("Created Message: " + ToString());
}
@@ -46,24 +46,6 @@ namespace PolyChat.Models
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;
// parse and save to object
var obj = JsonDocument.Parse(json).RootElement;
Type = obj.GetProperty("type").GetString();
Content = obj.GetProperty("content").GetString();
TimeStamp = DateTime.Now;
// json = foreign
Foreign = true;
Debug.WriteLine("Created Message: " + ToString());
}
override
public string ToString()
{

View File

@@ -24,5 +24,10 @@ namespace PolyChat.Models
{
Messages.Add(message);
}
public void SetName(string name)
{
Name = name;
}
}
}