using System;
using Model = Discord.API.TeamMember;
using TeamModel = Discord.API.Team;
namespace Discord.Rest;
public class RestTeamMember : ITeamMember
{
///
public MembershipState MembershipState { get; }
///
public string[] Permissions { get; }
///
public ulong TeamId { get; }
///
public IUser User { get; }
///
public TeamRole Role { get; }
internal RestTeamMember(BaseDiscordClient discord, Model model, TeamModel team)
{
MembershipState = model.MembershipState switch
{
API.MembershipState.Invited => MembershipState.Invited,
API.MembershipState.Accepted => MembershipState.Accepted,
_ => throw new InvalidOperationException("Invalid membership state"),
};
Permissions = model.Permissions;
TeamId = model.TeamId;
User = RestUser.Create(discord, model.User);
if (team.OwnerUserId == model.User.Id)
Role = TeamRole.Owner;
else
Role = model.Role switch
{
"admin" => TeamRole.Admin,
"developer" => TeamRole.Developer,
"read_only" => TeamRole.ReadOnly,
_ => 0
};
}
}