Reintroduces separate contexts for users, channels, connections (now split into sessions and connections) and user-channel associations. It builds which is as much assurance as I can give about the stability of this commit, but its also the bare minimum of what i like to commit sooooo A lot of things still need to be broadcast through events throughout the application in order to keep states consistent but we'll cross that bridge when we get to it. I really need to stop using that phrase thingy, I'm overusing it.
37 lines
1.3 KiB
C#
37 lines
1.3 KiB
C#
using SharpChat.Users;
|
|
using System.Text.Json;
|
|
|
|
namespace SharpChat.Messages;
|
|
|
|
public class Message(
|
|
long id,
|
|
string type,
|
|
string? senderId,
|
|
string senderName,
|
|
ColourInheritable senderColour,
|
|
int senderRank,
|
|
UserPermissions senderPermissions,
|
|
string senderNickName,
|
|
DateTimeOffset created,
|
|
DateTimeOffset? deleted,
|
|
string? channelName,
|
|
JsonDocument 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 JsonDocument Data { get; } = data;
|
|
|
|
public bool IsPrivate => !string.IsNullOrEmpty(ChannelName) && ChannelName.StartsWith('@');
|
|
public bool IsBroadcast => string.IsNullOrEmpty(ChannelName);
|
|
|
|
public string SenderLegacyName => string.IsNullOrWhiteSpace(SenderNickName) ? SenderName : $"~{SenderNickName}";
|
|
}
|