{% extends "root.html" %} {% block head %}
<title>{{ community.context.display_name }} - {{ config.name }}</title>
{% endblock %} {% block body %} {{ macros::nav() }}
<article>
    <div class="content_container flex flex-col gap-4">
        {{ components::community_banner(id=community.id, community=community) }}

        <div class="w-full flex gap-4 flex-collapse">
            <div
                class="lhs flex flex-col gap-2 sm:w-full"
                style="width: 20rem; min-width: 20rem"
            >
                <div class="card-nest w-full">
                    <div class="card flex gap-2" id="community_avatar_and_name">
                        {{ components::community_avatar(id=community.id,
                        community=community, size="72px") }}
                        <div class="flex flex-col">
                            <div class="flex gap-2 items-center">
                                <h3
                                    id="title"
                                    class="title name shorter flex gap-2"
                                >
                                    <!-- prettier-ignore -->
                                    {% if community.context.display_name %}
                                        {{ community.context.display_name }}
                                    {% else %}
                                        {{ community.title }}
                                    {% endif %}

                                    {% if community.context.is_nsfw %}
                                    <span
                                        title="NSFW community"
                                        class="flex items-center"
                                        style="color: var(--color-primary)"
                                    >
                                        {{ icon "square-asterisk" }}
                                    </span>
                                    {% endif %}
                                </h3>

                                {% if user %} {% if user.id != community.owner
                                %}
                                <div class="dropdown">
                                    <button
                                        class="camo small"
                                        onclick="trigger('atto::hooks::dropdown', [event])"
                                        exclude="dropdown"
                                    >
                                        {{ icon "ellipsis" }}
                                    </button>

                                    <div class="inner">
                                        <button
                                            class="red"
                                            onclick="trigger('me::report', ['{{ community.id }}', 'community'])"
                                        >
                                            {{ icon "flag" }}
                                            <span
                                                >{{ text "general:action.report"
                                                }}</span
                                            >
                                        </button>
                                    </div>
                                </div>
                                {% endif %} {% endif %}
                            </div>

                            <span class="fade">{{ community.title }}</span>
                        </div>
                    </div>

                    {% if user %}
                    <div class="card flex gap-2" id="join_or_leave">
                        {% if not is_owner %} {% if not is_joined %} {% if not
                        is_pending %}
                        <button class="primary" onclick="join_community()">
                            {{ icon "circle-plus" }}
                            <span>{{ text "communities:action.join" }}</span>
                        </button>

                        <script>
                            globalThis.join_community = () => {
                                fetch(
                                    "/api/v1/communities/{{ community.id }}/join",
                                    {
                                        method: "POST",
                                    },
                                )
                                    .then((res) => res.json())
                                    .then((res) => {
                                        trigger("atto::toast", [
                                            res.ok ? "success" : "error",
                                            res.message,
                                        ]);

                                        setTimeout(() => {
                                            window.location.reload();
                                        }, 150);
                                    });
                            };
                        </script>
                        {% else %}
                        <button
                            class="quaternary red"
                            onclick="cancel_request()"
                        >
                            {{ icon "x" }}
                            <span
                                >{{ text "communities:action.cancel_request"
                                }}</span
                            >
                        </button>

                        <script>
                            globalThis.cancel_request = async () => {
                                if (
                                    !(await trigger("atto::confirm", [
                                        "Are you sure you would like to do this?",
                                    ]))
                                ) {
                                    return;
                                }

                                fetch(
                                    "/api/v1/communities/{{ community.id }}/memberships/{{ user.id }}",
                                    {
                                        method: "DELETE",
                                    },
                                )
                                    .then((res) => res.json())
                                    .then((res) => {
                                        trigger("atto::toast", [
                                            res.ok ? "success" : "error",
                                            res.message,
                                        ]);

                                        setTimeout(() => {
                                            window.location.reload();
                                        }, 150);
                                    });
                            };
                        </script>
                        {% endif %} {% else %}
                        <button
                            class="quaternary red"
                            onclick="leave_community()"
                        >
                            {{ icon "circle-minus" }}
                            <span>{{ text "communities:action.leave" }}</span>
                        </button>

                        <script>
                            globalThis.leave_community = async () => {
                                if (
                                    !(await trigger("atto::confirm", [
                                        "Are you sure you would like to do this?",
                                    ]))
                                ) {
                                    return;
                                }

                                fetch(
                                    "/api/v1/communities/{{ community.id }}/memberships/{{ user.id }}",
                                    {
                                        method: "DELETE",
                                    },
                                )
                                    .then((res) => res.json())
                                    .then((res) => {
                                        trigger("atto::toast", [
                                            res.ok ? "success" : "error",
                                            res.message,
                                        ]);

                                        setTimeout(() => {
                                            window.location.reload();
                                        }, 150);
                                    });
                            };
                        </script>
                        {% endif %} {% endif %} {% if can_manage_community or
                        is_manager %}
                        <a
                            href="/community/{{ community.title }}/manage"
                            class="button primary"
                        >
                            {{ icon "settings" }}
                            <span
                                >{{ text "communities:action.configure" }}</span
                            >
                        </a>
                        {% endif %}
                    </div>
                    {% endif %}
                </div>

                <div class="card-nest flex flex-col">
                    <div id="bio" class="card small">
                        {{ community.context.description|markdown|safe }}
                    </div>

                    <div class="card flex flex-col gap-2">
                        <div class="w-full flex justify-between items-center">
                            <span class="notification chip">ID</span>
                            <button
                                title="Copy"
                                onclick="trigger('atto::copy_text', ['{{ community.id }}'])"
                                class="camo small"
                            >
                                {{ icon "copy" }}
                            </button>
                        </div>

                        <div class="w-full flex justify-between items-center">
                            <span class="notification chip">Created</span>
                            <span class="date">{{ community.created }}</span>
                        </div>

                        <div class="w-full flex justify-between items-center">
                            <span class="notification chip">Members</span>
                            <a href="/community/{{ community.title }}/members"
                                >{{ community.member_count }}</a
                            >
                        </div>

                        <div class="w-full flex justify-between items-center">
                            <span class="notification chip">Score</span>
                            <div class="flex gap-2">
                                <b
                                    >{{ community.likes - community.dislikes
                                    }}</b
                                >
                                {% if user %}
                                <div
                                    class="flex gap-1 reactions_box"
                                    hook="check_reactions"
                                    hook-arg:id="{{ community.id }}"
                                >
                                    {{ components::likes(id=community.id,
                                    asset_type="Community",
                                    likes=community.likes,
                                    dislikes=community.dislikes) }}
                                </div>
                                {% endif %}
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rhs w-full">
                {% if can_read %} {% block content %}{% endblock %} {% else %}
                <div class="card-nest">
                    <div class="card small flex items-center gap-2">
                        {{ icon "frown" }}
                        <b
                            >{{ text "communities:label.not_allowed_to_read"
                            }}</b
                        >
                    </div>

                    <div class="card">
                        <span>
                            {{ text "communities:label.might_need_to_join" }}
                        </span>
                    </div>
                </div>
                {% endif %}
            </div>
        </div>
    </div>
</article>
{% endblock %}