24 lines
826 B
C#
24 lines
826 B
C#
using MongoDB.Entities;
|
|||
|
|
|
||
|
|
using PrivaPub.StaticServices;
|
||
|
|
|
||
|
|
using PostEntity = PrivaPub.Models.Post.Post;
|
||
|
|
|
||
|
|
namespace PrivaPub.Federation.Inbox
|
||
|
|
{
|
||
|
|
public static class Communities
|
||
|
|
{
|
||
|
|
// the remote community a post was made in: its own audience, or the first one its thread names on the way up (a
|
||
|
|
// comment fetched for its thread, or delivered to a persona, may name none)
|
||
|
|
public static async Task<string> Of(PostEntity post, DbEntities dbEntities, CancellationToken token)
|
||
|
|
{
|
||
|
|
for (var depth = 0; post != default && depth < RemotePosts.MaxDepth; depth++)
|
||
|
|
{
|
||
|
|
if (!string.IsNullOrEmpty(post.AudienceURI))
|
||
|
|
return post.AudienceURI;
|
||
|
|
post = string.IsNullOrEmpty(post.AnsweringToPostId) ? default : await dbEntities.Posts.MatchID(post.AnsweringToPostId).ExecuteFirstAsync(token);
|
||
|
|
}
|
||
|
|
return default;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|