using System; using System.Diagnostics; using System.Text.Json; namespace PolyChat.Models { public class ChatMessage { public string Origin; public string Type; public string Content; public DateTime TimeStamp; public readonly bool Foreign; /// /// Create own Message (directly sent) /// /// My IP /// Message Type /// Message Content (not JSON) public ChatMessage(string origin, string type, string content) { Origin = origin; TimeStamp = DateTime.Now; Type = type; Content = content; // no json = my messages Foreign = false; Debug.WriteLine("Created Message: " + ToString()); } /// /// Create Message loaded with timestamp /// /// Origin IP /// Message Type /// Message Content (not JSON) /// Message Content (not JSON) 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()); } /// /// Create foreign Message (directly incoming) /// /// Foreign IP /// Message Content as JSON with type and content 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() { string prefix = Foreign ? "Other" : "Me"; return $"{Type} from {prefix}: {Content}({Origin})"; } } }