sharp-chat/SharpChatCommon/Users/User.cs
flashwave 5a7756894b
First bits of the Context overhaul.
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.
2025-05-03 02:49:51 +00:00

32 lines
1.2 KiB
C#

namespace SharpChat.Users;
public class User(
string userId,
string userName,
ColourInheritable colour,
int rank,
UserPermissions perms,
string nickName = "",
UserStatus status = UserStatus.Online,
string statusText = ""
) {
public string UserId { get; } = userId;
public string UserName { get; internal set; } = userName;
public ColourInheritable Colour { get; internal set; } = colour;
public int Rank { get; internal set; } = rank;
public UserPermissions Permissions { get; internal set; } = perms;
public string NickName { get; internal set; } = nickName;
public UserStatus Status { get; internal set; } = status;
public string StatusText { get; internal set; } = statusText;
public bool NameEquals(string name) {
return string.Equals(name, UserName, StringComparison.OrdinalIgnoreCase)
|| string.Equals(name, NickName, StringComparison.OrdinalIgnoreCase);
}
public string GetDMChannelNameWith(User other) {
return string.Compare(UserId, other.UserId, StringComparison.Ordinal) > 0
? $"@{other.UserId}-{UserId}"
: $"@{UserId}-{other.UserId}";
}
}