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);
|
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));
|
await ctx.Chat.SendTo(ctx.User, new CommandResponseS2CPacket(msgId, LCR.MESSAGE_DELETE_ERROR));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,14 +70,12 @@ public partial class MariaDBEventStorage(string connString) : EventStorage {
|
||||||
return new StoredEventInfo(
|
return new StoredEventInfo(
|
||||||
reader.GetInt64("event_id"),
|
reader.GetInt64("event_id"),
|
||||||
Encoding.ASCII.GetString((byte[])reader["event_type"]),
|
Encoding.ASCII.GetString((byte[])reader["event_type"]),
|
||||||
reader.IsDBNull(reader.GetOrdinal("event_sender")) ? null : new User(
|
reader.IsDBNull(reader.GetOrdinal("event_sender")) ? null : reader.GetInt64("event_sender").ToString(),
|
||||||
reader.GetInt64("event_sender").ToString(),
|
reader.IsDBNull(reader.GetOrdinal("event_sender_name")) ? string.Empty : reader.GetString("event_sender_name"),
|
||||||
reader.IsDBNull(reader.GetOrdinal("event_sender_name")) ? string.Empty : reader.GetString("event_sender_name"),
|
ColourInheritable.FromMisuzu(reader.GetInt32("event_sender_colour")),
|
||||||
ColourInheritable.FromMisuzu(reader.GetInt32("event_sender_colour")),
|
reader.GetInt32("event_sender_rank"),
|
||||||
reader.GetInt32("event_sender_rank"),
|
FromStoredPermissions((StoredUserPermissions)reader.GetInt32("event_sender_perms")),
|
||||||
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_nick")) ? string.Empty : reader.GetString("event_sender_nick")
|
|
||||||
),
|
|
||||||
DateTimeOffset.FromUnixTimeSeconds(reader.GetInt32("event_created")),
|
DateTimeOffset.FromUnixTimeSeconds(reader.GetInt32("event_created")),
|
||||||
reader.IsDBNull(reader.GetOrdinal("event_deleted")) ? null : DateTimeOffset.FromUnixTimeSeconds(reader.GetInt32("event_deleted")),
|
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"]),
|
reader.IsDBNull(reader.GetOrdinal("event_target")) ? null : Encoding.ASCII.GetString((byte[])reader["event_target"]),
|
||||||
|
|
|
@ -5,19 +5,31 @@ namespace SharpChat.EventStorage;
|
||||||
public class StoredEventInfo(
|
public class StoredEventInfo(
|
||||||
long id,
|
long id,
|
||||||
string type,
|
string type,
|
||||||
User? sender,
|
string? senderId,
|
||||||
|
string senderName,
|
||||||
|
ColourInheritable senderColour,
|
||||||
|
int senderRank,
|
||||||
|
UserPermissions senderPermissions,
|
||||||
|
string senderNickName,
|
||||||
DateTimeOffset created,
|
DateTimeOffset created,
|
||||||
DateTimeOffset? deleted,
|
DateTimeOffset? deleted,
|
||||||
string? channelName,
|
string? channelName,
|
||||||
JsonDocument data,
|
JsonDocument data,
|
||||||
StoredEventFlags flags
|
StoredEventFlags flags
|
||||||
) {
|
) {
|
||||||
public long Id { get; set; } = id;
|
public long Id { get; } = id;
|
||||||
public string Type { get; set; } = type;
|
public string Type { get; } = type;
|
||||||
public User? Sender { get; set; } = sender;
|
public string? SenderId { get; } = senderId;
|
||||||
public DateTimeOffset Created { get; set; } = created;
|
public string SenderName { get; } = senderName;
|
||||||
public DateTimeOffset? Deleted { get; set; } = deleted;
|
public ColourInheritable SenderColour { get; } = senderColour;
|
||||||
public string? ChannelName { get; set; } = channelName;
|
public int SenderRank { get; } = senderRank;
|
||||||
public StoredEventFlags Flags { get; set; } = flags;
|
public UserPermissions SenderPermissions { get; } = senderPermissions;
|
||||||
public JsonDocument Data { get; set; } = data;
|
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(
|
new(
|
||||||
id,
|
id,
|
||||||
type,
|
type,
|
||||||
long.TryParse(senderId, out long senderId64) && senderId64 > 0
|
long.TryParse(senderId, out long senderId64) && senderId64 > 0 ? senderId : null,
|
||||||
? new User(
|
senderName,
|
||||||
senderId,
|
senderColour,
|
||||||
senderName,
|
senderRank,
|
||||||
senderColour,
|
senderPerms,
|
||||||
senderRank,
|
senderNick,
|
||||||
senderPerms,
|
|
||||||
senderNick
|
|
||||||
)
|
|
||||||
: null,
|
|
||||||
DateTimeOffset.Now,
|
DateTimeOffset.Now,
|
||||||
null,
|
null,
|
||||||
channelName,
|
channelName,
|
||||||
JsonDocument.Parse(data == null ? "{}" : JsonSerializer.Serialize(data)),
|
JsonDocument.Parse(data == null ? "{}" : JsonSerializer.Serialize(data)),
|
||||||
flags
|
flags
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,24 +20,24 @@ public class ContextMessageS2CPacket(StoredEventInfo evt, bool notify = false) :
|
||||||
switch(Event.Type) {
|
switch(Event.Type) {
|
||||||
case "msg:add":
|
case "msg:add":
|
||||||
case "SharpChat.Events.ChatMessage":
|
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");
|
sb.Append("-1\tChatBot\tinherit\t\t0\fsay\f");
|
||||||
} else {
|
} else {
|
||||||
sb.Append(Event.Sender.UserId);
|
sb.Append(Event.SenderId);
|
||||||
sb.Append('\t');
|
sb.Append('\t');
|
||||||
sb.Append(Event.Sender.LegacyNameWithStatus);
|
sb.Append(Event.SenderLegacyName);
|
||||||
sb.Append('\t');
|
sb.Append('\t');
|
||||||
sb.Append(Event.Sender.Colour);
|
sb.Append(Event.SenderColour);
|
||||||
sb.Append('\t');
|
sb.Append('\t');
|
||||||
sb.Append(Event.Sender.Rank);
|
sb.Append(Event.SenderRank);
|
||||||
sb.Append(' ');
|
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(' ');
|
||||||
sb.Append(Event.Sender.Permissions.HasFlag(UserPermissions.ViewLogs) ? '1' : '0');
|
sb.Append(Event.SenderPermissions.HasFlag(UserPermissions.ViewLogs) ? '1' : '0');
|
||||||
sb.Append(' ');
|
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(' ');
|
||||||
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');
|
sb.Append('\t');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,19 +59,19 @@ public class ContextMessageS2CPacket(StoredEventInfo evt, bool notify = false) :
|
||||||
case "user:connect":
|
case "user:connect":
|
||||||
case "SharpChat.Events.UserConnectEvent":
|
case "SharpChat.Events.UserConnectEvent":
|
||||||
sb.Append("-1\tChatBot\tinherit\t\t0\fjoin\f");
|
sb.Append("-1\tChatBot\tinherit\t\t0\fjoin\f");
|
||||||
sb.Append(Event.Sender?.LegacyName ?? "?????");
|
sb.Append(Event.SenderLegacyName);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "chan:join":
|
case "chan:join":
|
||||||
case "SharpChat.Events.UserChannelJoinEvent":
|
case "SharpChat.Events.UserChannelJoinEvent":
|
||||||
sb.Append("-1\tChatBot\tinherit\t\t0\fjchan\f");
|
sb.Append("-1\tChatBot\tinherit\t\t0\fjchan\f");
|
||||||
sb.Append(Event.Sender?.LegacyName ?? "?????");
|
sb.Append(Event.SenderLegacyName);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "chan:leave":
|
case "chan:leave":
|
||||||
case "SharpChat.Events.UserChannelLeaveEvent":
|
case "SharpChat.Events.UserChannelLeaveEvent":
|
||||||
sb.Append("-1\tChatBot\tinherit\t\t0\flchan\f");
|
sb.Append("-1\tChatBot\tinherit\t\t0\flchan\f");
|
||||||
sb.Append(Event.Sender?.LegacyName ?? "?????");
|
sb.Append(Event.SenderLegacyName);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "user:disconnect":
|
case "user:disconnect":
|
||||||
|
@ -95,7 +95,7 @@ public class ContextMessageS2CPacket(StoredEventInfo evt, bool notify = false) :
|
||||||
}
|
}
|
||||||
|
|
||||||
sb.Append('\f');
|
sb.Append('\f');
|
||||||
sb.Append(Event.Sender?.LegacyName ?? "?????");
|
sb.Append(Event.SenderLegacyName);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue