@inherits LocalizableComponentBase @* Reports an account, and the post it was opened from, to the persona's server's moderators (/api/v1/reports). Forwarded, a remote account's server gets the report too, from PrivaPub's own actor: it never names the persona. *@ @Localizer["Report {0}", Account.Name] @if (Host is { } host) {

@Localizer["The copy comes from the server, never from you."]

}
@Localizer["Cancel"] @Localizer["Report"]
@code { [Inject] AccountService AccountService { get; set; } [Parameter, EditorRequired] public Account Account { get; set; } /// The post it was opened from, sent with the report. [Parameter] public Status Post { get; set; } [Parameter] public EventCallback OnClosed { get; set; } ReportForm form = new(); bool isSending; string error; // the account's own server, for a remote account string Host => Account.Acct?.Split('@') is [_, { Length: > 0 } host] ? host : null; protected override void OnInitialized() => IsLoading = false; async Task Send() { isSending = true; error = null; var result = await AccountService.Report(Account.Id, Post is null ? [] : [Post.Id], form.Comment, form.Category, Host is not null && form.Forward); isSending = false; if (result.IsInvalid) { Toast.AddResponseError(result); return; } Toast.AddResponseSuccess(Localizer["Report sent to the moderators."]); await OnClosed.InvokeAsync(); } Task Closed(bool open) => open ? Task.CompletedTask : OnClosed.InvokeAsync(); }