diff --git a/MareSynchronosAPI/Data/CharacterData.cs b/MareSynchronosAPI/Data/CharacterData.cs index da8085a..c8eafa9 100644 --- a/MareSynchronosAPI/Data/CharacterData.cs +++ b/MareSynchronosAPI/Data/CharacterData.cs @@ -1,10 +1,11 @@ using MareSynchronos.API.Data.Enum; using MessagePack; -using System.Text.Json.Serialization; -using System.Text.Json; -using System.Text; using System.Security.Cryptography; +using System.Text; +using System.Text.Json; +using System.Text.Json.Serialization; + namespace MareSynchronos.API.Data; [MessagePackObject(keyAsPropertyName: true)] diff --git a/MareSynchronosAPI/Data/Comparer/GroupDataComparer.cs b/MareSynchronosAPI/Data/Comparer/GroupDataComparer.cs index dfd0456..56ac851 100644 --- a/MareSynchronosAPI/Data/Comparer/GroupDataComparer.cs +++ b/MareSynchronosAPI/Data/Comparer/GroupDataComparer.cs @@ -2,10 +2,13 @@ public class GroupDataComparer : IEqualityComparer { - public static GroupDataComparer Instance => _instance; private static GroupDataComparer _instance = new GroupDataComparer(); - private GroupDataComparer() { } + private GroupDataComparer() + { } + + public static GroupDataComparer Instance => _instance; + public bool Equals(GroupData? x, GroupData? y) { if (x == null || y == null) return false; @@ -16,4 +19,4 @@ public class GroupDataComparer : IEqualityComparer { return obj.GID.GetHashCode(); } -} +} \ No newline at end of file diff --git a/MareSynchronosAPI/Data/Comparer/GroupDtoComparer.cs b/MareSynchronosAPI/Data/Comparer/GroupDtoComparer.cs index 3814c6f..c69265a 100644 --- a/MareSynchronosAPI/Data/Comparer/GroupDtoComparer.cs +++ b/MareSynchronosAPI/Data/Comparer/GroupDtoComparer.cs @@ -2,13 +2,14 @@ namespace MareSynchronos.API.Data.Comparer; - public class GroupDtoComparer : IEqualityComparer { - public static GroupDtoComparer Instance => _instance; private static GroupDtoComparer _instance = new GroupDtoComparer(); - private GroupDtoComparer() { } + private GroupDtoComparer() + { } + + public static GroupDtoComparer Instance => _instance; public bool Equals(GroupDto? x, GroupDto? y) { diff --git a/MareSynchronosAPI/Data/Comparer/GroupPairDtoComparer.cs b/MareSynchronosAPI/Data/Comparer/GroupPairDtoComparer.cs index c1dde50..a985d53 100644 --- a/MareSynchronosAPI/Data/Comparer/GroupPairDtoComparer.cs +++ b/MareSynchronosAPI/Data/Comparer/GroupPairDtoComparer.cs @@ -4,9 +4,13 @@ namespace MareSynchronos.API.Data.Comparer; public class GroupPairDtoComparer : IEqualityComparer { - public static GroupPairDtoComparer Instance => _instance; private static GroupPairDtoComparer _instance = new(); - private GroupPairDtoComparer() { } + + private GroupPairDtoComparer() + { } + + public static GroupPairDtoComparer Instance => _instance; + public bool Equals(GroupPairDto? x, GroupPairDto? y) { if (x == null || y == null) return false; diff --git a/MareSynchronosAPI/Data/Comparer/UserDataComparer.cs b/MareSynchronosAPI/Data/Comparer/UserDataComparer.cs index 68aa227..21dbd75 100644 --- a/MareSynchronosAPI/Data/Comparer/UserDataComparer.cs +++ b/MareSynchronosAPI/Data/Comparer/UserDataComparer.cs @@ -2,10 +2,12 @@ public class UserDataComparer : IEqualityComparer { - public static UserDataComparer Instance => _instance; private static UserDataComparer _instance = new(); - private UserDataComparer() { } + private UserDataComparer() + { } + + public static UserDataComparer Instance => _instance; public bool Equals(UserData? x, UserData? y) { @@ -17,4 +19,4 @@ public class UserDataComparer : IEqualityComparer { return obj.UID.GetHashCode(); } -} +} \ No newline at end of file diff --git a/MareSynchronosAPI/Data/Comparer/UserDtoComparer.cs b/MareSynchronosAPI/Data/Comparer/UserDtoComparer.cs index 9c8451c..683d3cc 100644 --- a/MareSynchronosAPI/Data/Comparer/UserDtoComparer.cs +++ b/MareSynchronosAPI/Data/Comparer/UserDtoComparer.cs @@ -4,9 +4,13 @@ namespace MareSynchronos.API.Data.Comparer; public class UserDtoComparer : IEqualityComparer { - public static UserDtoComparer Instance => _instance; private static UserDtoComparer _instance = new(); - private UserDtoComparer() { } + + private UserDtoComparer() + { } + + public static UserDtoComparer Instance => _instance; + public bool Equals(UserDto? x, UserDto? y) { if (x == null || y == null) return false; diff --git a/MareSynchronosAPI/Data/Constants.cs b/MareSynchronosAPI/Data/Constants.cs new file mode 100644 index 0000000..c773e87 --- /dev/null +++ b/MareSynchronosAPI/Data/Constants.cs @@ -0,0 +1,6 @@ +namespace MareSynchronos.API.Data; + +public class Constants +{ + public const string IndividualKeyword = "//MARE//DIRECT"; +} \ No newline at end of file diff --git a/MareSynchronosAPI/Data/Enum/GroupUserInfo.cs b/MareSynchronosAPI/Data/Enum/GroupPairUserInfo.cs similarity index 78% rename from MareSynchronosAPI/Data/Enum/GroupUserInfo.cs rename to MareSynchronosAPI/Data/Enum/GroupPairUserInfo.cs index ed1b3bb..476ac87 100644 --- a/MareSynchronosAPI/Data/Enum/GroupUserInfo.cs +++ b/MareSynchronosAPI/Data/Enum/GroupPairUserInfo.cs @@ -1,7 +1,7 @@ namespace MareSynchronos.API.Data.Enum; [Flags] -public enum GroupUserInfo +public enum GroupPairUserInfo { None = 0x0, IsModerator = 0x2, diff --git a/MareSynchronosAPI/Data/Enum/GroupPermissions.cs b/MareSynchronosAPI/Data/Enum/GroupPermissions.cs index cccc712..7ab3abe 100644 --- a/MareSynchronosAPI/Data/Enum/GroupPermissions.cs +++ b/MareSynchronosAPI/Data/Enum/GroupPermissions.cs @@ -4,8 +4,8 @@ public enum GroupPermissions { NoneSet = 0x0, - DisableAnimations = 0x1, - DisableSounds = 0x2, + PreferDisableAnimations = 0x1, + PreferDisableSounds = 0x2, DisableInvites = 0x4, - DisableVFX = 0x8, + PreferDisableVFX = 0x8, } \ No newline at end of file diff --git a/MareSynchronosAPI/Data/Enum/GroupUserPermissions.cs b/MareSynchronosAPI/Data/Enum/GroupUserPreferredPermissions.cs similarity index 79% rename from MareSynchronosAPI/Data/Enum/GroupUserPermissions.cs rename to MareSynchronosAPI/Data/Enum/GroupUserPreferredPermissions.cs index efa3bfd..4280da4 100644 --- a/MareSynchronosAPI/Data/Enum/GroupUserPermissions.cs +++ b/MareSynchronosAPI/Data/Enum/GroupUserPreferredPermissions.cs @@ -1,7 +1,7 @@ namespace MareSynchronos.API.Data.Enum; [Flags] -public enum GroupUserPermissions +public enum GroupUserPreferredPermissions { NoneSet = 0x0, Paused = 0x1, diff --git a/MareSynchronosAPI/Data/Enum/IndividualPairStatus.cs b/MareSynchronosAPI/Data/Enum/IndividualPairStatus.cs new file mode 100644 index 0000000..71c289e --- /dev/null +++ b/MareSynchronosAPI/Data/Enum/IndividualPairStatus.cs @@ -0,0 +1,8 @@ +namespace MareSynchronos.API.Data.Enum; + +public enum IndividualPairStatus +{ + None, + OneSided, + Bidirectional +} \ No newline at end of file diff --git a/MareSynchronosAPI/Data/Enum/UserPermissions.cs b/MareSynchronosAPI/Data/Enum/UserPermissions.cs index 8cc472b..1686dd6 100644 --- a/MareSynchronosAPI/Data/Enum/UserPermissions.cs +++ b/MareSynchronosAPI/Data/Enum/UserPermissions.cs @@ -4,9 +4,9 @@ public enum UserPermissions { NoneSet = 0, - Paired = 1, - Paused = 2, - DisableAnimations = 4, - DisableSounds = 8, - DisableVFX = 16, + Paused = 1, + DisableAnimations = 2, + DisableSounds = 4, + DisableVFX = 8, + Sticky = 16, } \ No newline at end of file diff --git a/MareSynchronosAPI/Data/Extensions/GroupPermissionsExtensions.cs b/MareSynchronosAPI/Data/Extensions/GroupPermissionsExtensions.cs index ca2236d..f3ac396 100644 --- a/MareSynchronosAPI/Data/Extensions/GroupPermissionsExtensions.cs +++ b/MareSynchronosAPI/Data/Extensions/GroupPermissionsExtensions.cs @@ -4,36 +4,24 @@ namespace MareSynchronos.API.Data.Extensions; public static class GroupPermissionsExtensions { - public static bool IsDisableAnimations(this GroupPermissions perm) - { - return perm.HasFlag(GroupPermissions.DisableAnimations); - } - - public static bool IsDisableSounds(this GroupPermissions perm) - { - return perm.HasFlag(GroupPermissions.DisableSounds); - } - public static bool IsDisableInvites(this GroupPermissions perm) { return perm.HasFlag(GroupPermissions.DisableInvites); } - public static bool IsDisableVFX(this GroupPermissions perm) + public static bool IsPreferDisableAnimations(this GroupPermissions perm) { - return perm.HasFlag(GroupPermissions.DisableVFX); + return perm.HasFlag(GroupPermissions.PreferDisableAnimations); } - public static void SetDisableAnimations(this ref GroupPermissions perm, bool set) + public static bool IsPreferDisableSounds(this GroupPermissions perm) { - if (set) perm |= GroupPermissions.DisableAnimations; - else perm &= ~GroupPermissions.DisableAnimations; + return perm.HasFlag(GroupPermissions.PreferDisableSounds); } - public static void SetDisableSounds(this ref GroupPermissions perm, bool set) + public static bool IsPreferDisableVFX(this GroupPermissions perm) { - if (set) perm |= GroupPermissions.DisableSounds; - else perm &= ~GroupPermissions.DisableSounds; + return perm.HasFlag(GroupPermissions.PreferDisableVFX); } public static void SetDisableInvites(this ref GroupPermissions perm, bool set) @@ -42,9 +30,21 @@ public static class GroupPermissionsExtensions else perm &= ~GroupPermissions.DisableInvites; } - public static void SetDisableVFX(this ref GroupPermissions perm, bool set) + public static void SetPreferDisableAnimations(this ref GroupPermissions perm, bool set) { - if (set) perm |= GroupPermissions.DisableVFX; - else perm &= ~GroupPermissions.DisableVFX; + if (set) perm |= GroupPermissions.PreferDisableAnimations; + else perm &= ~GroupPermissions.PreferDisableAnimations; + } + + public static void SetPreferDisableSounds(this ref GroupPermissions perm, bool set) + { + if (set) perm |= GroupPermissions.PreferDisableSounds; + else perm &= ~GroupPermissions.PreferDisableSounds; + } + + public static void SetPreferDisableVFX(this ref GroupPermissions perm, bool set) + { + if (set) perm |= GroupPermissions.PreferDisableVFX; + else perm &= ~GroupPermissions.PreferDisableVFX; } } \ No newline at end of file diff --git a/MareSynchronosAPI/Data/Extensions/GroupUserInfoExtensions.cs b/MareSynchronosAPI/Data/Extensions/GroupUserInfoExtensions.cs index a4608e8..0bad788 100644 --- a/MareSynchronosAPI/Data/Extensions/GroupUserInfoExtensions.cs +++ b/MareSynchronosAPI/Data/Extensions/GroupUserInfoExtensions.cs @@ -4,25 +4,25 @@ namespace MareSynchronos.API.Data.Extensions; public static class GroupUserInfoExtensions { - public static bool IsModerator(this GroupUserInfo info) + public static bool IsModerator(this GroupPairUserInfo info) { - return info.HasFlag(GroupUserInfo.IsModerator); + return info.HasFlag(GroupPairUserInfo.IsModerator); } - public static bool IsPinned(this GroupUserInfo info) + public static bool IsPinned(this GroupPairUserInfo info) { - return info.HasFlag(GroupUserInfo.IsPinned); + return info.HasFlag(GroupPairUserInfo.IsPinned); } - public static void SetModerator(this ref GroupUserInfo info, bool isModerator) + public static void SetModerator(this ref GroupPairUserInfo info, bool isModerator) { - if (isModerator) info |= GroupUserInfo.IsModerator; - else info &= ~GroupUserInfo.IsModerator; + if (isModerator) info |= GroupPairUserInfo.IsModerator; + else info &= ~GroupPairUserInfo.IsModerator; } - public static void SetPinned(this ref GroupUserInfo info, bool isPinned) + public static void SetPinned(this ref GroupPairUserInfo info, bool isPinned) { - if (isPinned) info |= GroupUserInfo.IsPinned; - else info &= ~GroupUserInfo.IsPinned; + if (isPinned) info |= GroupPairUserInfo.IsPinned; + else info &= ~GroupPairUserInfo.IsPinned; } } \ No newline at end of file diff --git a/MareSynchronosAPI/Data/Extensions/GroupUserPermissionsExtensions.cs b/MareSynchronosAPI/Data/Extensions/GroupUserPermissionsExtensions.cs index b8b2702..bb2f011 100644 --- a/MareSynchronosAPI/Data/Extensions/GroupUserPermissionsExtensions.cs +++ b/MareSynchronosAPI/Data/Extensions/GroupUserPermissionsExtensions.cs @@ -4,47 +4,47 @@ namespace MareSynchronos.API.Data.Extensions; public static class GroupUserPermissionsExtensions { - public static bool IsDisableAnimations(this GroupUserPermissions perm) + public static bool IsDisableAnimations(this GroupUserPreferredPermissions perm) { - return perm.HasFlag(GroupUserPermissions.DisableAnimations); + return perm.HasFlag(GroupUserPreferredPermissions.DisableAnimations); } - public static bool IsDisableSounds(this GroupUserPermissions perm) + public static bool IsDisableSounds(this GroupUserPreferredPermissions perm) { - return perm.HasFlag(GroupUserPermissions.DisableSounds); + return perm.HasFlag(GroupUserPreferredPermissions.DisableSounds); } - public static bool IsPaused(this GroupUserPermissions perm) + public static bool IsDisableVFX(this GroupUserPreferredPermissions perm) { - return perm.HasFlag(GroupUserPermissions.Paused); + return perm.HasFlag(GroupUserPreferredPermissions.DisableVFX); } - public static bool IsDisableVFX(this GroupUserPermissions perm) + public static bool IsPaused(this GroupUserPreferredPermissions perm) { - return perm.HasFlag(GroupUserPermissions.DisableVFX); + return perm.HasFlag(GroupUserPreferredPermissions.Paused); } - public static void SetDisableAnimations(this ref GroupUserPermissions perm, bool set) + public static void SetDisableAnimations(this ref GroupUserPreferredPermissions perm, bool set) { - if (set) perm |= GroupUserPermissions.DisableAnimations; - else perm &= ~GroupUserPermissions.DisableAnimations; + if (set) perm |= GroupUserPreferredPermissions.DisableAnimations; + else perm &= ~GroupUserPreferredPermissions.DisableAnimations; } - public static void SetDisableSounds(this ref GroupUserPermissions perm, bool set) + public static void SetDisableSounds(this ref GroupUserPreferredPermissions perm, bool set) { - if (set) perm |= GroupUserPermissions.DisableSounds; - else perm &= ~GroupUserPermissions.DisableSounds; + if (set) perm |= GroupUserPreferredPermissions.DisableSounds; + else perm &= ~GroupUserPreferredPermissions.DisableSounds; } - public static void SetPaused(this ref GroupUserPermissions perm, bool set) + public static void SetDisableVFX(this ref GroupUserPreferredPermissions perm, bool set) { - if (set) perm |= GroupUserPermissions.Paused; - else perm &= ~GroupUserPermissions.Paused; + if (set) perm |= GroupUserPreferredPermissions.DisableVFX; + else perm &= ~GroupUserPreferredPermissions.DisableVFX; } - public static void SetDisableVFX(this ref GroupUserPermissions perm, bool set) + public static void SetPaused(this ref GroupUserPreferredPermissions perm, bool set) { - if (set) perm |= GroupUserPermissions.DisableVFX; - else perm &= ~GroupUserPermissions.DisableVFX; + if (set) perm |= GroupUserPreferredPermissions.Paused; + else perm &= ~GroupUserPreferredPermissions.Paused; } } \ No newline at end of file diff --git a/MareSynchronosAPI/Data/Extensions/UserPermissionsExtensions.cs b/MareSynchronosAPI/Data/Extensions/UserPermissionsExtensions.cs index 2b80601..e4d787a 100644 --- a/MareSynchronosAPI/Data/Extensions/UserPermissionsExtensions.cs +++ b/MareSynchronosAPI/Data/Extensions/UserPermissionsExtensions.cs @@ -4,16 +4,6 @@ namespace MareSynchronos.API.Data.Extensions; public static class UserPermissionsExtensions { - public static bool IsPaired(this UserPermissions perm) - { - return perm.HasFlag(UserPermissions.Paired); - } - - public static bool IsPaused(this UserPermissions perm) - { - return perm.HasFlag(UserPermissions.Paused); - } - public static bool IsDisableAnimations(this UserPermissions perm) { return perm.HasFlag(UserPermissions.DisableAnimations); @@ -29,16 +19,14 @@ public static class UserPermissionsExtensions return perm.HasFlag(UserPermissions.DisableVFX); } - public static void SetPaired(this ref UserPermissions perm, bool paired) + public static bool IsPaused(this UserPermissions perm) { - if (paired) perm |= UserPermissions.Paired; - else perm &= ~UserPermissions.Paired; + return perm.HasFlag(UserPermissions.Paused); } - public static void SetPaused(this ref UserPermissions perm, bool paused) + public static bool IsSticky(this UserPermissions perm) { - if (paused) perm |= UserPermissions.Paused; - else perm &= ~UserPermissions.Paused; + return perm.HasFlag(UserPermissions.Sticky); } public static void SetDisableAnimations(this ref UserPermissions perm, bool set) @@ -58,4 +46,16 @@ public static class UserPermissionsExtensions if (set) perm |= UserPermissions.DisableVFX; else perm &= ~UserPermissions.DisableVFX; } + + public static void SetPaused(this ref UserPermissions perm, bool paused) + { + if (paused) perm |= UserPermissions.Paused; + else perm &= ~UserPermissions.Paused; + } + + public static void SetSticky(this ref UserPermissions perm, bool sticky) + { + if (sticky) perm |= UserPermissions.Sticky; + else perm &= ~UserPermissions.Sticky; + } } \ No newline at end of file diff --git a/MareSynchronosAPI/Data/FileReplacementData.cs b/MareSynchronosAPI/Data/FileReplacementData.cs index 82161a5..0f06325 100644 --- a/MareSynchronosAPI/Data/FileReplacementData.cs +++ b/MareSynchronosAPI/Data/FileReplacementData.cs @@ -1,9 +1,8 @@ using MessagePack; -using System.Text.Json.Serialization; -using System.Text.Json; -using System.Text; using System.Security.Cryptography; - +using System.Text; +using System.Text.Json; +using System.Text.Json.Serialization; namespace MareSynchronos.API.Data; @@ -24,7 +23,7 @@ public class FileReplacementData [JsonIgnore] public Lazy DataHash { get; } + public string FileSwapPath { get; set; } = string.Empty; public string[] GamePaths { get; set; } = Array.Empty(); public string Hash { get; set; } = string.Empty; - public string FileSwapPath { get; set; } = string.Empty; } \ No newline at end of file diff --git a/MareSynchronosAPI/Data/GroupData.cs b/MareSynchronosAPI/Data/GroupData.cs index 877bb44..c7c16fe 100644 --- a/MareSynchronosAPI/Data/GroupData.cs +++ b/MareSynchronosAPI/Data/GroupData.cs @@ -7,4 +7,4 @@ public record GroupData(string GID, string? Alias = null) { [IgnoreMember] public string AliasOrGID => string.IsNullOrWhiteSpace(Alias) ? GID : Alias; -} +} \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/ConnectionDto.cs b/MareSynchronosAPI/Dto/ConnectionDto.cs index ad19b99..ae3b274 100644 --- a/MareSynchronosAPI/Dto/ConnectionDto.cs +++ b/MareSynchronosAPI/Dto/ConnectionDto.cs @@ -11,6 +11,7 @@ public record ConnectionDto(UserData User) public bool IsAdmin { get; set; } public bool IsModerator { get; set; } public ServerInfo ServerInfo { get; set; } = new(); + public DefaultPermissionsDto DefaultPreferredPermissions { get; set; } = new(); } [MessagePackObject(keyAsPropertyName: true)] @@ -21,4 +22,4 @@ public record ServerInfo public int MaxGroupsCreatedByUser { get; set; } public int MaxGroupsJoinedByUser { get; set; } public Uri FileServerAddress { get; set; } = new Uri("http://nonemptyuri"); -} \ No newline at end of file +} diff --git a/MareSynchronosAPI/Dto/DefaultPermissionsDto.cs b/MareSynchronosAPI/Dto/DefaultPermissionsDto.cs new file mode 100644 index 0000000..2c889df --- /dev/null +++ b/MareSynchronosAPI/Dto/DefaultPermissionsDto.cs @@ -0,0 +1,15 @@ +using MessagePack; + +namespace MareSynchronos.API.Dto; + +[MessagePackObject(keyAsPropertyName: true)] +public record DefaultPermissionsDto +{ + public bool DisableIndividualAnimations { get; set; } = false; + public bool DisableIndividualSounds { get; set; } = false; + public bool DisableIndividualVFX { get; set; } = false; + public bool DisableGroupAnimations { get; set; } = false; + public bool DisableGroupSounds { get; set; } = false; + public bool DisableGroupVFX { get; set; } = false; + public bool IndividualIsSticky { get; set; } = true; +} \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/Files/ITransferFileDto.cs b/MareSynchronosAPI/Dto/Files/ITransferFileDto.cs index fb20e5a..d65b2b2 100644 --- a/MareSynchronosAPI/Dto/Files/ITransferFileDto.cs +++ b/MareSynchronosAPI/Dto/Files/ITransferFileDto.cs @@ -2,7 +2,7 @@ public interface ITransferFileDto { + string ForbiddenBy { get; set; } string Hash { get; set; } bool IsForbidden { get; set; } - string ForbiddenBy { get; set; } } \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/Group/GroupFullInfoDto.cs b/MareSynchronosAPI/Dto/Group/GroupFullInfoDto.cs index 0591293..e8ddc65 100644 --- a/MareSynchronosAPI/Dto/Group/GroupFullInfoDto.cs +++ b/MareSynchronosAPI/Dto/Group/GroupFullInfoDto.cs @@ -5,8 +5,10 @@ using MessagePack; namespace MareSynchronos.API.Dto.Group; [MessagePackObject(keyAsPropertyName: true)] -public record GroupFullInfoDto(GroupData Group, UserData Owner, GroupPermissions GroupPermissions, GroupUserPermissions GroupUserPermissions, GroupUserInfo GroupUserInfo) : GroupInfoDto(Group, Owner, GroupPermissions) +public record GroupFullInfoDto(GroupData Group, UserData Owner, GroupPermissions GroupPermissions, + GroupUserPreferredPermissions GroupUserPermissions, GroupPairUserInfo GroupUserInfo, + Dictionary GroupPairUserInfos) : GroupInfoDto(Group, Owner, GroupPermissions) { - public GroupUserPermissions GroupUserPermissions { get; set; } = GroupUserPermissions; - public GroupUserInfo GroupUserInfo { get; set; } = GroupUserInfo; + public GroupUserPreferredPermissions GroupUserPermissions { get; set; } = GroupUserPermissions; + public GroupPairUserInfo GroupUserInfo { get; set; } = GroupUserInfo; } \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/Group/GroupInfoDto.cs b/MareSynchronosAPI/Dto/Group/GroupInfoDto.cs index 193072b..447ecd5 100644 --- a/MareSynchronosAPI/Dto/Group/GroupInfoDto.cs +++ b/MareSynchronosAPI/Dto/Group/GroupInfoDto.cs @@ -14,3 +14,5 @@ public record GroupInfoDto(GroupData Group, UserData Owner, GroupPermissions Gro public string? OwnerAlias => Owner.Alias; public string OwnerAliasOrUID => Owner.AliasOrUID; } + +public record GroupJoinInfoDto(GroupData Group, UserData Owner, GroupPermissions GroupPermissions, bool Success) : GroupInfoDto(Group, Owner, GroupPermissions); \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/Group/GroupJoinDto.cs b/MareSynchronosAPI/Dto/Group/GroupJoinDto.cs new file mode 100644 index 0000000..f7aaff6 --- /dev/null +++ b/MareSynchronosAPI/Dto/Group/GroupJoinDto.cs @@ -0,0 +1,11 @@ +using MareSynchronos.API.Data; +using MareSynchronos.API.Data.Enum; +using MessagePack; + +namespace MareSynchronos.API.Dto.Group; + +[MessagePackObject(keyAsPropertyName: true)] +public record GroupPasswordDto(GroupData Group, string Password) : GroupDto(Group); + +[MessagePackObject(keyAsPropertyName: true)] +public record GroupJoinDto(GroupData Group, string Password, GroupUserPreferredPermissions GroupUserPreferredPermissions) : GroupPasswordDto(Group, Password); \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/Group/GroupPairDto.cs b/MareSynchronosAPI/Dto/Group/GroupPairDto.cs index c2e748d..6bd511c 100644 --- a/MareSynchronosAPI/Dto/Group/GroupPairDto.cs +++ b/MareSynchronosAPI/Dto/Group/GroupPairDto.cs @@ -9,4 +9,4 @@ public record GroupPairDto(GroupData Group, UserData User) : GroupDto(Group) public string UID => User.UID; public string? UserAlias => User.Alias; public string UserAliasOrUID => User.AliasOrUID; -} +} \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/Group/GroupPairFullInfoDto.cs b/MareSynchronosAPI/Dto/Group/GroupPairFullInfoDto.cs index 5a594df..cdf8b3c 100644 --- a/MareSynchronosAPI/Dto/Group/GroupPairFullInfoDto.cs +++ b/MareSynchronosAPI/Dto/Group/GroupPairFullInfoDto.cs @@ -5,8 +5,4 @@ using MessagePack; namespace MareSynchronos.API.Dto.Group; [MessagePackObject(keyAsPropertyName: true)] -public record GroupPairFullInfoDto(GroupData Group, UserData User, GroupUserInfo GroupPairStatusInfo, GroupUserPermissions GroupUserPermissions) : GroupPairDto(Group, User) -{ - public GroupUserInfo GroupPairStatusInfo { get; set; } = GroupPairStatusInfo; - public GroupUserPermissions GroupUserPermissions { get; set; } = GroupUserPermissions; -} \ No newline at end of file +public record GroupPairFullInfoDto(GroupData Group, UserData User, UserPermissions SelfToOtherPermissions, UserPermissions OtherToSelfPermissions) : GroupPairDto(Group, User); \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/Group/GroupPairUserInfoDto.cs b/MareSynchronosAPI/Dto/Group/GroupPairUserInfoDto.cs index 8a37f68..99a7b22 100644 --- a/MareSynchronosAPI/Dto/Group/GroupPairUserInfoDto.cs +++ b/MareSynchronosAPI/Dto/Group/GroupPairUserInfoDto.cs @@ -5,4 +5,4 @@ using MessagePack; namespace MareSynchronos.API.Dto.Group; [MessagePackObject(keyAsPropertyName: true)] -public record GroupPairUserInfoDto(GroupData Group, UserData User, GroupUserInfo GroupUserInfo) : GroupPairDto(Group, User); +public record GroupPairUserInfoDto(GroupData Group, UserData User, GroupPairUserInfo GroupUserInfo) : GroupPairDto(Group, User); \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/Group/GroupPairUserPermissionDto.cs b/MareSynchronosAPI/Dto/Group/GroupPairUserPermissionDto.cs index d1f152f..0cc6536 100644 --- a/MareSynchronosAPI/Dto/Group/GroupPairUserPermissionDto.cs +++ b/MareSynchronosAPI/Dto/Group/GroupPairUserPermissionDto.cs @@ -5,4 +5,4 @@ using MessagePack; namespace MareSynchronos.API.Dto.Group; [MessagePackObject(keyAsPropertyName: true)] -public record GroupPairUserPermissionDto(GroupData Group, UserData User, GroupUserPermissions GroupPairPermissions) : GroupPairDto(Group, User); +public record GroupPairUserPermissionDto(GroupData Group, UserData User, GroupUserPreferredPermissions GroupPairPermissions) : GroupPairDto(Group, User); \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/Group/GroupPasswordDto.cs b/MareSynchronosAPI/Dto/Group/GroupPasswordDto.cs deleted file mode 100644 index bcc31f0..0000000 --- a/MareSynchronosAPI/Dto/Group/GroupPasswordDto.cs +++ /dev/null @@ -1,7 +0,0 @@ -using MareSynchronos.API.Data; -using MessagePack; - -namespace MareSynchronos.API.Dto.Group; - -[MessagePackObject(keyAsPropertyName: true)] -public record GroupPasswordDto(GroupData Group, string Password) : GroupDto(Group); diff --git a/MareSynchronosAPI/Dto/Group/GroupPermissionDto.cs b/MareSynchronosAPI/Dto/Group/GroupPermissionDto.cs index 70dbf80..b5e2739 100644 --- a/MareSynchronosAPI/Dto/Group/GroupPermissionDto.cs +++ b/MareSynchronosAPI/Dto/Group/GroupPermissionDto.cs @@ -5,4 +5,4 @@ using MessagePack; namespace MareSynchronos.API.Dto.Group; [MessagePackObject(keyAsPropertyName: true)] -public record GroupPermissionDto(GroupData Group, GroupPermissions Permissions) : GroupDto(Group); +public record GroupPermissionDto(GroupData Group, GroupPermissions Permissions) : GroupDto(Group); \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/User/UserPairDto.cs b/MareSynchronosAPI/Dto/User/UserPairDto.cs index 3d92ad6..76b4864 100644 --- a/MareSynchronosAPI/Dto/User/UserPairDto.cs +++ b/MareSynchronosAPI/Dto/User/UserPairDto.cs @@ -5,8 +5,17 @@ using MessagePack; namespace MareSynchronos.API.Dto.User; [MessagePackObject(keyAsPropertyName: true)] -public record UserPairDto(UserData User, UserPermissions OwnPermissions, UserPermissions OtherPermissions) : UserDto(User) +public record UserFullPairDto(UserData User, IndividualPairStatus IndividualPairStatus, List Groups, UserPermissions OwnPermissions, UserPermissions OtherPermissions) : UserDto(User) { public UserPermissions OwnPermissions { get; set; } = OwnPermissions; public UserPermissions OtherPermissions { get; set; } = OtherPermissions; + public IndividualPairStatus IndividualPairStatus { get; set; } = IndividualPairStatus; +} + +[MessagePackObject(keyAsPropertyName: true)] +public record UserPairDto(UserData User, IndividualPairStatus IndividualPairStatus, UserPermissions OwnPermissions, UserPermissions OtherPermissions) : UserDto(User) +{ + public UserPermissions OwnPermissions { get; set; } = OwnPermissions; + public UserPermissions OtherPermissions { get; set; } = OtherPermissions; + public IndividualPairStatus IndividualPairStatus { get; set; } = IndividualPairStatus; } \ No newline at end of file diff --git a/MareSynchronosAPI/Dto/User/UserPermissionsDto.cs b/MareSynchronosAPI/Dto/User/UserPermissionsDto.cs index 772040b..a40cd36 100644 --- a/MareSynchronosAPI/Dto/User/UserPermissionsDto.cs +++ b/MareSynchronosAPI/Dto/User/UserPermissionsDto.cs @@ -5,4 +5,7 @@ using MessagePack; namespace MareSynchronos.API.Dto.User; [MessagePackObject(keyAsPropertyName: true)] -public record UserPermissionsDto(UserData User, UserPermissions Permissions) : UserDto(User); \ No newline at end of file +public record UserPermissionsDto(UserData User, UserPermissions Permissions) : UserDto(User); + +[MessagePackObject(keyAsPropertyName: true)] +public record UserIndividualPairStatusDto(UserData User, IndividualPairStatus IndividualPairStatus) : UserDto(User); \ No newline at end of file diff --git a/MareSynchronosAPI/MareSynchronos.API.csproj b/MareSynchronosAPI/MareSynchronos.API.csproj index 78bb11b..90236d9 100644 --- a/MareSynchronosAPI/MareSynchronos.API.csproj +++ b/MareSynchronosAPI/MareSynchronos.API.csproj @@ -7,7 +7,7 @@ - + diff --git a/MareSynchronosAPI/Routes/MareAuth.cs b/MareSynchronosAPI/Routes/MareAuth.cs index 291e5d3..8895626 100644 --- a/MareSynchronosAPI/Routes/MareAuth.cs +++ b/MareSynchronosAPI/Routes/MareAuth.cs @@ -5,5 +5,7 @@ public class MareAuth public const string Auth = "/auth"; public const string Auth_CreateIdent = "createWithIdent"; + public const string Auth_RenewToken = "renewToken"; public static Uri AuthFullPath(Uri baseUri) => new Uri(baseUri, Auth + "/" + Auth_CreateIdent); + public static Uri RenewTokenFullPath(Uri baseUri) => new Uri(baseUri, Auth + "/" + Auth_RenewToken); } \ No newline at end of file diff --git a/MareSynchronosAPI/SignalR/IMareHub.cs b/MareSynchronosAPI/SignalR/IMareHub.cs index 87b4b66..ad7e834 100644 --- a/MareSynchronosAPI/SignalR/IMareHub.cs +++ b/MareSynchronosAPI/SignalR/IMareHub.cs @@ -7,7 +7,7 @@ namespace MareSynchronos.API.SignalR; public interface IMareHub { - const int ApiVersion = 26; + const int ApiVersion = 27; const string Path = "/mare"; Task CheckClientHealth(); @@ -18,8 +18,6 @@ public interface IMareHub Task Client_GroupDelete(GroupDto groupDto); - Task Client_GroupPairChangePermissions(GroupPairUserPermissionDto permissionDto); - Task Client_GroupPairChangeUserInfo(GroupPairUserInfoDto userInfo); Task Client_GroupPairJoined(GroupPairFullInfoDto groupPairInfoDto); @@ -48,10 +46,15 @@ public interface IMareHub Task Client_UserUpdateOtherPairPermissions(UserPermissionsDto dto); + Task Client_UpdateUserIndividualPairStatusDto(UserIndividualPairStatusDto dto); + Task Client_UserUpdateProfile(UserDto dto); Task Client_UserUpdateSelfPairPermissions(UserPermissionsDto dto); + Task Client_UserUpdateDefaultPermissions(DefaultPermissionsDto dto); + Task Client_GroupChangeUserPairPermissions(GroupPairUserPermissionDto dto); + Task GetConnectionDto(); Task GroupBanUser(GroupPairDto dto, string reason); @@ -66,7 +69,7 @@ public interface IMareHub Task GroupClear(GroupDto group); - Task GroupCreate(); + Task GroupCreate(); Task> GroupCreateTempInvite(GroupDto group, int amount); @@ -74,7 +77,8 @@ public interface IMareHub Task> GroupGetBannedUsers(GroupDto group); - Task GroupJoin(GroupPasswordDto passwordedGroup); + Task GroupJoin(GroupPasswordDto passwordedGroup); + Task GroupJoinFinalize(GroupJoinDto passwordedGroup); Task GroupLeave(GroupDto group); @@ -84,8 +88,6 @@ public interface IMareHub Task> GroupsGetAll(); - Task> GroupsGetUsersInGroup(GroupDto group); - Task GroupUnbanUser(GroupPairDto groupPair); Task UserAddPair(UserDto user); @@ -94,7 +96,7 @@ public interface IMareHub Task> UserGetOnlinePairs(); - Task> UserGetPairedClients(); + Task> UserGetPairedClients(); Task UserGetProfile(UserDto dto); @@ -107,4 +109,5 @@ public interface IMareHub Task UserSetPairPermissions(UserPermissionsDto userPermissions); Task UserSetProfile(UserProfileDto userDescription); + Task UserUpdateDefaultPermissions(DefaultPermissionsDto defaultPermissionsDto); } \ No newline at end of file diff --git a/MareSynchronosAPI/SignalR/IMareHubClient.cs b/MareSynchronosAPI/SignalR/IMareHubClient.cs index bd29a9f..f66abe8 100644 --- a/MareSynchronosAPI/SignalR/IMareHubClient.cs +++ b/MareSynchronosAPI/SignalR/IMareHubClient.cs @@ -13,8 +13,6 @@ public interface IMareHubClient : IMareHub void OnGroupDelete(Action act); - void OnGroupPairChangePermissions(Action act); - void OnGroupPairChangeUserInfo(Action act); void OnGroupPairJoined(Action act); @@ -46,4 +44,10 @@ public interface IMareHubClient : IMareHub void OnUserUpdateProfile(Action act); void OnUserUpdateSelfPairPermissions(Action act); + + void OnUserDefaultPermissionUpdate(Action act); + + void OnUpdateUserIndividualPairStatusDto(Action act); + + void OnGroupChangeUserPairPermissions(Action act); } \ No newline at end of file