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)
|
internal static ChannelCreateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
|
||||||
{
|
{
|
||||||
var changes = entry.Changes;
|
var changes = entry.Changes;
|
||||||
var overwrites = new List<Overwrite>();
|
|
||||||
|
|
||||||
var overwritesModel = changes.FirstOrDefault(x => x.ChangedProperty == "permission_overwrites");
|
var overwritesModel = changes.FirstOrDefault(x => x.ChangedProperty == "permission_overwrites");
|
||||||
var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type");
|
var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type");
|
||||||
@@ -34,23 +33,17 @@ namespace Discord.Rest
|
|||||||
var nsfwModel = changes.FirstOrDefault(x => x.ChangedProperty == "nsfw");
|
var nsfwModel = changes.FirstOrDefault(x => x.ChangedProperty == "nsfw");
|
||||||
var bitrateModel = changes.FirstOrDefault(x => x.ChangedProperty == "bitrate");
|
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 type = typeModel.NewValue.ToObject<ChannelType>(discord.ApiClient.Serializer);
|
||||||
var name = nameModel.NewValue.ToObject<string>(discord.ApiClient.Serializer);
|
var name = nameModel.NewValue.ToObject<string>(discord.ApiClient.Serializer);
|
||||||
int? rateLimitPerUser = rateLimitPerUserModel?.NewValue?.ToObject<int>(discord.ApiClient.Serializer);
|
int? rateLimitPerUser = rateLimitPerUserModel?.NewValue?.ToObject<int>(discord.ApiClient.Serializer);
|
||||||
bool? nsfw = nsfwModel?.NewValue?.ToObject<bool>(discord.ApiClient.Serializer);
|
bool? nsfw = nsfwModel?.NewValue?.ToObject<bool>(discord.ApiClient.Serializer);
|
||||||
int? bitrate = bitrateModel?.NewValue?.ToObject<int>(discord.ApiClient.Serializer);
|
int? bitrate = bitrateModel?.NewValue?.ToObject<int>(discord.ApiClient.Serializer);
|
||||||
|
var id = entry.TargetId.Value;
|
||||||
|
|
||||||
foreach (var overwrite in overwritesModel.NewValue)
|
return new ChannelCreateAuditLogData(id, name, type, rateLimitPerUser, nsfw, bitrate, overwrites.ToReadOnlyCollection());
|
||||||
{
|
|
||||||
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());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -21,16 +21,17 @@ namespace Discord.Rest
|
|||||||
var changes = entry.Changes;
|
var changes = entry.Changes;
|
||||||
|
|
||||||
var denyModel = changes.FirstOrDefault(x => x.ChangedProperty == "deny");
|
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 allowModel = changes.FirstOrDefault(x => x.ChangedProperty == "allow");
|
||||||
|
|
||||||
var deny = denyModel.OldValue.ToObject<ulong>(discord.ApiClient.Serializer);
|
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);
|
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>
|
/// <summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user