diff --git a/Iceshrimp.Backend/Core/Federation/ActivityStreams/Types/ASCollection.cs b/Iceshrimp.Backend/Core/Federation/ActivityStreams/Types/ASCollection.cs index b4dba90a..ffba362f 100644 --- a/Iceshrimp.Backend/Core/Federation/ActivityStreams/Types/ASCollection.cs +++ b/Iceshrimp.Backend/Core/Federation/ActivityStreams/Types/ASCollection.cs @@ -31,12 +31,12 @@ public class ASCollection : ASObject public ASLink? Current { get; set; } [J($"{Constants.ActivityStreamsNs}#first")] - [JC(typeof(ASLinkConverter))] - public ASLink? First { get; set; } + [JC(typeof(ASCollectionPageConverter))] + public ASCollectionPage? First { get; set; } [J($"{Constants.ActivityStreamsNs}#last")] - [JC(typeof(ASLinkConverter))] - public ASLink? Last { get; set; } + [JC(typeof(ASCollectionPageConverter))] + public ASCollectionPage? Last { get; set; } public new bool IsUnresolved => !TotalItems.HasValue; } diff --git a/Iceshrimp.Backend/Core/Federation/ActivityStreams/Types/ASCollectionPage.cs b/Iceshrimp.Backend/Core/Federation/ActivityStreams/Types/ASCollectionPage.cs index d3ec684c..8df4a493 100644 --- a/Iceshrimp.Backend/Core/Federation/ActivityStreams/Types/ASCollectionPage.cs +++ b/Iceshrimp.Backend/Core/Federation/ActivityStreams/Types/ASCollectionPage.cs @@ -27,16 +27,16 @@ public class ASCollectionPage : ASObject public ulong? TotalItems { get; set; } [J($"{Constants.ActivityStreamsNs}#partOf")] - [JC(typeof(ASLinkConverter))] - public ASLink? PartOf { get; set; } + [JC(typeof(ASCollectionConverter))] + public ASCollection? PartOf { get; set; } [J($"{Constants.ActivityStreamsNs}#prev")] - [JC(typeof(ASLinkConverter))] - public ASLink? Prev { get; set; } + [JC(typeof(ASCollectionPageConverter))] + public ASCollectionPage? Prev { get; set; } [J($"{Constants.ActivityStreamsNs}#next")] - [JC(typeof(ASLinkConverter))] - public ASLink? Next { get; set; } + [JC(typeof(ASCollectionPageConverter))] + public ASCollectionPage? Next { get; set; } } public sealed class ASCollectionPageConverter : JsonConverter @@ -55,10 +55,7 @@ public sealed class ASCollectionPageConverter : JsonConverter { if (reader.TokenType == JsonToken.StartArray) { - var obj = JArray.Load(reader); - var valueList = obj.ToObject>>(); - if (valueList is { Count: > 0 }) - return VC.HandleObject(valueList[0], objectType); + var obj = JArray.Load(reader); var list = obj.ToObject>(); return list == null || list.Count == 0 ? null : list[0]; } diff --git a/Iceshrimp.Backend/Core/Federation/ActivityStreams/Types/ASOrderedCollectionPage.cs b/Iceshrimp.Backend/Core/Federation/ActivityStreams/Types/ASOrderedCollectionPage.cs index 2b87eb02..b529d613 100644 --- a/Iceshrimp.Backend/Core/Federation/ActivityStreams/Types/ASOrderedCollectionPage.cs +++ b/Iceshrimp.Backend/Core/Federation/ActivityStreams/Types/ASOrderedCollectionPage.cs @@ -8,9 +8,9 @@ using VC = Iceshrimp.Backend.Core.Federation.ActivityStreams.Types.ValueObjectCo namespace Iceshrimp.Backend.Core.Federation.ActivityStreams.Types; -public class ASOrderedCollectionPage : ASObject +public class ASOrderedCollectionPage : ASCollectionPage { - public const string ObjectType = $"{Constants.ActivityStreamsNs}#OrderedCollectionPage"; + public new const string ObjectType = $"{Constants.ActivityStreamsNs}#OrderedCollectionPage"; [JsonConstructor] public ASOrderedCollectionPage(bool withType = true) => Type = withType ? ObjectType : null; @@ -19,24 +19,12 @@ public class ASOrderedCollectionPage : ASObject public ASOrderedCollectionPage(string id, bool withType = false) : this(withType) => Id = id; [J($"{Constants.ActivityStreamsNs}#items")] - [JC(typeof(ASCollectionItemsConverter))] - public List? Items { get; set; } - - [J($"{Constants.ActivityStreamsNs}#totalItems")] - [JC(typeof(VC))] - public ulong? TotalItems { get; set; } - - [J($"{Constants.ActivityStreamsNs}#partOf")] - [JC(typeof(ASLinkConverter))] - public ASLink? PartOf { get; set; } - - [J($"{Constants.ActivityStreamsNs}#prev")] - [JC(typeof(ASLinkConverter))] - public ASLink? Prev { get; set; } - - [J($"{Constants.ActivityStreamsNs}#next")] - [JC(typeof(ASLinkConverter))] - public ASLink? Next { get; set; } + [JC(typeof(ASOrderedCollectionItemsConverter))] + public new List? Items + { + get => base.Items; + set => base.Items = value; + } } public sealed class ASOrderedCollectionPageConverter : JsonConverter