[backend/federation] Add To & Cc fields to create & update activities

This commit is contained in:
Laura Hausmann 2024-02-17 03:51:25 +01:00
parent d4d75f49ef
commit be00d5237f
No known key found for this signature in database
GPG key ID: D044E84C5BE01605
2 changed files with 50 additions and 4 deletions

View file

@ -16,14 +16,22 @@ public class ActivityRenderer(
private string GenerateActivityId() => private string GenerateActivityId() =>
$"https://{config.Value.WebDomain}/activities/{Guid.NewGuid().ToString().ToLowerInvariant()}"; $"https://{config.Value.WebDomain}/activities/{Guid.NewGuid().ToString().ToLowerInvariant()}";
public static ASCreate RenderCreate(ASObject obj, ASObject actor) => new() public static ASCreate RenderCreate(ASNote obj, ASObject actor) => new()
{ {
Id = $"{obj.Id}#Create", Actor = ASActor.FromObject(actor), Object = obj Id = $"{obj.Id}#Create",
Actor = ASActor.FromObject(actor),
Object = obj,
To = obj.To,
Cc = obj.Cc
}; };
public ASUpdate RenderUpdate(ASObject obj, ASObject actor) => new() public ASUpdate RenderUpdate(ASNote obj, ASObject actor) => new()
{ {
Id = GenerateActivityId(), Actor = ASActor.FromObject(actor), Object = obj Id = GenerateActivityId(),
Actor = ASActor.FromObject(actor),
Object = obj,
To = obj.To,
Cc = obj.Cc
}; };
public ASAccept RenderAccept(User followee, User follower, string requestId) => new() public ASAccept RenderAccept(User followee, User follower, string requestId) => new()

View file

@ -1,6 +1,7 @@
using Iceshrimp.Backend.Core.Configuration; using Iceshrimp.Backend.Core.Configuration;
using J = Newtonsoft.Json.JsonPropertyAttribute; using J = Newtonsoft.Json.JsonPropertyAttribute;
using JC = Newtonsoft.Json.JsonConverterAttribute; using JC = Newtonsoft.Json.JsonConverterAttribute;
using JI = Newtonsoft.Json.JsonIgnoreAttribute;
namespace Iceshrimp.Backend.Core.Federation.ActivityStreams.Types; namespace Iceshrimp.Backend.Core.Federation.ActivityStreams.Types;
@ -33,6 +34,24 @@ public class ASActivity : ASObject
public class ASCreate : ASActivity public class ASCreate : ASActivity
{ {
public ASCreate() => Type = Types.Create; public ASCreate() => Type = Types.Create;
[J($"{Constants.ActivityStreamsNs}#to")]
public List<ASObjectBase>? To { get; set; }
[J($"{Constants.ActivityStreamsNs}#cc")]
public List<ASObjectBase>? Cc { get; set; }
[JI]
public new ASNote? Object
{
get => base.Object as ASNote;
set
{
base.Object = value;
To = value?.To;
Cc = value?.Cc;
}
}
} }
public class ASDelete : ASActivity public class ASDelete : ASActivity
@ -73,6 +92,25 @@ public class ASLike : ASActivity
public class ASUpdate : ASActivity public class ASUpdate : ASActivity
{ {
public ASUpdate() => Type = Types.Update; public ASUpdate() => Type = Types.Update;
[J($"{Constants.ActivityStreamsNs}#to")]
public List<ASObjectBase>? To { get; set; }
[J($"{Constants.ActivityStreamsNs}#cc")]
public List<ASObjectBase>? Cc { get; set; }
[J($"{Constants.ActivityStreamsNs}#object")]
public new ASObject? Object
{
get => base.Object;
set
{
base.Object = value;
if (value is not ASNote note) return;
To = note.To;
Cc = note.Cc;
}
}
} }
//TODO: add the rest //TODO: add the rest