- NodeInfo at /.well-known/nodeinfo + /nodeinfo/2.0
- Hashtags #MoviesDiary + #MovieTitle on review posts; /tags/{tag} redirect
- Domain blocking: blocked_domains table, admin API + HTML, inbox enforcement
- Per-actor blocking: blocked_actors table, user API + HTML, BlockActivity send/receive
- Delivery filter excludes blocked actors and blocked-domain inboxes
33 lines
1.1 KiB
HTML
33 lines
1.1 KiB
HTML
{% extends "base.html" %}
|
|
{% block content %}
|
|
<h2>Following</h2>
|
|
{% if let Some(err) = error %}
|
|
<p class="error">{{ err }}</p>
|
|
{% endif %}
|
|
{% if actors.is_empty() %}
|
|
<p>Not following anyone yet. Follow remote users from your <a href="/users/{{ user_id }}">profile page</a>.</p>
|
|
{% else %}
|
|
<ul class="following-list">
|
|
{% for actor in actors %}
|
|
<li class="following-item">
|
|
<strong>{{ actor.handle }}</strong>
|
|
{% if let Some(name) = actor.display_name %}
|
|
({{ name }})
|
|
{% endif %}
|
|
<a href="{{ actor.url }}" target="_blank" rel="noopener noreferrer">View profile ↗</a>
|
|
<form method="POST" action="/users/{{ user_id }}/unfollow" style="display:inline">
|
|
<input type="hidden" name="actor_url" value="{{ actor.url }}">
|
|
<input type="hidden" name="_csrf" value="{{ ctx.csrf_token }}">
|
|
<button type="submit">Unfollow</button>
|
|
</form>
|
|
<form method="POST" action="/social/block" style="display:inline">
|
|
<input type="hidden" name="actor_url" value="{{ actor.url }}">
|
|
<input type="hidden" name="_csrf" value="{{ ctx.csrf_token }}">
|
|
<button type="submit">Block</button>
|
|
</form>
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
{% endif %}
|
|
{% endblock %}
|