Build / Build (push) Successful in 8m37s
- A Warn from a community's moderator about a persona's own post there becomes that persona's moderation_warning
notification (Mastodon's AccountWarning, with the reason and the post), believed from the community's own server or
from an account the community's moderators collection lists. Remote communities keep that collection's address
(attributedTo) as ForeignAvatar.ModeratorsURL; it is read only when a warning needs it.
- A Resolve{Flag} for one of our reports (`/grunts/flag-<report id>`) is kept as the report's remote resolution when it
comes from the server holding what was reported, or the community it was reported to; our own moderators'
resolution is never replaced. The moderators' report list shows both.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB
85 lines
2.8 KiB
C#
85 lines
2.8 KiB
C#
using MongoDB.Entities;
|
|
|
|
namespace PrivaPub.Models.Social
|
|
{
|
|
public class Block : Entity
|
|
{
|
|
public string AvatarId { get; set; }
|
|
public string TargetAccountId { get; set; }
|
|
public string TargetActorURI { get; set; }
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
}
|
|
|
|
//a remote account that blocked one of our personas (an inbound Block): its posts and notifications are hidden from the
|
|
//persona, the follows between them are gone, and the relationship says blocked_by, until it sends Undo{Block}
|
|
public class BlockedBy : Entity
|
|
{
|
|
public string AvatarId { get; set; }
|
|
public string ActorURI { get; set; }
|
|
public string AccountId { get; set; }//the blocker's ForeignAvatar.ID
|
|
public string ActivityURI { get; set; }
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
}
|
|
|
|
//a post an account elsewhere features (its `featured` collection, Add and Remove), shown first on its profile here;
|
|
//the lowest Position first
|
|
public class RemoteFeatured : Entity
|
|
{
|
|
public string ActorURI { get; set; }
|
|
public string ObjectURI { get; set; }
|
|
public string PostId { get; set; }
|
|
public int Position { get; set; }
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
}
|
|
|
|
public class Mute : Entity
|
|
{
|
|
public string AvatarId { get; set; }
|
|
public string TargetAccountId { get; set; }
|
|
public string TargetActorURI { get; set; }
|
|
public bool HideNotifications { get; set; } = true;
|
|
public DateTime? ExpiresAt { get; set; }
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
}
|
|
|
|
public class AccountDomainBlock : Entity
|
|
{
|
|
public string AvatarId { get; set; }
|
|
public string Domain { get; set; }
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
}
|
|
|
|
public class Bookmark : Entity
|
|
{
|
|
public string AvatarId { get; set; }
|
|
public string PostId { get; set; }
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
}
|
|
|
|
public class Pin : Entity
|
|
{
|
|
public string AvatarId { get; set; }
|
|
public string PostId { get; set; }
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
}
|
|
|
|
public class Report : Entity
|
|
{
|
|
public string ReporterAvatarId { get; set; }
|
|
public string ReporterActorURI { get; set; }
|
|
public string TargetAccountId { get; set; }
|
|
public string TargetActorURI { get; set; }
|
|
public List<string> PostIds { get; set; } = new();
|
|
public List<string> ObjectURIs { get; set; } = new();
|
|
public string Category { get; set; } = "other";
|
|
public string Comment { get; set; }
|
|
public bool Forwarded { get; set; }
|
|
public bool IsResolved { get; set; }
|
|
public string ResolvedBy { get; set; }
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
public DateTime? ResolvedAt { get; set; }
|
|
public DateTime? RemoteResolvedAt { get; set; }//the server holding the reported content says it dealt with it (Lemmy's Resolve{Flag})
|
|
public string RemoteResolvedBy { get; set; }
|
|
}
|
|
}
|