{% macro embed_csrf_token() %}
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
{% endmacro %}

{% macro embed_redirect_url() %}
<input type="hidden" name="redirect_url" value="{{ request.url }}">
{% endmacro %}

{% macro admin_follow_button(actor) %}
<form action="{{ request.url_for("admin_actions_follow") }}" method="POST">
    {{ embed_csrf_token() }}
    {{ embed_redirect_url() }}
    <input type="hidden" name="ap_actor_id" value="{{ actor.ap_id }}">
    <input type="submit" value="Follow">
</form>
{% endmacro %}

{% macro admin_like_button(ap_object_id) %}
<form action="{{ request.url_for("admin_actions_like") }}" method="POST">
    {{ embed_csrf_token() }}
    {{ embed_redirect_url() }}
    <input type="hidden" name="ap_object_id" value="{{ ap_object_id }}">
    <input type="submit" value="Like">
</form>
{% endmacro %}

{% macro admin_bookmark_button(ap_object_id) %}
<form action="{{ request.url_for("admin_actions_bookmark") }}" method="POST">
    {{ embed_csrf_token() }}
    {{ embed_redirect_url() }}
    <input type="hidden" name="ap_object_id" value="{{ ap_object_id }}">
    <input type="submit" value="Bookmark">
</form>
{% endmacro %}

{% macro admin_unbookmark_button(ap_object_id) %}
<form action="{{ request.url_for("admin_actions_unbookmark") }}" method="POST">
    {{ embed_csrf_token() }}
    {{ embed_redirect_url() }}
    <input type="hidden" name="ap_object_id" value="{{ ap_object_id }}">
    <input type="submit" value="Unbookmark">
</form>
{% endmacro %}

{% macro admin_pin_button(ap_object_id) %}
<form action="{{ request.url_for("admin_actions_pin") }}" method="POST">
    {{ embed_csrf_token() }}
    {{ embed_redirect_url() }}
    <input type="hidden" name="ap_object_id" value="{{ ap_object_id }}">
    <input type="submit" value="Pin">
</form>
{% endmacro %}

{% macro admin_unpin_button(ap_object_id) %}
<form action="{{ request.url_for("admin_actions_unpin") }}" method="POST">
    {{ embed_csrf_token() }}
    {{ embed_redirect_url() }}
    <input type="hidden" name="ap_object_id" value="{{ ap_object_id }}">
    <input type="submit" value="Unpin">
</form>
{% endmacro %}

{% macro admin_announce_button(ap_object_id, disabled=False) %}
<form action="{{ request.url_for("admin_actions_announce") }}" method="POST">
    {{ embed_csrf_token() }}
    {{ embed_redirect_url() }}
    <input type="hidden" name="ap_object_id" value="{{ ap_object_id }}">
    <input type="submit" value="Share" {% if disabled %}title="Cannot share non-public content" disabled{% endif %}>
</form>
{% endmacro %}

{% macro admin_undo_button(ap_object_id, action="Undo") %}
<form action="{{ request.url_for("admin_actions_undo") }}" method="POST">
    {{ embed_csrf_token() }}
    {{ embed_redirect_url() }}
    <input type="hidden" name="ap_object_id" value="{{ ap_object_id }}">
    <input type="submit" value="{{ action }}">
</form>
{% endmacro %}

{% macro sensitive_button(permalink_id) %}
<form action=""  method="GET">
<input type="hidden" name="show_sensitive" value="{{ permalink_id }}">
{% for k, v in request.query_params.items() %}
<input type="hidden" name="{{k}}" value="{{v}}">
{% endfor %}
<button type="submit">display sensitive content</button>
</form> 
{% endmacro %}

{% macro admin_reply_button(ap_object_id) %}
<form action="/admin/new"  method="GET">
<input type="hidden" name="in_reply_to" value="{{ ap_object_id }}">
<button type="submit">Reply</button>
</form> 
{% endmacro %}

