diff --git a/SharpChat.SockChat/SockChatContext.cs b/SharpChat.SockChat/SockChatContext.cs index 38eaaef..d0bcf5c 100644 --- a/SharpChat.SockChat/SockChatContext.cs +++ b/SharpChat.SockChat/SockChatContext.cs @@ -262,19 +262,12 @@ namespace SharpChat { public void HandleChannelEventLog(string channelName, Action handler) { foreach(ChatEventInfo info in EventStorage.GetChannelEventLog(channelName)) { - ISockChatS2CPacket? packet; - switch(info.Type) { case "msg:add": - string maText = string.Empty; - bool maAction = false; + if(info.Data is not MessageAddEventData msgAdd) + break; - if(info.Data is MessageAddEventData messageAdd) { - maText = messageAdd.Text; - maAction = messageAdd.IsAction; - } - - packet = new MessageAddLogS2CPacket( + handler(new MessageAddLogS2CPacket( info.Id, info.Created, info.SenderId, @@ -282,54 +275,47 @@ namespace SharpChat { info.SenderColour, info.SenderRank, info.SenderPerms, - maText, - maAction, + msgAdd.Text, + msgAdd.IsAction, info.ChannelName.StartsWith('@'), info.IsBroadcast, false - ); + )); break; case "user:connect": - packet = new UserConnectLogS2CPacket( + handler(new UserConnectLogS2CPacket( info.Id, info.Created, SockChatUtility.GetUserName(info) - ); + )); break; case "user:disconnect": - packet = new UserDisconnectLogS2CPacket( + handler(new UserDisconnectLogS2CPacket( info.Id, info.Created, SockChatUtility.GetUserName(info), info.Data is UserDisconnectEventData userDisconnect ? userDisconnect.Reason : UserDisconnectReason.Leave - ); + )); break; case "chan:join": - packet = new UserChannelJoinLogS2CPacket( + handler(new UserChannelJoinLogS2CPacket( info.Id, info.Created, SockChatUtility.GetUserName(info) - ); + )); break; case "chan:leave": - packet = new UserChannelLeaveLogS2CPacket( + handler(new UserChannelLeaveLogS2CPacket( info.Id, info.Created, SockChatUtility.GetUserName(info) - ); - break; - - default: - packet = null; + )); break; } - - if(packet != null) - handler(packet); } }