154 lines
5.7 KiB
C#
154 lines
5.7 KiB
C#
using LightlessSync.API.Data;
|
|
using LightlessSync.API.Data.Enum;
|
|
using LightlessSync.API.Data.Extensions;
|
|
using LightlessSync.API.Dto.Group;
|
|
using LightlessSync.API.Dto.User;
|
|
using LightlessSyncShared.Models;
|
|
using static LightlessSyncServer.Hubs.LightlessHub;
|
|
|
|
namespace LightlessSyncServer.Utils;
|
|
|
|
public static class Extensions
|
|
{
|
|
public static void UpdateProfileFromDto(this GroupProfile profile, GroupProfileDto dto, string? base64PictureString = null, string? base64BannerString = null)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(profile);
|
|
ArgumentNullException.ThrowIfNull(dto);
|
|
|
|
if (profile == null || dto == null) return;
|
|
|
|
profile.Base64GroupProfileImage = string.IsNullOrWhiteSpace(base64PictureString) ? null : base64PictureString;
|
|
profile.Base64GroupBannerImage = string.IsNullOrWhiteSpace(base64BannerString) ? null : base64BannerString;
|
|
if (dto.Tags != null) profile.Tags = dto.Tags;
|
|
if (dto.Description != null) profile.Description = dto.Description;
|
|
if (dto.IsNsfw.HasValue) profile.IsNSFW = dto.IsNsfw.Value;
|
|
}
|
|
|
|
public static void UpdateProfileFromDto(this UserProfileData profile, UserProfileDto dto, string? base64PictureString, string? base64BannerString = null)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(profile);
|
|
ArgumentNullException.ThrowIfNull(dto);
|
|
|
|
if (profile == null || dto == null) return;
|
|
|
|
profile.Base64ProfileImage = string.IsNullOrWhiteSpace(base64PictureString) ? null : base64PictureString;
|
|
profile.Base64BannerImage = string.IsNullOrWhiteSpace(base64BannerString) ? null : base64BannerString;
|
|
if (dto.Tags != null) profile.Tags = dto.Tags;
|
|
if (dto.Description != null) profile.UserDescription = dto.Description;
|
|
if (dto.IsNSFW.HasValue) profile.IsNSFW = dto.IsNSFW.Value;
|
|
}
|
|
|
|
public static GroupProfileDto ToDTO(this GroupProfile groupProfile)
|
|
{
|
|
if (groupProfile == null)
|
|
{
|
|
return new GroupProfileDto(Group: null, Description: null, Tags: null, PictureBase64: null, BannerBase64: null, IsNsfw: false, IsDisabled: false);
|
|
}
|
|
|
|
var groupData = groupProfile.Group?.ToGroupData();
|
|
|
|
return new GroupProfileDto(
|
|
groupData,
|
|
groupProfile.Description,
|
|
groupProfile.Tags,
|
|
groupProfile.Base64GroupProfileImage,
|
|
groupProfile.Base64GroupBannerImage,
|
|
groupProfile.IsNSFW,
|
|
groupProfile.ProfileDisabled
|
|
);
|
|
}
|
|
|
|
public static UserProfileDto ToDTO(this UserProfileData userProfileData)
|
|
{
|
|
if (userProfileData == null)
|
|
{
|
|
return new UserProfileDto(User: null, Disabled: false, IsNSFW: null, ProfilePictureBase64: null, BannerPictureBase64: null, Description: null, Tags: []);
|
|
}
|
|
|
|
var userData = userProfileData.User?.ToUserData();
|
|
|
|
return new UserProfileDto(
|
|
userData,
|
|
userProfileData.ProfileDisabled,
|
|
userProfileData.IsNSFW,
|
|
userProfileData.Base64ProfileImage,
|
|
userProfileData.Base64BannerImage,
|
|
userProfileData.UserDescription,
|
|
userProfileData.Tags
|
|
);
|
|
}
|
|
|
|
public static GroupData ToGroupData(this Group group)
|
|
{
|
|
if (group == null)
|
|
return null;
|
|
|
|
return new GroupData(group.GID, group.Alias, group.CreatedDate);
|
|
}
|
|
|
|
public static UserData ToUserData(this GroupPair pair)
|
|
{
|
|
if (pair == null)
|
|
return null;
|
|
|
|
return new UserData(pair.GroupUser.UID, pair.GroupUser.Alias);
|
|
}
|
|
|
|
public static UserData ToUserData(this User user)
|
|
{
|
|
if (user == null)
|
|
return null;
|
|
|
|
return new UserData(user.UID, user.Alias);
|
|
}
|
|
|
|
public static IndividualPairStatus ToIndividualPairStatus(this UserInfo userInfo)
|
|
{
|
|
if (userInfo.IndividuallyPaired) return IndividualPairStatus.Bidirectional;
|
|
if (!userInfo.IndividuallyPaired && userInfo.GIDs.Contains(Constants.IndividualKeyword, StringComparer.Ordinal)) return IndividualPairStatus.OneSided;
|
|
return IndividualPairStatus.None;
|
|
}
|
|
|
|
public static GroupPermissions ToEnum(this Group group)
|
|
{
|
|
var permissions = GroupPermissions.NoneSet;
|
|
permissions.SetPreferDisableAnimations(group.PreferDisableAnimations);
|
|
permissions.SetPreferDisableSounds(group.PreferDisableSounds);
|
|
permissions.SetPreferDisableVFX(group.PreferDisableVFX);
|
|
permissions.SetDisableInvites(!group.InvitesEnabled);
|
|
return permissions;
|
|
}
|
|
|
|
public static GroupUserPreferredPermissions ToEnum(this GroupPairPreferredPermission groupPair)
|
|
{
|
|
var permissions = GroupUserPreferredPermissions.NoneSet;
|
|
permissions.SetDisableAnimations(groupPair.DisableAnimations);
|
|
permissions.SetDisableSounds(groupPair.DisableSounds);
|
|
permissions.SetPaused(groupPair.IsPaused);
|
|
permissions.SetDisableVFX(groupPair.DisableVFX);
|
|
return permissions;
|
|
}
|
|
|
|
public static GroupPairUserInfo ToEnum(this GroupPair groupPair)
|
|
{
|
|
var groupUserInfo = GroupPairUserInfo.None;
|
|
groupUserInfo.SetPinned(groupPair.IsPinned);
|
|
groupUserInfo.SetModerator(groupPair.IsModerator);
|
|
return groupUserInfo;
|
|
}
|
|
|
|
public static UserPermissions ToUserPermissions(this UserPermissionSet? permissions, bool setSticky = false)
|
|
{
|
|
if (permissions == null) return UserPermissions.NoneSet;
|
|
|
|
UserPermissions perm = UserPermissions.NoneSet;
|
|
perm.SetPaused(permissions.IsPaused);
|
|
perm.SetDisableAnimations(permissions.DisableAnimations);
|
|
perm.SetDisableSounds(permissions.DisableSounds);
|
|
perm.SetDisableVFX(permissions.DisableVFX);
|
|
if (setSticky)
|
|
perm.SetSticky(permissions.Sticky);
|
|
return perm;
|
|
}
|
|
}
|