{% macro admin_profile_button(ap_actor_id) %}
<form action="{{ url_for("admin_profile") }}"  method="GET">
<input type="hidden" name="actor_id" value="{{ ap_actor_id }}">
<button type="submit">Profile</button>
</form> 
{% endmacro %}

{% macro admin_expand_button(ap_object_id) %}
<form action="{{ url_for("admin_object") }}"  method="GET">
<input type="hidden" name="ap_id" value="{{ ap_object_id }}">
<button type="submit">Expand</button>
</form> 
{% endmacro %}

{% macro display_box_filters(route) %}
<p>Filter by
{% for ap_type in ["Note", "Like", "Announce", "Follow"] %}
<a style="margin-right:12px;" href="{{ url_for(route) }}?filter_by={{ ap_type }}">
    {% if request.query_params.filter_by == ap_type %}
    <strong>{{ ap_type }}</strong>
    {% else %}
    {{ ap_type }}
    {% endif %}</a>
{% endfor %}.
{% if request.query_params.filter_by %}<a href="{{ url_for(route) }}">Reset filter</a>{% endif %}</p>
</p>
{% endmacro %}

{% macro display_actor(actor, actors_metadata) %}
{% set metadata = actors_metadata.get(actor.ap_id) %}
<div style="display: flex;column-gap: 20px;margin:20px 0 10px 0;" class="actor-box h-card p-author">
    <div style="flex: 0 0 48px;">
        <img src="{{ actor.resized_icon_url }}" style="max-width:45px;">
    </div>
    <a href="{{ actor.url }}" class="u-url" style="">
        <div><strong>{{ actor.display_name | clean_html(actor) | safe  }}</strong></div>
        <div class="p-name">{{ actor.handle }}</div>
    </a>
</div>
{% if is_admin and metadata %}
<div>
    <nav class="flexbox">
    <ul>
            {% if metadata.is_following %}
                <li>already following</li>
                <li>{{ admin_undo_button(metadata.outbox_follow_ap_id, "Unfollow")}}</li>
            {% elif metadata.is_follow_request_sent %}
                <li>follow request sent</li>
            {% else %}
                <li>{{ admin_follow_button(actor) }}</li>
            {% endif %}
            {% if metadata.is_follower %}
                <li>follows you</li>
            {% endif %}
        </li>
    </ul>
    </nav>
</div>
{% endif %}

{% endmacro %}

{% macro display_object_expanded(object) %}

<div class="activity-expanded h-entry">

{{ display_actor(object.actor, {}) }}

<div class="e-content">
{{ object.content | clean_html(object) | safe }}
</div>

<a href="{{ object.url }}" class="u-url u-uid"><time class="dt-published" datetime="{{ object.ap_published_at }}">{{ object.ap_published_at | format_date }}</time></a>
{{ object.visibility.value }}
{% if object.is_from_outbox %}
{{ object.likes_count }} likes
{% endif %}

{% if object.is_from_outbox %}
{{ object.announces_count }} shares
{% endif %}


</div>

{% endmacro %}

