Decoupled StoredEventInfo from the User class.
This commit is contained in:
parent
b4aa5873c3
commit
8eff4127b5
5 changed files with 48 additions and 42 deletions
SharpChat
ClientCommands
EventStorage
SockChat/S2CPackets
|
@ -29,7 +29,7 @@ public class DeleteMessageClientCommand : ClientCommand {
|
|||
|
||||
StoredEventInfo? delMsg = await ctx.Chat.Events.GetEvent(delSeqId);
|
||||
|
||||
if(delMsg?.Sender is null || delMsg.Sender.Rank > ctx.User.Rank || (!deleteAnyMessage && delMsg.Sender.UserId != ctx.User.UserId)) {
|
||||
if(delMsg?.SenderId is null || delMsg.SenderRank > ctx.User.Rank || (!deleteAnyMessage && delMsg.SenderId != ctx.User.UserId)) {
|
||||
await ctx.Chat.SendTo(ctx.User, new CommandResponseS2CPacket(msgId, LCR.MESSAGE_DELETE_ERROR));
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -70,14 +70,12 @@ public partial class MariaDBEventStorage(string connString) : EventStorage {
|
|||
return new StoredEventInfo(
|
||||
reader.GetInt64("event_id"),
|
||||
Encoding.ASCII.GetString((byte[])reader["event_type"]),
|
||||
reader.IsDBNull(reader.GetOrdinal("event_sender")) ? null : new User(
|
||||
reader.GetInt64("event_sender").ToString(),
|
||||
reader.IsDBNull(reader.GetOrdinal("event_sender_name")) ? string.Empty : reader.GetString("event_sender_name"),
|
||||
ColourInheritable.FromMisuzu(reader.GetInt32("event_sender_colour")),
|
||||
reader.GetInt32("event_sender_rank"),
|
||||
FromStoredPermissions((StoredUserPermissions)reader.GetInt32("event_sender_perms")),
|
||||
reader.IsDBNull(reader.GetOrdinal("event_sender_nick")) ? string.Empty : reader.GetString("event_sender_nick")
|
||||
),
|
||||
reader.IsDBNull(reader.GetOrdinal("event_sender")) ? null : reader.GetInt64("event_sender").ToString(),
|
||||
reader.IsDBNull(reader.GetOrdinal("event_sender_name")) ? string.Empty : reader.GetString("event_sender_name"),
|
||||
ColourInheritable.FromMisuzu(reader.GetInt32("event_sender_colour")),
|
||||
reader.GetInt32("event_sender_rank"),
|
||||
FromStoredPermissions((StoredUserPermissions)reader.GetInt32("event_sender_perms")),
|
||||
reader.IsDBNull(reader.GetOrdinal("event_sender_nick")) ? string.Empty : reader.GetString("event_sender_nick"),
|
||||
DateTimeOffset.FromUnixTimeSeconds(reader.GetInt32("event_created")),
|
||||
reader.IsDBNull(reader.GetOrdinal("event_deleted")) ? null : DateTimeOffset.FromUnixTimeSeconds(reader.GetInt32("event_deleted")),
|
||||
reader.IsDBNull(reader.GetOrdinal("event_target")) ? null : Encoding.ASCII.GetString((byte[])reader["event_target"]),
|
||||
|
|
|
@ -5,19 +5,31 @@ namespace SharpChat.EventStorage;
|
|||
public class StoredEventInfo(
|
||||
long id,
|
||||
string type,
|
||||
User? sender,
|
||||
string? senderId,
|
||||
string senderName,
|
||||
ColourInheritable senderColour,
|
||||
int senderRank,
|
||||
UserPermissions senderPermissions,
|
||||
string senderNickName,
|
||||
DateTimeOffset created,
|
||||
DateTimeOffset? deleted,
|
||||
string? channelName,
|
||||
JsonDocument data,
|
||||
StoredEventFlags flags
|
||||
) {
|
||||
public long Id { get; set; } = id;
|
||||
public string Type { get; set; } = type;
|
||||
public User? Sender { get; set; } = sender;
|
||||
public DateTimeOffset Created { get; set; } = created;
|
||||
public DateTimeOffset? Deleted { get; set; } = deleted;
|
||||
public string? ChannelName { get; set; } = channelName;
|
||||
public StoredEventFlags Flags { get; set; } = flags;
|
||||
public JsonDocument Data { get; set; } = data;
|
||||
public long Id { get; } = id;
|
||||
public string Type { get; } = type;
|
||||
public string? SenderId { get; } = senderId;
|
||||
public string SenderName { get; } = senderName;
|
||||
public ColourInheritable SenderColour { get; } = senderColour;
|
||||
public int SenderRank { get; } = senderRank;
|
||||
public UserPermissions SenderPermissions { get; } = senderPermissions;
|
||||
public string SenderNickName { get; } = senderNickName;
|
||||
public DateTimeOffset Created { get; } = created;
|
||||
public DateTimeOffset? Deleted { get; } = deleted;
|
||||
public string? ChannelName { get; } = channelName;
|
||||
public StoredEventFlags Flags { get; } = flags;
|
||||
public JsonDocument Data { get; } = data;
|
||||
|
||||
public string SenderLegacyName => string.IsNullOrWhiteSpace(SenderNickName) ? SenderName : $"~{SenderNickName}";
|
||||
}
|
||||
|
|
|
@ -23,23 +23,19 @@ public class VirtualEventStorage : EventStorage {
|
|||
new(
|
||||
id,
|
||||
type,
|
||||
long.TryParse(senderId, out long senderId64) && senderId64 > 0
|
||||
? new User(
|
||||
senderId,
|
||||
senderName,
|
||||
senderColour,
|
||||
senderRank,
|
||||
senderPerms,
|
||||
senderNick
|
||||
)
|
||||
: null,
|
||||
long.TryParse(senderId, out long senderId64) && senderId64 > 0 ? senderId : null,
|
||||
senderName,
|
||||
senderColour,
|
||||
senderRank,
|
||||
senderPerms,
|
||||
senderNick,
|
||||
DateTimeOffset.Now,
|
||||
null,
|
||||
channelName,
|
||||
JsonDocument.Parse(data == null ? "{}" : JsonSerializer.Serialize(data)),
|
||||
flags
|
||||
)
|
||||
);
|
||||
);
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
|
|
@ -20,24 +20,24 @@ public class ContextMessageS2CPacket(StoredEventInfo evt, bool notify = false) :
|
|||
switch(Event.Type) {
|
||||
case "msg:add":
|
||||
case "SharpChat.Events.ChatMessage":
|
||||
if(isBroadcast || Event.Sender is null) {
|
||||
if(isBroadcast || Event.SenderId is null) {
|
||||
sb.Append("-1\tChatBot\tinherit\t\t0\fsay\f");
|
||||
} else {
|
||||
sb.Append(Event.Sender.UserId);
|
||||
sb.Append(Event.SenderId);
|
||||
sb.Append('\t');
|
||||
sb.Append(Event.Sender.LegacyNameWithStatus);
|
||||
sb.Append(Event.SenderLegacyName);
|
||||
sb.Append('\t');
|
||||
sb.Append(Event.Sender.Colour);
|
||||
sb.Append(Event.SenderColour);
|
||||
sb.Append('\t');
|
||||
sb.Append(Event.Sender.Rank);
|
||||
sb.Append(Event.SenderRank);
|
||||
sb.Append(' ');
|
||||
sb.Append(Event.Sender.Permissions.HasFlag(UserPermissions.KickUser) ? '1' : '0');
|
||||
sb.Append(Event.SenderPermissions.HasFlag(UserPermissions.KickUser) ? '1' : '0');
|
||||
sb.Append(' ');
|
||||
sb.Append(Event.Sender.Permissions.HasFlag(UserPermissions.ViewLogs) ? '1' : '0');
|
||||
sb.Append(Event.SenderPermissions.HasFlag(UserPermissions.ViewLogs) ? '1' : '0');
|
||||
sb.Append(' ');
|
||||
sb.Append(Event.Sender.Permissions.HasFlag(UserPermissions.SetOwnNickname) ? '1' : '0');
|
||||
sb.Append(Event.SenderPermissions.HasFlag(UserPermissions.SetOwnNickname) ? '1' : '0');
|
||||
sb.Append(' ');
|
||||
sb.Append(Event.Sender.Permissions.HasFlag(UserPermissions.CreateChannel) ? (Event.Sender.Permissions.HasFlag(UserPermissions.SetChannelPermanent) ? '2' : '1') : '0');
|
||||
sb.Append(Event.SenderPermissions.HasFlag(UserPermissions.CreateChannel) ? (Event.SenderPermissions.HasFlag(UserPermissions.SetChannelPermanent) ? '2' : '1') : '0');
|
||||
sb.Append('\t');
|
||||
}
|
||||
|
||||
|
@ -59,19 +59,19 @@ public class ContextMessageS2CPacket(StoredEventInfo evt, bool notify = false) :
|
|||
case "user:connect":
|
||||
case "SharpChat.Events.UserConnectEvent":
|
||||
sb.Append("-1\tChatBot\tinherit\t\t0\fjoin\f");
|
||||
sb.Append(Event.Sender?.LegacyName ?? "?????");
|
||||
sb.Append(Event.SenderLegacyName);
|
||||
break;
|
||||
|
||||
case "chan:join":
|
||||
case "SharpChat.Events.UserChannelJoinEvent":
|
||||
sb.Append("-1\tChatBot\tinherit\t\t0\fjchan\f");
|
||||
sb.Append(Event.Sender?.LegacyName ?? "?????");
|
||||
sb.Append(Event.SenderLegacyName);
|
||||
break;
|
||||
|
||||
case "chan:leave":
|
||||
case "SharpChat.Events.UserChannelLeaveEvent":
|
||||
sb.Append("-1\tChatBot\tinherit\t\t0\flchan\f");
|
||||
sb.Append(Event.Sender?.LegacyName ?? "?????");
|
||||
sb.Append(Event.SenderLegacyName);
|
||||
break;
|
||||
|
||||
case "user:disconnect":
|
||||
|
@ -95,7 +95,7 @@ public class ContextMessageS2CPacket(StoredEventInfo evt, bool notify = false) :
|
|||
}
|
||||
|
||||
sb.Append('\f');
|
||||
sb.Append(Event.Sender?.LegacyName ?? "?????");
|
||||
sb.Append(Event.SenderLegacyName);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue