fix: Fix Deserialization in Audit Log Data Types (#1509)
* Get overwrite id and type from options * Create overwrites via API model
This commit is contained in:
@@ -25,7 +25,6 @@ namespace Discord.Rest
|
||||
internal static ChannelCreateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
|
||||
{
|
||||
var changes = entry.Changes;
|
||||
var overwrites = new List<Overwrite>();
|
||||
|
||||
var overwritesModel = changes.FirstOrDefault(x => x.ChangedProperty == "permission_overwrites");
|
||||
var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type");
|
||||
@@ -34,23 +33,17 @@ namespace Discord.Rest
|
||||
var nsfwModel = changes.FirstOrDefault(x => x.ChangedProperty == "nsfw");
|
||||
var bitrateModel = changes.FirstOrDefault(x => x.ChangedProperty == "bitrate");
|
||||
|
||||
var overwrites = overwritesModel.NewValue.ToObject<API.Overwrite[]>(discord.ApiClient.Serializer)
|
||||
.Select(x => new Overwrite(x.TargetId, x.TargetType, new OverwritePermissions(x.Allow, x.Deny)))
|
||||
.ToList();
|
||||
var type = typeModel.NewValue.ToObject<ChannelType>(discord.ApiClient.Serializer);
|
||||
var name = nameModel.NewValue.ToObject<string>(discord.ApiClient.Serializer);
|
||||
int? rateLimitPerUser = rateLimitPerUserModel?.NewValue?.ToObject<int>(discord.ApiClient.Serializer);
|
||||
bool? nsfw = nsfwModel?.NewValue?.ToObject<bool>(discord.ApiClient.Serializer);
|
||||
int? bitrate = bitrateModel?.NewValue?.ToObject<int>(discord.ApiClient.Serializer);
|
||||
var id = entry.TargetId.Value;
|
||||
|
||||
foreach (var overwrite in overwritesModel.NewValue)
|
||||
{
|
||||
var deny = overwrite["deny"].ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
var permType = overwrite["type"].ToObject<PermissionTarget>(discord.ApiClient.Serializer);
|
||||
var id = overwrite["id"].ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
var allow = overwrite["allow"].ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
|
||||
overwrites.Add(new Overwrite(id, permType, new OverwritePermissions(allow, deny)));
|
||||
}
|
||||
|
||||
return new ChannelCreateAuditLogData(entry.TargetId.Value, name, type, rateLimitPerUser, nsfw, bitrate, overwrites.ToReadOnlyCollection());
|
||||
return new ChannelCreateAuditLogData(id, name, type, rateLimitPerUser, nsfw, bitrate, overwrites.ToReadOnlyCollection());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -21,16 +21,17 @@ namespace Discord.Rest
|
||||
var changes = entry.Changes;
|
||||
|
||||
var denyModel = changes.FirstOrDefault(x => x.ChangedProperty == "deny");
|
||||
var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type");
|
||||
var idModel = changes.FirstOrDefault(x => x.ChangedProperty == "id");
|
||||
var allowModel = changes.FirstOrDefault(x => x.ChangedProperty == "allow");
|
||||
|
||||
var deny = denyModel.OldValue.ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
var type = typeModel.OldValue.ToObject<PermissionTarget>(discord.ApiClient.Serializer);
|
||||
var id = idModel.OldValue.ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
var allow = allowModel.OldValue.ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
|
||||
return new OverwriteDeleteAuditLogData(entry.TargetId.Value, new Overwrite(id, type, new OverwritePermissions(allow, deny)));
|
||||
var permissions = new OverwritePermissions(allow, deny);
|
||||
|
||||
var id = entry.Options.OverwriteTargetId.Value;
|
||||
var type = entry.Options.OverwriteType;
|
||||
|
||||
return new OverwriteDeleteAuditLogData(entry.TargetId.Value, new Overwrite(id, type, permissions));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user