using Discord.API; using System.Text.Json; namespace Discord.Serialization.Json.Converters { internal class EntityOrIdPropertyConverter : IJsonPropertyConverter> { private readonly IJsonPropertyConverter _innerConverter; public EntityOrIdPropertyConverter(IJsonPropertyConverter innerConverter) { _innerConverter = innerConverter; } public EntityOrId Read(JsonReader reader, bool read = true) { if (read) reader.Read(); if (reader.ValueType == JsonValueType.Number) return new EntityOrId(reader.ParseUInt64()); return new EntityOrId(_innerConverter.Read(reader)); } public void Write(JsonWriter writer, EntityOrId value) { if (value.Object != null) _innerConverter.Write(writer, value.Object); else writer.WriteValue(value.Id); } } }