(text "{% extends \"root.html\" %} {% block head %}") (title (text "{{ community.context.display_name }} - {{ config.name }}")) (meta ("name" "og:title") ("content" "{{ community.title }}")) (meta ("name" "description") ("content" "View the \\\"{{ community.title }}\\\" community on {{ config.name }}!")) (meta ("name" "og:description") ("content" "View the \\\"{{ community.title }}\\\" community on {{ config.name }}!")) (meta ("property" "og:type") ("content" "profile")) (meta ("property" "profile:username") ("content" "{{ community.title }}")) (meta ("name" "og:image") ("content" "{{ config.host|safe }}/api/v1/communities/{{ community.id }}/avatar")) (meta ("name" "twitter:image") ("content" "{{ config.host|safe }}/api/v1/communities/{{ community.id }}/avatar")) (meta ("name" "twitter:card") ("content" "summary")) (meta ("name" "twitter:title") ("content" "{{ community.title }}")) (meta ("name" "twitter:description") ("content" "View the \\\"{{ community.title }}\\\" community on {{ config.name }}!")) (text "{% endblock %} {% block body %} {{ macros::nav() }}") (article (div ("class" "content_container flex flex-col gap-4") (text "{{ 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: 22rem; min-width: 22rem") (div ("class" "card-nest w-full") (div ("class" "card flex gap-2") ("id" "community_avatar_and_name") (text "{{ 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") (text "{% 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)") (text "{{ icon \"square-asterisk\" }}")) (text "{%- endif %}")) (text "{% if user -%} {% if user.id != community.owner %}") (div ("class" "dropdown") (button ("class" "camo small") ("onclick" "trigger('atto::hooks::dropdown', [event])") ("exclude" "dropdown") (text "{{ icon \"ellipsis\" }}")) (div ("class" "inner") (button ("class" "red") ("onclick" "trigger('me::report', ['{{ community.id }}', 'community'])") (text "{{ icon \"flag\" }}") (span (text "{{ text \"general:action.report\" }}"))))) (text "{%- endif %} {%- endif %}")) (span ("class" "fade") (text "{{ community.title }}")))) (text "{% if user -%}") (div ("class" "card flex gap-2 flex-wrap") ("id" "join_or_leave") (text "{% if not is_owner -%} {% if not is_joined -%} {% if not is_pending %}") (button ("class" "primary") ("onclick" "join_community()") (text "{{ icon \"circle-plus\" }}") (span (text "{{ text \"communities:action.join\" }}"))) (script (text "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); }); };")) (text "{% else %}") (button ("class" "quaternary red") ("onclick" "cancel_request()") (text "{{ icon \"x\" }}") (span (text "{{ text \"communities:action.cancel_request\" }}"))) (script (text "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); }); };")) (text "{%- endif %} {% else %}") (button ("class" "quaternary red") ("onclick" "leave_community()") (text "{{ icon \"circle-minus\" }}") (span (text "{{ text \"communities:action.leave\" }}"))) (a ("href" "/chats/{{ community.id }}/0") ("class" "button quaternary") (text "{{ icon \"message-circle\" }}") (span (text "{{ text \"communities:label.chats\" }}"))) (text "{% if user and can_post -%}") (a ("href" "/communities/intents/post?community={{ community.id }}") ("class" "button quaternary") ("data-turbo" "false") (text "{{ icon \"plus\" }}") (span (text "{{ text \"general:action.post\" }}"))) (text "{%- endif %}") (script (text "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); }); };")) (text "{%- endif %} {% else %}") (a ("href" "/chats/{{ community.id }}/0") ("class" "button quaternary") (text "{{ icon \"message-circle\" }}") (span (text "{{ text \"communities:label.chats\" }}"))) (a ("href" "/communities/intents/post?community={{ community.id }}") ("class" "button quaternary") ("data-turbo" "false") (text "{{ icon \"plus\" }}") (span (text "{{ text \"general:action.post\" }}"))) (text "{%- endif %} {% if can_manage_community or is_manager -%}") (a ("href" "/community/{{ community.id }}/manage") ("class" "button primary") (text "{{ icon \"settings\" }}") (span (text "{{ text \"communities:action.configure\" }}"))) (text "{%- endif %}")) (text "{%- endif %}")) (div ("class" "card-nest flex flex-col") (div ("id" "bio") ("class" "card small no_p_margin") (text "{{ community.context.description|markdown|safe }}")) (div ("class" "card flex flex-col gap-2") (div ("class" "w-full flex justify-between items-center") (span ("class" "notification chip") (text "ID")) (button ("title" "Copy") ("onclick" "trigger('atto::copy_text', ['{{ community.id }}'])") ("class" "camo small") (text "{{ icon \"copy\" }}"))) (div ("class" "w-full flex justify-between items-center") (span ("class" "notification chip") (text "Created ")) (span ("class" "date") (text "{{ community.created }}"))) (div ("class" "w-full flex justify-between items-center") (span ("class" "notification chip") (text "Members")) (a ("href" "/community/{{ community.title }}/members") (text "{{ community.member_count }}"))) (div ("class" "w-full flex justify-between items-center") (span ("class" "notification chip") (text "Score")) (div ("class" "flex gap-2") (b (text "{{ community.likes - community.dislikes }}")) (text "{% if user -%}") (div ("class" "flex gap-1 reactions_box") ("hook" "check_reactions") ("hook-arg:id" "{{ community.id }}") (text "{{ components::likes(id=community.id, asset_type=\"Community\", likes=community.likes, dislikes=community.dislikes) }}")) (text "{%- endif %}"))) (text "{% if user and user.id != community.owner -%}") (hr) (div ("class" "flex flex-wrap gap-2 w-full fade") (a ("class" "red") ("href" "javascript:trigger('me::report', ['{{ community.id }}', 'community'])") (text "({{ lang[\"general:action.report\"]|lower }})"))) (text "{%- endif %}")))) (div ("class" "rhs w-full") (text "{% if can_read -%} {% block content %}{% endblock %} {% else %}") (div ("class" "card-nest") (div ("class" "card small flex items-center gap-2") (text "{{ icon \"frown\" }}") (b (text "{{ text \"communities:label.not_allowed_to_read\" }}"))) (div ("class" "card") (span (text "{{ text \"communities:label.might_need_to_join\" }}")))) (text "{%- endif %}"))))) (text "{% endblock %}")