26 lines
847 B
C#
26 lines
847 B
C#
using PrivaPub.Federation.Actors;
|
|||
|
|
using PrivaPub.Models.User;
|
||
|
|
|
||
|
|
using System.Text.Json.Nodes;
|
||
|
|
|
||
|
|
namespace PrivaPub.Federation.Inbox.Handlers
|
||
|
|
{
|
||
|
|
// An account pins one of its posts (Add to its `featured` collection) or unpins it (Remove), as Mastodon and Akkoma
|
||
|
|
// send it; inside a community's announce, the community features a post made in it. Any other target (Smithereen's
|
||
|
|
// wall, a community's moderators) is not ours to keep.
|
||
|
|
public class FeaturedHandler : IActivityHandler
|
||
|
|
{
|
||
|
|
readonly IFeaturedPosts _featured;
|
||
|
|
readonly bool _add;
|
||
|
|
|
||
|
|
public FeaturedHandler(IFeaturedPosts featured, bool add)
|
||
|
|
{
|
||
|
|
_featured = featured;
|
||
|
|
_add = add;
|
||
|
|
}
|
||
|
|
|
||
|
|
public string Type => _add ? "Add" : "Remove";
|
||
|
|
|
||
|
|
public Task Handle(JsonNode activity, ForeignAvatar actor, CancellationToken token) => _featured.Receive(activity, actor, _add, token);
|
||
|
|
}
|
||
|
|
}
|