Mare 0.9 (#17)

* add jwt expiry

* bump api version

* start rework permissions

* ok so in theory this compiles

* update api

* update api

* update api

* update api once more

* oh apiii I hate submodules

* blabla

* we only live to suffer

* stop reading my commit messages

* nothing to see here move along

* update nuget

* some rework

---------

Co-authored-by: rootdarkarchon <root.darkarchon@outlook.com>
This commit is contained in:
rootdarkarchon
2023-10-17 21:36:40 +02:00
committed by GitHub
parent 820a432ad9
commit 9199d9c667
36 changed files with 202 additions and 133 deletions

View File

@@ -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)]

View File

@@ -2,10 +2,13 @@
public class GroupDataComparer : IEqualityComparer<GroupData>
{
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<GroupData>
{
return obj.GID.GetHashCode();
}
}
}

View File

@@ -2,13 +2,14 @@
namespace MareSynchronos.API.Data.Comparer;
public class GroupDtoComparer : IEqualityComparer<GroupDto>
{
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)
{

View File

@@ -4,9 +4,13 @@ namespace MareSynchronos.API.Data.Comparer;
public class GroupPairDtoComparer : IEqualityComparer<GroupPairDto>
{
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;

View File

@@ -2,10 +2,12 @@
public class UserDataComparer : IEqualityComparer<UserData>
{
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<UserData>
{
return obj.UID.GetHashCode();
}
}
}

View File

@@ -4,9 +4,13 @@ namespace MareSynchronos.API.Data.Comparer;
public class UserDtoComparer : IEqualityComparer<UserDto>
{
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;

View File

@@ -0,0 +1,6 @@
namespace MareSynchronos.API.Data;
public class Constants
{
public const string IndividualKeyword = "//MARE//DIRECT";
}

View File

@@ -1,7 +1,7 @@
namespace MareSynchronos.API.Data.Enum;
[Flags]
public enum GroupUserInfo
public enum GroupPairUserInfo
{
None = 0x0,
IsModerator = 0x2,

View File

@@ -4,8 +4,8 @@
public enum GroupPermissions
{
NoneSet = 0x0,
DisableAnimations = 0x1,
DisableSounds = 0x2,
PreferDisableAnimations = 0x1,
PreferDisableSounds = 0x2,
DisableInvites = 0x4,
DisableVFX = 0x8,
PreferDisableVFX = 0x8,
}

View File

@@ -1,7 +1,7 @@
namespace MareSynchronos.API.Data.Enum;
[Flags]
public enum GroupUserPermissions
public enum GroupUserPreferredPermissions
{
NoneSet = 0x0,
Paused = 0x1,

View File

@@ -0,0 +1,8 @@
namespace MareSynchronos.API.Data.Enum;
public enum IndividualPairStatus
{
None,
OneSided,
Bidirectional
}

View File

@@ -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,
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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<string> DataHash { get; }
public string FileSwapPath { get; set; } = string.Empty;
public string[] GamePaths { get; set; } = Array.Empty<string>();
public string Hash { get; set; } = string.Empty;
public string FileSwapPath { get; set; } = string.Empty;
}

View File

@@ -7,4 +7,4 @@ public record GroupData(string GID, string? Alias = null)
{
[IgnoreMember]
public string AliasOrGID => string.IsNullOrWhiteSpace(Alias) ? GID : Alias;
}
}