{% macro display_object(object) %}
{% if object.ap_type in ["Note", "Article", "Video"] %}
<div class="activity-wrap h-entry" id="{{ object.permalink_id }}">
  <div class="activity-content">
      <img src="{{ object.actor.resized_icon_url }}" alt="" class="actor-icon">
    <div class="activity-header">
        <strong>{{ object.actor.display_name }}</strong>
        <a href="{{ object.actor.url}}" class="p-author h-card">{{ object.actor.handle }}</a>
        <span class="activity-date" title="{{ object.ap_published_at.isoformat() }}">
            {{ object.visibility.value }}
            <a href="{{ object.url }}" class="u-url u-uid"><time class="dt-published" datetime="{{ object.ap_published_at }}">{{ object.ap_published_at | timeago }}</time></a>
        </span>
        <div class="activity-main e-content">
            {{ object.content | clean_html(object) | safe }}
        </div>
    </div>
  </div>
  {% if object.attachments and object.sensitive and not request.query_params["show_sensitive"] == object.permalink_id %}
  <div class="activity-attachment">
  {{ sensitive_button(object.permalink_id )}}
  </div>
  {% endif %}

  {% if object.attachments and (not object.sensitive or (object.sensitive and request.query_params["show_sensitive"] == object.permalink_id)) %}
  <div class="activity-attachment">
    {% for attachment in object.attachments %}
    {% if attachment.type == "Image" or (attachment | has_media_type("image")) %}
    <img src="{{ attachment.resized_url or attachment.proxied_url }}"{% if attachment.name %} alt="{{ attachment.name }}"{% endif %} class="attachment">
    {% elif attachment.type == "Video" or (attachment | has_media_type("video")) %}
    <video controls preload="metadata"  src="{{ attachment.url | media_proxy_url }}"{% if attachment.name %} title="{{ attachment.name }}"{% endif %} class="attachmeent"></video>
    {% elif attachment.type == "Audio" or (attachment | has_media_type("audio")) %}
    <audio controls preload="metadata"  src="{{ attachment.url | media_proxy_url }}"{% if attachment.name%} title="{{ attachment.name }}"{% endif %} style="width:480px;" class="attachment"></audio>
    {% else %}
    <a href="{{ attachment.url | media_proxy_url }}"{% if attachment.name %} title="{{ attachment.name }}"{% endif %} class="attachment">{{ attachment.url }}</a>
    {% endif %}
    {% endfor %}
  </div>
  {% endif %}
  <div class="activity-bar">
    {% if object.is_from_outbox %}
    <div class="bar-item">
        <div class="comment-count">{{ object.likes_count }} like{{ object.likes_count | pluralize }}</div>
    </div>
    
    <div class="bar-item">
        <div class="retweet-count">{{ object.announces_count }} share{{ object.announces_count | pluralize }}</div>
    </div>

    <div class="bar-item">
        <div class="retweet-count">{{ object.replies_count }} repl{{ object.replies_count | pluralize("y", "ies") }}</div>
    </div>

    {% if is_admin %}
    <div class="bar-item">
        {{ admin_reply_button(object.ap_id) }}
    </div>
    <div class="bar-item">
        {% if object.is_pinned %}
            {{ admin_unpin_button(object.ap_id) }}
        {% else %}
            {{ admin_pin_button(object.ap_id) }}
        {% endif %}
    </div>
    {% endif %}
    {% endif %}

    {% if object.is_from_inbox %}
            <div class="bar-item">
            {% if object.liked_via_outbox_object_ap_id %}
                {{ admin_undo_button(object.liked_via_outbox_object_ap_id, "Unlike") }}
            {% else %}
                {{ admin_like_button(object.ap_id) }}
            {% endif %}
            </div>
            <div class="bar-item">
            {% if object.is_bookmarked %}
                {{ admin_unbookmark_button(object.ap_id) }}
            {% else %}
                {{ admin_bookmark_button(object.ap_id) }}
            {% endif %}
            </div>
            <div class="bar-item">
            {% if object.announced_via_outbox_object_ap_id %}
                {{ admin_undo_button(object.liked_via_outbox_object_ap_id, "Unshare") }}
            {% else %}
                {{ admin_announce_button(object.ap_id, disabled=object.visibility not in [visibility_enum.PUBLIC, visibility_enum.UNLISTED]) }}
            {% endif %}
            </div>
            <div class="bar-item">
                {{ admin_reply_button(object.ap_id) }}
            </div>
            <div class="bar-item">
                {{ admin_profile_button(object.actor.ap_id) }}
            </div>
            <div class="bar-item">
                {{ admin_expand_button(object.ap_id) }}
            </div>


    {% endif %}
    
  </div>
</div>
{% elif object.ap_type == "Follow" %}

    {% if object.is_from_inbox %}
    <div class="actor-action">
        {{ object.actor.display_name }} followed you
        <span>{{ object.ap_published_at | timeago }}</span>
    </div>
    {{ display_actor(object.actor, {}) }}
    {% endif %}

{% endif %}
{% endmacro %}