Browse Source

maybe working rest part?

pull/2507/head
Misha133 2 years ago
parent
commit
ac997a9d8c
4 changed files with 30 additions and 9 deletions
  1. +1
    -1
      src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs
  2. +26
    -5
      src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs
  3. +1
    -1
      src/Discord.Net.Rest/Entities/Interactions/Modals/RestModal.cs
  4. +2
    -2
      src/Discord.Net.Rest/Entities/Interactions/Modals/RestModalData.cs

+ 1
- 1
src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs View File

@@ -34,7 +34,7 @@ namespace Discord.Rest
? (DataModel)model.Data.Value
: null;

Data = new RestMessageComponentData(dataModel, client);
Data = new RestMessageComponentData(dataModel, client, Guild);
}

internal new static async Task<RestMessageComponent> CreateAsync(DiscordRestClient client, Model model, bool doApiCall)


+ 26
- 5
src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs View File

@@ -50,7 +50,7 @@ namespace Discord.Rest
/// <inheritdoc/>
public string Value { get; }

internal RestMessageComponentData(Model model, BaseDiscordClient discord)
internal RestMessageComponentData(Model model, BaseDiscordClient discord, IGuild guild)
{
CustomId = model.CustomId;
Type = model.ComponentType;
@@ -60,14 +60,23 @@ namespace Discord.Rest
if (model.Resolved.IsSpecified)
{
Users = model.Resolved.Value.Users.IsSpecified
? model.Resolved.Value.Users.Value.Select(user => RestUser.Create(discord, user.Value)).ToImmutableArray()
? model.Resolved.Value.Users.Value.Select(user => RestUser.Create(discord, user.Value))
.Concat(model.Resolved.Value.Members.IsSpecified
? model.Resolved.Value.Members.Value.Select(member => RestGuildUser.Create(discord, guild, member.Value))
: Array.Empty<RestGuildUser>()).ToImmutableArray()
: null;
}

Channels = model.Resolved.Value.Channels.IsSpecified
? model.Resolved.Value.Channels.Value.Select(channel => RestChannel.Create(discord, channel.Value)).ToImmutableArray()
: null;

Roles = model.Resolved.Value.Roles.IsSpecified
? model.Resolved.Value.Roles.Value.Select(role => RestRole.Create(discord, guild, role.Value)).ToImmutableArray()
: null;
}
}

internal RestMessageComponentData(IMessageComponent component, BaseDiscordClient discord)
internal RestMessageComponentData(IMessageComponent component, BaseDiscordClient discord, IGuild guild)
{
CustomId = component.CustomId;
Type = component.Type;
@@ -78,10 +87,22 @@ namespace Discord.Rest
if (component is API.SelectMenuComponent select)
{
Values = select.Values.GetValueOrDefault(null);

if (select.Resolved.IsSpecified)
{
Users = select.Resolved.Value.Users.IsSpecified
? select.Resolved.Value.Users.Value.Select(user => RestUser.Create(discord, user.Value)).ToImmutableArray()
? select.Resolved.Value.Users.Value.Select(user => RestUser.Create(discord, user.Value))
.Concat(select.Resolved.Value.Members.IsSpecified
? select.Resolved.Value.Members.Value.Select(member => RestGuildUser.Create(discord, guild, member.Value))
: Array.Empty<RestGuildUser>()).ToImmutableArray()
: null;

Channels = select.Resolved.Value.Channels.IsSpecified
? select.Resolved.Value.Channels.Value.Select(channel => RestChannel.Create(discord, channel.Value)).ToImmutableArray()
: null;

Roles = select.Resolved.Value.Roles.IsSpecified
? select.Resolved.Value.Roles.Value.Select(role => RestRole.Create(discord, guild, role.Value)).ToImmutableArray()
: null;
}
}


+ 1
- 1
src/Discord.Net.Rest/Entities/Interactions/Modals/RestModal.cs View File

@@ -23,7 +23,7 @@ namespace Discord.Rest
? (DataModel)model.Data.Value
: null;

Data = new RestModalData(dataModel, client);
Data = new RestModalData(dataModel, client, Guild);
}

internal new static async Task<RestModal> CreateAsync(DiscordRestClient client, ModelBase model, bool doApiCall)


+ 2
- 2
src/Discord.Net.Rest/Entities/Interactions/Modals/RestModalData.cs View File

@@ -22,12 +22,12 @@ namespace Discord.Rest

IReadOnlyCollection<IComponentInteractionData> IModalInteractionData.Components => Components;

internal RestModalData(Model model, BaseDiscordClient discord)
internal RestModalData(Model model, BaseDiscordClient discord, IGuild guild)
{
CustomId = model.CustomId;
Components = model.Components
.SelectMany(x => x.Components)
.Select(x => new RestMessageComponentData(x, discord))
.Select(x => new RestMessageComponentData(x, discord, guild))
.ToArray();
}
}


Loading…
Cancel
Save