diff --git a/SharpChat/ChatChannel.cs b/SharpChat/ChatChannel.cs index 14a6219..06d3a6a 100644 --- a/SharpChat/ChatChannel.cs +++ b/SharpChat/ChatChannel.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; namespace SharpChat { - public class ChatChannel : IPacketTarget { + public class ChatChannel { public string Name { get; set; } public string Password { get; set; } = string.Empty; public bool IsTemporary { get; set; } = false; @@ -16,8 +16,6 @@ namespace SharpChat { public bool HasPassword => !string.IsNullOrWhiteSpace(Password); - public string TargetName => Name; - public ChatChannel() { } public ChatChannel(string name) { diff --git a/SharpChat/ChatContext.cs b/SharpChat/ChatContext.cs index 0c850d5..abadd5a 100644 --- a/SharpChat/ChatContext.cs +++ b/SharpChat/ChatContext.cs @@ -74,7 +74,7 @@ namespace SharpChat { conn.Send(new AuthSuccessPacket(user, chan, conn, maxMsgLength)); conn.Send(new ContextUsersPacket(chan.GetUsers(new[] { user }))); - foreach(IChatEvent msg in Events.GetTargetEventLog(chan.Name)) + foreach(IChatEvent msg in Events.GetChannelEventLog(chan.Name)) conn.Send(new ContextMessagePacket(msg)); lock(ChannelsAccess) @@ -148,7 +148,7 @@ namespace SharpChat { SendTo(user, new ContextClearPacket(chan, ContextClearMode.MessagesUsers)); SendTo(user, new ContextUsersPacket(chan.GetUsers(new[] { user }))); - foreach(IChatEvent msg in Events.GetTargetEventLog(chan.Name)) + foreach(IChatEvent msg in Events.GetChannelEventLog(chan.Name)) SendTo(user, new ContextMessagePacket(msg)); ForceChannel(user, chan); diff --git a/SharpChat/ChatUser.cs b/SharpChat/ChatUser.cs index 61a329c..8363c93 100644 --- a/SharpChat/ChatUser.cs +++ b/SharpChat/ChatUser.cs @@ -78,15 +78,13 @@ namespace SharpChat { } } - public class ChatUser : BasicUser, IPacketTarget { + public class ChatUser : BasicUser { public DateTimeOffset SilencedUntil { get; set; } private readonly List Channels = new(); public readonly ChatRateLimiter RateLimiter = new(); - public string TargetName => "@log"; - public ChatChannel Channel => Channels.FirstOrDefault(); // This needs to be a session thing diff --git a/SharpChat/Commands/ActionCommand.cs b/SharpChat/Commands/ActionCommand.cs index 5a56f88..60c4d57 100644 --- a/SharpChat/Commands/ActionCommand.cs +++ b/SharpChat/Commands/ActionCommand.cs @@ -18,8 +18,7 @@ namespace SharpChat.Commands { return null; return new ChatMessage { - Target = ctx.Channel, - TargetName = ctx.Channel.TargetName, + ChannelName = ctx.Channel.Name, DateTime = DateTimeOffset.UtcNow, Sender = ctx.User, Text = string.Join(' ', ctx.Args), diff --git a/SharpChat/Commands/WhisperCommand.cs b/SharpChat/Commands/WhisperCommand.cs index 7c63ddc..b6a018e 100644 --- a/SharpChat/Commands/WhisperCommand.cs +++ b/SharpChat/Commands/WhisperCommand.cs @@ -32,16 +32,14 @@ namespace SharpChat.Commands { ctx.Chat.SendTo(whisperUser, new ChatMessageAddPacket(new ChatMessage { DateTime = DateTimeOffset.Now, - Target = whisperUser, - TargetName = whisperUser.TargetName, + ChannelName = string.Empty, Sender = ctx.User, Text = whisperStr, Flags = ChatMessageFlags.Private, })); ctx.Chat.SendTo(ctx.User, new ChatMessageAddPacket(new ChatMessage { DateTime = DateTimeOffset.Now, - Target = whisperUser, - TargetName = whisperUser.TargetName, + ChannelName = string.Empty, Sender = ctx.User, Text = $"{whisperUser.DisplayName} {whisperStr}", Flags = ChatMessageFlags.Private, diff --git a/SharpChat/EventStorage/IEventStorage.cs b/SharpChat/EventStorage/IEventStorage.cs index 62ea469..7014692 100644 --- a/SharpChat/EventStorage/IEventStorage.cs +++ b/SharpChat/EventStorage/IEventStorage.cs @@ -7,6 +7,6 @@ namespace SharpChat.EventStorage { void AddEvent(IChatEvent evt); void RemoveEvent(IChatEvent evt); IChatEvent GetEvent(long seqId); - IEnumerable GetTargetEventLog(string target, int amount = 20, int offset = 0); + IEnumerable GetChannelEventLog(string channelName, int amount = 20, int offset = 0); } } diff --git a/SharpChat/EventStorage/MariaDBEventStorage.cs b/SharpChat/EventStorage/MariaDBEventStorage.cs index a052d46..978139f 100644 --- a/SharpChat/EventStorage/MariaDBEventStorage.cs +++ b/SharpChat/EventStorage/MariaDBEventStorage.cs @@ -28,7 +28,7 @@ namespace SharpChat.EventStorage { new MySqlParameter("id", evt.SequenceId), new MySqlParameter("created", evt.DateTime.ToUnixTimeSeconds()), new MySqlParameter("type", evt.GetType().FullName), - new MySqlParameter("target", evt.Target.TargetName), + new MySqlParameter("target", evt.ChannelName), new MySqlParameter("flags", (byte)evt.Flags), new MySqlParameter("data", JsonSerializer.SerializeToUtf8Bytes(evt, evt.GetType())), new MySqlParameter("sender", evt.Sender?.UserId < 1 ? null : (long?)evt.Sender.UserId), @@ -67,7 +67,7 @@ namespace SharpChat.EventStorage { Type evtType = Type.GetType(Encoding.ASCII.GetString((byte[])reader["event_type"])); IChatEvent evt = JsonSerializer.Deserialize(Encoding.ASCII.GetString((byte[])reader["event_data"]), evtType) as IChatEvent; evt.SequenceId = reader.GetInt64("event_id"); - evt.TargetName = Encoding.ASCII.GetString((byte[])reader["event_target"]); + evt.ChannelName = Encoding.ASCII.GetString((byte[])reader["event_target"]); evt.Flags = (ChatMessageFlags)reader.GetByte("event_flags"); evt.DateTime = DateTimeOffset.FromUnixTimeSeconds(reader.GetInt32("event_created")); @@ -85,7 +85,7 @@ namespace SharpChat.EventStorage { return evt; } - public IEnumerable GetTargetEventLog(string target, int amount = 20, int offset = 0) { + public IEnumerable GetChannelEventLog(string channelName, int amount = 20, int offset = 0) { List events = new(); try { @@ -98,7 +98,7 @@ namespace SharpChat.EventStorage { + " AND `event_id` > @offset" + " ORDER BY `event_id` DESC" + " LIMIT @amount", - new MySqlParameter("target", target), + new MySqlParameter("target", channelName), new MySqlParameter("amount", amount), new MySqlParameter("offset", offset) ); diff --git a/SharpChat/EventStorage/VirtualEventStorage.cs b/SharpChat/EventStorage/VirtualEventStorage.cs index d2d8dd5..9223eb8 100644 --- a/SharpChat/EventStorage/VirtualEventStorage.cs +++ b/SharpChat/EventStorage/VirtualEventStorage.cs @@ -23,8 +23,8 @@ namespace SharpChat.EventStorage { Events.Remove(evt.SequenceId); } - public IEnumerable GetTargetEventLog(string target, int amount = 20, int offset = 0) { - IEnumerable subset = Events.Values.Where(ev => ev.TargetName == target); + public IEnumerable GetChannelEventLog(string channelName, int amount = 20, int offset = 0) { + IEnumerable subset = Events.Values.Where(ev => ev.ChannelName == channelName); int start = subset.Count() - offset - amount; if(start < 0) { diff --git a/SharpChat/Events/ChatMessage.cs b/SharpChat/Events/ChatMessage.cs index a01bf43..f1c9069 100644 --- a/SharpChat/Events/ChatMessage.cs +++ b/SharpChat/Events/ChatMessage.cs @@ -7,10 +7,7 @@ namespace SharpChat.Events { public BasicUser Sender { get; set; } [JsonIgnore] - public IPacketTarget Target { get; set; } - - [JsonIgnore] - public string TargetName { get; set; } + public string ChannelName { get; set; } [JsonIgnore] public DateTimeOffset DateTime { get; set; } diff --git a/SharpChat/Events/IChatEvent.cs b/SharpChat/Events/IChatEvent.cs index d78b202..4fc1924 100644 --- a/SharpChat/Events/IChatEvent.cs +++ b/SharpChat/Events/IChatEvent.cs @@ -13,8 +13,7 @@ namespace SharpChat.Events { public interface IChatEvent { DateTimeOffset DateTime { get; set; } BasicUser Sender { get; set; } - IPacketTarget Target { get; set; } - string TargetName { get; set; } + string ChannelName { get; set; } ChatMessageFlags Flags { get; set; } long SequenceId { get; set; } } diff --git a/SharpChat/Events/UserChannelJoinEvent.cs b/SharpChat/Events/UserChannelJoinEvent.cs index fa54412..9789542 100644 --- a/SharpChat/Events/UserChannelJoinEvent.cs +++ b/SharpChat/Events/UserChannelJoinEvent.cs @@ -10,10 +10,7 @@ namespace SharpChat.Events { public BasicUser Sender { get; set; } [JsonIgnore] - public IPacketTarget Target { get; set; } - - [JsonIgnore] - public string TargetName { get; set; } + public string ChannelName { get; set; } [JsonIgnore] public ChatMessageFlags Flags { get; set; } = ChatMessageFlags.Log; @@ -22,11 +19,10 @@ namespace SharpChat.Events { public long SequenceId { get; set; } public UserChannelJoinEvent() { } - public UserChannelJoinEvent(DateTimeOffset joined, BasicUser user, IPacketTarget target) { + public UserChannelJoinEvent(DateTimeOffset joined, BasicUser user, ChatChannel channel) { DateTime = joined; Sender = user; - Target = target; - TargetName = target?.TargetName; + ChannelName = channel.Name; } } } diff --git a/SharpChat/Events/UserChannelLeaveEvent.cs b/SharpChat/Events/UserChannelLeaveEvent.cs index 3d52219..229b128 100644 --- a/SharpChat/Events/UserChannelLeaveEvent.cs +++ b/SharpChat/Events/UserChannelLeaveEvent.cs @@ -10,10 +10,7 @@ namespace SharpChat.Events { public BasicUser Sender { get; set; } [JsonIgnore] - public IPacketTarget Target { get; set; } - - [JsonIgnore] - public string TargetName { get; set; } + public string ChannelName { get; set; } [JsonIgnore] public ChatMessageFlags Flags { get; set; } = ChatMessageFlags.Log; @@ -22,11 +19,10 @@ namespace SharpChat.Events { public long SequenceId { get; set; } public UserChannelLeaveEvent() { } - public UserChannelLeaveEvent(DateTimeOffset parted, BasicUser user, IPacketTarget target) { + public UserChannelLeaveEvent(DateTimeOffset parted, BasicUser user, ChatChannel channel) { DateTime = parted; Sender = user; - Target = target; - TargetName = target?.TargetName; + ChannelName = channel.Name; } } } diff --git a/SharpChat/Events/UserConnectEvent.cs b/SharpChat/Events/UserConnectEvent.cs index 5d8ab69..ee7a44b 100644 --- a/SharpChat/Events/UserConnectEvent.cs +++ b/SharpChat/Events/UserConnectEvent.cs @@ -10,10 +10,7 @@ namespace SharpChat.Events { public BasicUser Sender { get; set; } [JsonIgnore] - public IPacketTarget Target { get; set; } - - [JsonIgnore] - public string TargetName { get; set; } + public string ChannelName { get; set; } [JsonIgnore] public ChatMessageFlags Flags { get; set; } = ChatMessageFlags.Log; @@ -22,11 +19,10 @@ namespace SharpChat.Events { public long SequenceId { get; set; } public UserConnectEvent() { } - public UserConnectEvent(DateTimeOffset joined, BasicUser user, IPacketTarget target) { + public UserConnectEvent(DateTimeOffset joined, BasicUser user, ChatChannel channel) { DateTime = joined; Sender = user; - Target = target; - TargetName = target?.TargetName; + ChannelName = channel.Name; } } } diff --git a/SharpChat/Events/UserDisconnectEvent.cs b/SharpChat/Events/UserDisconnectEvent.cs index 1705958..ca19b96 100644 --- a/SharpChat/Events/UserDisconnectEvent.cs +++ b/SharpChat/Events/UserDisconnectEvent.cs @@ -12,10 +12,7 @@ namespace SharpChat.Events { public BasicUser Sender { get; set; } [JsonIgnore] - public IPacketTarget Target { get; set; } - - [JsonIgnore] - public string TargetName { get; set; } + public string ChannelName { get; set; } [JsonIgnore] public ChatMessageFlags Flags { get; set; } = ChatMessageFlags.Log; @@ -27,11 +24,10 @@ namespace SharpChat.Events { public UserDisconnectReason Reason { get; set; } public UserDisconnectEvent() { } - public UserDisconnectEvent(DateTimeOffset parted, BasicUser user, IPacketTarget target, UserDisconnectReason reason) { + public UserDisconnectEvent(DateTimeOffset parted, BasicUser user, ChatChannel channel, UserDisconnectReason reason) { DateTime = parted; Sender = user; - Target = target; - TargetName = target?.TargetName; + ChannelName = channel.Name; Reason = reason; } } diff --git a/SharpChat/IPacketTarget.cs b/SharpChat/IPacketTarget.cs deleted file mode 100644 index af0d666..0000000 --- a/SharpChat/IPacketTarget.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace SharpChat { - public interface IPacketTarget { - string TargetName { get; } - } -} diff --git a/SharpChat/PacketHandlers/SendMessageHandler.cs b/SharpChat/PacketHandlers/SendMessageHandler.cs index d0f55b8..7f42ffa 100644 --- a/SharpChat/PacketHandlers/SendMessageHandler.cs +++ b/SharpChat/PacketHandlers/SendMessageHandler.cs @@ -88,8 +88,7 @@ namespace SharpChat.PacketHandlers { } message ??= new ChatMessage { - Target = channel, - TargetName = channel.TargetName, + ChannelName = channel.Name, DateTime = DateTimeOffset.UtcNow, Sender = user, Text = messageText,