From 28e1cc46958ce34f2cb1c438cca67c9d5efe1484 Mon Sep 17 00:00:00 2001 From: CakeAndBanana Date: Wed, 17 Sep 2025 02:09:23 +0200 Subject: [PATCH 01/14] Added changes for the API to support profiles --- LightlessSyncAPI/Data/GroupData.cs | 11 ++++++++++- LightlessSyncAPI/Dto/Group/GroupFullInfoDto.cs | 3 ++- LightlessSyncAPI/Dto/Group/GroupPairDto.cs | 1 + LightlessSyncAPI/Dto/Group/GroupProfileDto.cs | 6 ++++++ LightlessSyncAPI/SignalR/ILightlessHub.cs | 1 + 5 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 LightlessSyncAPI/Dto/Group/GroupProfileDto.cs diff --git a/LightlessSyncAPI/Data/GroupData.cs b/LightlessSyncAPI/Data/GroupData.cs index a8ccca2..1aa92b3 100644 --- a/LightlessSyncAPI/Data/GroupData.cs +++ b/LightlessSyncAPI/Data/GroupData.cs @@ -3,8 +3,17 @@ namespace LightlessSync.API.Data; [MessagePackObject(keyAsPropertyName: true)] -public record GroupData(string GID, string? Alias = null) +public record GroupData(string GID, string? Alias = null, DateTime? CreatedAt = null, string? Description = null, string? Tags = null, string? Avatar = null) { [IgnoreMember] public string AliasOrGID => string.IsNullOrWhiteSpace(Alias) ? GID : Alias; + [IgnoreMember] + public DateTime? CreatedAt { get; set; } = CreatedAt; + [IgnoreMember] + public string? Description { get; set; } = Description; + [IgnoreMember] + public string? Tags { get; set; } = Tags; + [IgnoreMember] + public string? Avatar { get; set; } = Avatar; + } \ No newline at end of file diff --git a/LightlessSyncAPI/Dto/Group/GroupFullInfoDto.cs b/LightlessSyncAPI/Dto/Group/GroupFullInfoDto.cs index 46ad2f6..e9b73fa 100644 --- a/LightlessSyncAPI/Dto/Group/GroupFullInfoDto.cs +++ b/LightlessSyncAPI/Dto/Group/GroupFullInfoDto.cs @@ -6,9 +6,10 @@ namespace LightlessSync.API.Dto.Group; [MessagePackObject(keyAsPropertyName: true)] public record GroupFullInfoDto(GroupData Group, UserData Owner, GroupPermissions GroupPermissions, - GroupUserPreferredPermissions GroupUserPermissions, GroupPairUserInfo GroupUserInfo, + GroupUserPreferredPermissions GroupUserPermissions, GroupPairUserInfo GroupUserInfo, DateTime? GroupUserJoinedAt, Dictionary GroupPairUserInfos) : GroupInfoDto(Group, Owner, GroupPermissions) { public GroupUserPreferredPermissions GroupUserPermissions { get; set; } = GroupUserPermissions; public GroupPairUserInfo GroupUserInfo { get; set; } = GroupUserInfo; + public DateTime? GroupUserJoinedAt { get; set; } = GroupUserJoinedAt; } \ No newline at end of file diff --git a/LightlessSyncAPI/Dto/Group/GroupPairDto.cs b/LightlessSyncAPI/Dto/Group/GroupPairDto.cs index e1f4ef0..100e2b9 100644 --- a/LightlessSyncAPI/Dto/Group/GroupPairDto.cs +++ b/LightlessSyncAPI/Dto/Group/GroupPairDto.cs @@ -9,4 +9,5 @@ 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/LightlessSyncAPI/Dto/Group/GroupProfileDto.cs b/LightlessSyncAPI/Dto/Group/GroupProfileDto.cs new file mode 100644 index 0000000..03d2b7c --- /dev/null +++ b/LightlessSyncAPI/Dto/Group/GroupProfileDto.cs @@ -0,0 +1,6 @@ +using LightlessSync.API.Data; + +namespace LightlessSync.API.Dto.Group +{ + public record GroupProfileDto(GroupData Group, string? Description, string? Tags, string? PictureBase64) : GroupDto(Group); +} diff --git a/LightlessSyncAPI/SignalR/ILightlessHub.cs b/LightlessSyncAPI/SignalR/ILightlessHub.cs index 99cd1b2..24918bb 100644 --- a/LightlessSyncAPI/SignalR/ILightlessHub.cs +++ b/LightlessSyncAPI/SignalR/ILightlessHub.cs @@ -57,6 +57,7 @@ public interface ILightlessHub Task GroupJoinFinalize(GroupJoinDto passwordedGroup); Task GroupLeave(GroupDto group); Task GroupRemoveUser(GroupPairDto groupPair); + Task GroupSetProfile(GroupProfileDto dto); Task GroupSetUserInfo(GroupPairUserInfoDto groupPair); Task> GroupsGetAll(); Task GroupUnbanUser(GroupPairDto groupPair); From 43be25cc45eff1966d82ff254110ade2cbd07278 Mon Sep 17 00:00:00 2001 From: CakeAndBanana Date: Wed, 17 Sep 2025 02:38:21 +0200 Subject: [PATCH 02/14] Added get of group profile, removed group from model. redone group data. --- LightlessSyncAPI/Data/GroupData.cs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/LightlessSyncAPI/Data/GroupData.cs b/LightlessSyncAPI/Data/GroupData.cs index 1aa92b3..5e26435 100644 --- a/LightlessSyncAPI/Data/GroupData.cs +++ b/LightlessSyncAPI/Data/GroupData.cs @@ -3,17 +3,11 @@ namespace LightlessSync.API.Data; [MessagePackObject(keyAsPropertyName: true)] -public record GroupData(string GID, string? Alias = null, DateTime? CreatedAt = null, string? Description = null, string? Tags = null, string? Avatar = null) +public record GroupData(string GID, string? Alias = null, DateTime? CreatedAt = null) { [IgnoreMember] public string AliasOrGID => string.IsNullOrWhiteSpace(Alias) ? GID : Alias; [IgnoreMember] public DateTime? CreatedAt { get; set; } = CreatedAt; - [IgnoreMember] - public string? Description { get; set; } = Description; - [IgnoreMember] - public string? Tags { get; set; } = Tags; - [IgnoreMember] - public string? Avatar { get; set; } = Avatar; } \ No newline at end of file From 96744f4f28142a5cd40103d6ee209761b354b818 Mon Sep 17 00:00:00 2001 From: CakeAndBanana Date: Wed, 17 Sep 2025 02:41:42 +0200 Subject: [PATCH 03/14] Adding getprofile in interface. --- LightlessSyncAPI/SignalR/ILightlessHub.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/LightlessSyncAPI/SignalR/ILightlessHub.cs b/LightlessSyncAPI/SignalR/ILightlessHub.cs index 24918bb..8104c88 100644 --- a/LightlessSyncAPI/SignalR/ILightlessHub.cs +++ b/LightlessSyncAPI/SignalR/ILightlessHub.cs @@ -57,6 +57,7 @@ public interface ILightlessHub Task GroupJoinFinalize(GroupJoinDto passwordedGroup); Task GroupLeave(GroupDto group); Task GroupRemoveUser(GroupPairDto groupPair); + Task GroupGetProfile(GroupDto dto); Task GroupSetProfile(GroupProfileDto dto); Task GroupSetUserInfo(GroupPairUserInfoDto groupPair); Task> GroupsGetAll(); From 75aebca693be471efa9e0658727ede56153a73ac Mon Sep 17 00:00:00 2001 From: CakeAndBanana Date: Wed, 17 Sep 2025 05:37:04 +0200 Subject: [PATCH 04/14] Added client sendback of profileDTO --- LightlessSyncAPI/SignalR/ILightlessHub.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/LightlessSyncAPI/SignalR/ILightlessHub.cs b/LightlessSyncAPI/SignalR/ILightlessHub.cs index 8104c88..adcc6dc 100644 --- a/LightlessSyncAPI/SignalR/ILightlessHub.cs +++ b/LightlessSyncAPI/SignalR/ILightlessHub.cs @@ -21,6 +21,7 @@ public interface ILightlessHub Task Client_GroupPairJoined(GroupPairFullInfoDto groupPairInfoDto); Task Client_GroupPairLeft(GroupPairDto groupPairDto); Task Client_GroupSendFullInfo(GroupFullInfoDto groupInfo); + Task Client_GroupSendProfile (GroupProfileDto groupInfo); Task Client_GroupSendInfo(GroupInfoDto groupInfo); Task Client_ReceiveServerMessage(MessageSeverity messageSeverity, string message); Task Client_UpdateSystemInfo(SystemInfoDto systemInfo); From fd4cd52d2e78c8a621e6b06149e69842bb5ff255 Mon Sep 17 00:00:00 2001 From: azyges Date: Wed, 24 Sep 2025 05:05:57 +0900 Subject: [PATCH 05/14] lightfinder support, context pairing --- LightlessSyncAPI/Data/UserData.cs | 2 +- .../Dto/Group/GroupBroadcastRequestDto.cs | 11 +++++++++++ LightlessSyncAPI/Dto/Group/GroupJoinHashedDto.cs | 12 ++++++++++++ LightlessSyncAPI/Dto/User/BroadcastStatusBatchDto.cs | 9 +++++++++ LightlessSyncAPI/Dto/User/BroadcastStatusInfoDto.cs | 12 ++++++++++++ .../Dto/User/BroadcastStatusRequestDto.cs | 12 ++++++++++++ LightlessSyncAPI/SignalR/ILightlessHub.cs | 10 ++++++++++ 7 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 LightlessSyncAPI/Dto/Group/GroupBroadcastRequestDto.cs create mode 100644 LightlessSyncAPI/Dto/Group/GroupJoinHashedDto.cs create mode 100644 LightlessSyncAPI/Dto/User/BroadcastStatusBatchDto.cs create mode 100644 LightlessSyncAPI/Dto/User/BroadcastStatusInfoDto.cs create mode 100644 LightlessSyncAPI/Dto/User/BroadcastStatusRequestDto.cs diff --git a/LightlessSyncAPI/Data/UserData.cs b/LightlessSyncAPI/Data/UserData.cs index d993fa3..eb98245 100644 --- a/LightlessSyncAPI/Data/UserData.cs +++ b/LightlessSyncAPI/Data/UserData.cs @@ -3,7 +3,7 @@ namespace LightlessSync.API.Data; [MessagePackObject(keyAsPropertyName: true)] -public record UserData(string UID, string? Alias = null) +public record UserData(string UID, string? Alias = null, bool IsAdmin = false, bool IsModerator = false) { [IgnoreMember] public string AliasOrUID => string.IsNullOrWhiteSpace(Alias) ? UID : Alias; diff --git a/LightlessSyncAPI/Dto/Group/GroupBroadcastRequestDto.cs b/LightlessSyncAPI/Dto/Group/GroupBroadcastRequestDto.cs new file mode 100644 index 0000000..657f42d --- /dev/null +++ b/LightlessSyncAPI/Dto/Group/GroupBroadcastRequestDto.cs @@ -0,0 +1,11 @@ +using MessagePack; + +namespace LightlessSync.API.Dto.Group; + +[MessagePackObject(keyAsPropertyName: true)] +public sealed class GroupBroadcastRequestDto +{ + public required string GID { get; init; } + public string? HashedCID { get; set; } + public required bool Enabled { get; init; } +} diff --git a/LightlessSyncAPI/Dto/Group/GroupJoinHashedDto.cs b/LightlessSyncAPI/Dto/Group/GroupJoinHashedDto.cs new file mode 100644 index 0000000..5e63e5e --- /dev/null +++ b/LightlessSyncAPI/Dto/Group/GroupJoinHashedDto.cs @@ -0,0 +1,12 @@ +using LightlessSync.API.Data; +using LightlessSync.API.Data.Enum; +using MessagePack; + +namespace LightlessSync.API.Dto.Group; + +[MessagePackObject(keyAsPropertyName: true)] +public record GroupJoinHashedDto( + GroupData Group, + string HashedPassword, + GroupUserPreferredPermissions GroupUserPreferredPermissions +); diff --git a/LightlessSyncAPI/Dto/User/BroadcastStatusBatchDto.cs b/LightlessSyncAPI/Dto/User/BroadcastStatusBatchDto.cs new file mode 100644 index 0000000..39961b5 --- /dev/null +++ b/LightlessSyncAPI/Dto/User/BroadcastStatusBatchDto.cs @@ -0,0 +1,9 @@ +using MessagePack; + +namespace LightlessSync.API.Dto.User; + +[MessagePackObject(keyAsPropertyName: true)] +public sealed class BroadcastStatusBatchDto +{ + public Dictionary Results { get; init; } = new(); +} diff --git a/LightlessSyncAPI/Dto/User/BroadcastStatusInfoDto.cs b/LightlessSyncAPI/Dto/User/BroadcastStatusInfoDto.cs new file mode 100644 index 0000000..88698d4 --- /dev/null +++ b/LightlessSyncAPI/Dto/User/BroadcastStatusInfoDto.cs @@ -0,0 +1,12 @@ +using MessagePack; + +namespace LightlessSync.API.Dto.User; + +[MessagePackObject(keyAsPropertyName: true)] +public sealed class BroadcastStatusInfoDto +{ + public required string HashedCID { get; init; } + public required bool IsBroadcasting { get; init; } + public TimeSpan? TTL { get; init; } + public string? GID { get; init; } +} \ No newline at end of file diff --git a/LightlessSyncAPI/Dto/User/BroadcastStatusRequestDto.cs b/LightlessSyncAPI/Dto/User/BroadcastStatusRequestDto.cs new file mode 100644 index 0000000..49213da --- /dev/null +++ b/LightlessSyncAPI/Dto/User/BroadcastStatusRequestDto.cs @@ -0,0 +1,12 @@ +using MessagePack; + +namespace LightlessSync.API.Dto.User; + +[MessagePackObject(keyAsPropertyName: true)] +public sealed class BroadcastStatusRequestDto +{ + public required string HashedCID { get; init; } + public required bool Enabled { get; init; } + public string? GID { get; init; } +} + diff --git a/LightlessSyncAPI/SignalR/ILightlessHub.cs b/LightlessSyncAPI/SignalR/ILightlessHub.cs index 99cd1b2..e8b2522 100644 --- a/LightlessSyncAPI/SignalR/ILightlessHub.cs +++ b/LightlessSyncAPI/SignalR/ILightlessHub.cs @@ -55,6 +55,7 @@ public interface ILightlessHub Task> GroupGetBannedUsers(GroupDto group); Task GroupJoin(GroupPasswordDto passwordedGroup); Task GroupJoinFinalize(GroupJoinDto passwordedGroup); + Task GroupJoinHashed(GroupJoinHashedDto dto); Task GroupLeave(GroupDto group); Task GroupRemoveUser(GroupPairDto groupPair); Task GroupSetUserInfo(GroupPairUserInfoDto groupPair); @@ -63,6 +64,15 @@ public interface ILightlessHub Task GroupPrune(GroupDto group, int days, bool execute); Task UserAddPair(UserDto user); + Task TryPairWithContentId(string otherCid, string myCid); + + Task SetBroadcastStatus(string hashedCid, bool enabled, GroupBroadcastRequestDto? groupDto = null); + Task SetGroupBroadcastStatus(GroupBroadcastRequestDto dto); + Task> GetBroadcastedGroups(List broadcastEntries); + Task IsUserBroadcasting(string hashedCid); + Task AreUsersBroadcasting(List hashedCids); + Task GetBroadcastTtl(string hashedCid); + Task UserDelete(); Task> UserGetOnlinePairs(CensusDataDto? censusDataDto); Task> UserGetPairedClients(); From 7abe2b1ef73f10c3020539ae4e525dd91b24cca4 Mon Sep 17 00:00:00 2001 From: CakeAndBanana Date: Thu, 25 Sep 2025 02:03:41 +0200 Subject: [PATCH 06/14] Changed GroupJoinDto --- LightlessSyncAPI/Dto/Group/GroupJoinDto.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LightlessSyncAPI/Dto/Group/GroupJoinDto.cs b/LightlessSyncAPI/Dto/Group/GroupJoinDto.cs index 43c1c74..2bb89fd 100644 --- a/LightlessSyncAPI/Dto/Group/GroupJoinDto.cs +++ b/LightlessSyncAPI/Dto/Group/GroupJoinDto.cs @@ -8,4 +8,4 @@ namespace LightlessSync.API.Dto.Group; 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 +public record GroupJoinDto(GroupData Group, string Password, GroupUserPreferredPermissions GroupUserPreferredPermissions, bool Finder = false) : GroupPasswordDto(Group, Password); \ No newline at end of file From 69055b0f323e6d35f55750fd1dc5659a8e36b085 Mon Sep 17 00:00:00 2001 From: CakeAndBanana Date: Thu, 25 Sep 2025 03:34:36 +0200 Subject: [PATCH 07/14] Change in groupfullinfo --- LightlessSyncAPI/Dto/Group/GroupFullInfoDto.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/LightlessSyncAPI/Dto/Group/GroupFullInfoDto.cs b/LightlessSyncAPI/Dto/Group/GroupFullInfoDto.cs index e9b73fa..46ad2f6 100644 --- a/LightlessSyncAPI/Dto/Group/GroupFullInfoDto.cs +++ b/LightlessSyncAPI/Dto/Group/GroupFullInfoDto.cs @@ -6,10 +6,9 @@ namespace LightlessSync.API.Dto.Group; [MessagePackObject(keyAsPropertyName: true)] public record GroupFullInfoDto(GroupData Group, UserData Owner, GroupPermissions GroupPermissions, - GroupUserPreferredPermissions GroupUserPermissions, GroupPairUserInfo GroupUserInfo, DateTime? GroupUserJoinedAt, + GroupUserPreferredPermissions GroupUserPermissions, GroupPairUserInfo GroupUserInfo, Dictionary GroupPairUserInfos) : GroupInfoDto(Group, Owner, GroupPermissions) { public GroupUserPreferredPermissions GroupUserPermissions { get; set; } = GroupUserPermissions; public GroupPairUserInfo GroupUserInfo { get; set; } = GroupUserInfo; - public DateTime? GroupUserJoinedAt { get; set; } = GroupUserJoinedAt; } \ No newline at end of file From aec2a5023e8a513b63dc03d59a70aa51ab61941c Mon Sep 17 00:00:00 2001 From: defnotken Date: Thu, 25 Sep 2025 10:25:12 -0500 Subject: [PATCH 08/14] remove created at for now --- LightlessSyncAPI/Data/GroupData.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/LightlessSyncAPI/Data/GroupData.cs b/LightlessSyncAPI/Data/GroupData.cs index 5e26435..6fc07ba 100644 --- a/LightlessSyncAPI/Data/GroupData.cs +++ b/LightlessSyncAPI/Data/GroupData.cs @@ -6,8 +6,5 @@ namespace LightlessSync.API.Data; public record GroupData(string GID, string? Alias = null, DateTime? CreatedAt = null) { [IgnoreMember] - public string AliasOrGID => string.IsNullOrWhiteSpace(Alias) ? GID : Alias; - [IgnoreMember] - public DateTime? CreatedAt { get; set; } = CreatedAt; - + public string AliasOrGID => Alias ?? GID; } \ No newline at end of file From 3c10380162b162c47c99f63ecfc627a49887fe84 Mon Sep 17 00:00:00 2001 From: azyges <229218900+azyges@users.noreply.github.com> Date: Fri, 26 Sep 2025 04:31:43 +0900 Subject: [PATCH 09/14] clear lightfinder joiners --- LightlessSyncAPI/Dto/Group/GroupJoinDto.cs | 2 +- LightlessSyncAPI/SignalR/ILightlessHub.cs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/LightlessSyncAPI/Dto/Group/GroupJoinDto.cs b/LightlessSyncAPI/Dto/Group/GroupJoinDto.cs index 2bb89fd..43c1c74 100644 --- a/LightlessSyncAPI/Dto/Group/GroupJoinDto.cs +++ b/LightlessSyncAPI/Dto/Group/GroupJoinDto.cs @@ -8,4 +8,4 @@ namespace LightlessSync.API.Dto.Group; public record GroupPasswordDto(GroupData Group, string Password) : GroupDto(Group); [MessagePackObject(keyAsPropertyName: true)] -public record GroupJoinDto(GroupData Group, string Password, GroupUserPreferredPermissions GroupUserPreferredPermissions, bool Finder = false) : GroupPasswordDto(Group, Password); \ No newline at end of file +public record GroupJoinDto(GroupData Group, string Password, GroupUserPreferredPermissions GroupUserPreferredPermissions) : GroupPasswordDto(Group, Password); \ No newline at end of file diff --git a/LightlessSyncAPI/SignalR/ILightlessHub.cs b/LightlessSyncAPI/SignalR/ILightlessHub.cs index c6cdd48..54ff2cf 100644 --- a/LightlessSyncAPI/SignalR/ILightlessHub.cs +++ b/LightlessSyncAPI/SignalR/ILightlessHub.cs @@ -50,6 +50,7 @@ public interface ILightlessHub Task GroupChangeOwnership(GroupPairDto groupPair); Task GroupChangePassword(GroupPasswordDto groupPassword); Task GroupClear(GroupDto group); + Task GroupClearFinder(GroupDto group); Task GroupCreate(); Task> GroupCreateTempInvite(GroupDto group, int amount); Task GroupDelete(GroupDto group); From eb04433427d8b5144688004e436d833c6b63d39c Mon Sep 17 00:00:00 2001 From: azyges <229218900+azyges@users.noreply.github.com> Date: Fri, 26 Sep 2025 17:59:11 +0900 Subject: [PATCH 10/14] include vanity and colors --- LightlessSyncAPI/Data/UserData.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/LightlessSyncAPI/Data/UserData.cs b/LightlessSyncAPI/Data/UserData.cs index eb98245..cd1a19c 100644 --- a/LightlessSyncAPI/Data/UserData.cs +++ b/LightlessSyncAPI/Data/UserData.cs @@ -1,9 +1,16 @@ -using MessagePack; +using MessagePack; namespace LightlessSync.API.Data; [MessagePackObject(keyAsPropertyName: true)] -public record UserData(string UID, string? Alias = null, bool IsAdmin = false, bool IsModerator = false) +public record UserData( + string UID, + string? Alias = null, + bool IsAdmin = false, + bool IsModerator = false, + bool HasVanity = false, + string? TextColorHex = "", + string? TextGlowColorHex = "") { [IgnoreMember] public string AliasOrUID => string.IsNullOrWhiteSpace(Alias) ? UID : Alias; From b85b54f560d3d4d901b3af1421337a4b22b0d067 Mon Sep 17 00:00:00 2001 From: azyges <229218900+azyges@users.noreply.github.com> Date: Fri, 26 Sep 2025 18:52:35 +0900 Subject: [PATCH 11/14] vanity color dto, method --- LightlessSyncAPI/Dto/User/UserVanityColorsDto.cs | 6 ++++++ LightlessSyncAPI/SignalR/ILightlessHub.cs | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 LightlessSyncAPI/Dto/User/UserVanityColorsDto.cs diff --git a/LightlessSyncAPI/Dto/User/UserVanityColorsDto.cs b/LightlessSyncAPI/Dto/User/UserVanityColorsDto.cs new file mode 100644 index 0000000..9b9232a --- /dev/null +++ b/LightlessSyncAPI/Dto/User/UserVanityColorsDto.cs @@ -0,0 +1,6 @@ +using MessagePack; + +namespace LightlessSync.API.Dto.User; + +[MessagePackObject(keyAsPropertyName: true)] +public record UserVanityColorsDto(string? TextColorHex, string? TextGlowColorHex); diff --git a/LightlessSyncAPI/SignalR/ILightlessHub.cs b/LightlessSyncAPI/SignalR/ILightlessHub.cs index 54ff2cf..45f1bad 100644 --- a/LightlessSyncAPI/SignalR/ILightlessHub.cs +++ b/LightlessSyncAPI/SignalR/ILightlessHub.cs @@ -1,4 +1,4 @@ -using LightlessSync.API.Data; +using LightlessSync.API.Data; using LightlessSync.API.Data.Enum; using LightlessSync.API.Dto; using LightlessSync.API.Dto.CharaData; @@ -82,6 +82,7 @@ public interface ILightlessHub Task> UserGetPairedClients(); Task UserGetProfile(UserDto dto); Task UserPushData(UserCharaDataMessageDto dto); + Task UserUpdateVanityColors(UserVanityColorsDto dto); Task UserRemovePair(UserDto userDto); Task UserSetProfile(UserProfileDto userDescription); Task UserUpdateDefaultPermissions(DefaultPermissionsDto defaultPermissionsDto); From 5bfd21aaa90817f14c9e2931e77b20f4276f16ed Mon Sep 17 00:00:00 2001 From: azyges <229218900+azyges@users.noreply.github.com> Date: Fri, 26 Sep 2025 23:40:44 +0900 Subject: [PATCH 12/14] update connection dto --- LightlessSyncAPI/Dto/ConnectionDto.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/LightlessSyncAPI/Dto/ConnectionDto.cs b/LightlessSyncAPI/Dto/ConnectionDto.cs index eea8666..d52a83f 100644 --- a/LightlessSyncAPI/Dto/ConnectionDto.cs +++ b/LightlessSyncAPI/Dto/ConnectionDto.cs @@ -10,6 +10,9 @@ public record ConnectionDto(UserData User) public int ServerVersion { get; set; } public bool IsAdmin { get; set; } public bool IsModerator { get; set; } + public bool HasVanity { get; set; } + public string? TextColorHex { get; set; } + public string? TextGlowColorHex { get; set; } public ServerInfo ServerInfo { get; set; } = new(); public DefaultPermissionsDto DefaultPreferredPermissions { get; set; } = new(); } From 69f0e310bd78e0c56eab298199e6e2ca15bf56bd Mon Sep 17 00:00:00 2001 From: azyges <229218900+azyges@users.noreply.github.com> Date: Mon, 29 Sep 2025 04:57:07 +0900 Subject: [PATCH 13/14] nullable dto --- LightlessSyncAPI/SignalR/ILightlessHub.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LightlessSyncAPI/SignalR/ILightlessHub.cs b/LightlessSyncAPI/SignalR/ILightlessHub.cs index 45f1bad..eddca39 100644 --- a/LightlessSyncAPI/SignalR/ILightlessHub.cs +++ b/LightlessSyncAPI/SignalR/ILightlessHub.cs @@ -74,7 +74,7 @@ public interface ILightlessHub Task SetGroupBroadcastStatus(GroupBroadcastRequestDto dto); Task> GetBroadcastedGroups(List broadcastEntries); Task IsUserBroadcasting(string hashedCid); - Task AreUsersBroadcasting(List hashedCids); + Task AreUsersBroadcasting(List hashedCids); Task GetBroadcastTtl(string hashedCid); Task UserDelete(); @@ -103,4 +103,4 @@ public interface ILightlessHub Task GposeLobbyPushCharacterData(CharaDataDownloadDto charaDownloadDto); Task GposeLobbyPushPoseData(PoseData poseData); Task GposeLobbyPushWorldData(WorldData worldData); -} \ No newline at end of file +} From 6c542c0ccca0327896ef895f9de02a76869ea311 Mon Sep 17 00:00:00 2001 From: azyges <229218900+azyges@users.noreply.github.com> Date: Thu, 2 Oct 2025 09:16:40 +0900 Subject: [PATCH 14/14] pair notification method + dto --- LightlessSyncAPI/Dto/User/UserPairNotificationDto.cs | 10 ++++++++++ LightlessSyncAPI/SignalR/ILightlessHub.cs | 1 + 2 files changed, 11 insertions(+) create mode 100644 LightlessSyncAPI/Dto/User/UserPairNotificationDto.cs diff --git a/LightlessSyncAPI/Dto/User/UserPairNotificationDto.cs b/LightlessSyncAPI/Dto/User/UserPairNotificationDto.cs new file mode 100644 index 0000000..8cf52a4 --- /dev/null +++ b/LightlessSyncAPI/Dto/User/UserPairNotificationDto.cs @@ -0,0 +1,10 @@ +using MessagePack; + +namespace LightlessSync.API.Dto.User; + +[MessagePackObject(keyAsPropertyName: true)] +public sealed class UserPairNotificationDto +{ + public required string myHashedCid { get; init; } + public required string message { get; init; } +} \ No newline at end of file diff --git a/LightlessSyncAPI/SignalR/ILightlessHub.cs b/LightlessSyncAPI/SignalR/ILightlessHub.cs index eddca39..e96513c 100644 --- a/LightlessSyncAPI/SignalR/ILightlessHub.cs +++ b/LightlessSyncAPI/SignalR/ILightlessHub.cs @@ -24,6 +24,7 @@ public interface ILightlessHub Task Client_GroupSendProfile (GroupProfileDto groupInfo); Task Client_GroupSendInfo(GroupInfoDto groupInfo); Task Client_ReceiveServerMessage(MessageSeverity messageSeverity, string message); + Task Client_ReceiveBroadcastPairRequest(UserPairNotificationDto dto); Task Client_UpdateSystemInfo(SystemInfoDto systemInfo); Task Client_UserAddClientPair(UserPairDto dto); Task Client_UserReceiveCharacterData(OnlineUserCharaDataDto dataDto);