feat: merge Bluesky thread replies into webmention replies section
Build & Deploy / build-and-deploy (push) Failing after 1m29s
Build & Deploy / build-and-deploy (push) Failing after 1m29s
This commit is contained in:
@@ -110,15 +110,30 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{# Replies #}
|
||||
{% set replies = mentions | webmentionsByType('replies') %}
|
||||
{% if replies.length %}
|
||||
<div class="webmention-replies">
|
||||
<h3 class="text-sm font-semibold text-surface-600 dark:text-surface-400 uppercase tracking-wide mb-4">
|
||||
{{ replies.length }} Repl{% if replies.length != 1 %}ies{% else %}y{% endif %}
|
||||
{# Replies — webmention replies merged with Bluesky thread (deduplicated) #}
|
||||
{% set wm_replies = mentions | webmentionsByType('replies') %}
|
||||
{% set bskySyndUrl = "" %}
|
||||
{% if syndication %}
|
||||
{% for url in syndication %}
|
||||
{% if "bsky.app" in url %}{% set bskySyndUrl = url %}{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{# Filter out Bluesky-sourced webmention replies when a direct thread is available #}
|
||||
{% set filtered_replies = [] %}
|
||||
{% for reply in wm_replies %}
|
||||
{% set src = reply['wm-source'] | default('') %}
|
||||
{% if not bskySyndUrl or ('bsky.app' not in src and 'brid.gy' not in src and 'bridgy' not in src) %}
|
||||
{% set filtered_replies = (filtered_replies.push(reply), filtered_replies) %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if filtered_replies.length or bskySyndUrl %}
|
||||
<div class="webmention-replies"{% if bskySyndUrl %} x-data="bskyThread('{{ bskySyndUrl }}')"{% endif %}>
|
||||
<h3 class="text-sm font-semibold text-surface-600 dark:text-surface-400 uppercase tracking-wide mb-4"
|
||||
{% if bskySyndUrl %}x-text="`${{{ filtered_replies.length }} + replies.length} Repl${({{ filtered_replies.length }} + replies.length) !== 1 ? 'ies' : 'y'}`"{% endif %}>
|
||||
{% if not bskySyndUrl %}{{ filtered_replies.length }} Repl{% if filtered_replies.length != 1 %}ies{% else %}y{% endif %}{% endif %}
|
||||
</h3>
|
||||
<ul class="space-y-4">
|
||||
{% for reply in replies %}
|
||||
{% for reply in filtered_replies %}
|
||||
<li class="p-4 bg-surface-50 dark:bg-surface-800 rounded-lg border border-surface-200 dark:border-surface-700 shadow-sm"
|
||||
data-wm-url="{{ reply.url }}"
|
||||
data-wm-source="{{ reply['wm-source'] if reply['wm-source'] else '' }}"
|
||||
@@ -173,6 +188,37 @@
|
||||
<div class="wm-owner-reply-slot ml-13 mt-2"></div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% if bskySyndUrl %}
|
||||
<template x-for="reply in replies" :key="reply.uri">
|
||||
<li class="p-4 bg-surface-50 dark:bg-surface-800 rounded-lg border border-surface-200 dark:border-surface-700 shadow-sm"
|
||||
:class="reply.depth > 0 ? 'ml-4 sm:ml-8' : ''">
|
||||
<div class="flex gap-3">
|
||||
<a :href="reply.author.url" target="_blank" rel="noopener" class="flex-shrink-0">
|
||||
<img :src="reply.author.avatar || '/images/default-avatar.svg'"
|
||||
:alt="reply.author.name"
|
||||
class="w-10 h-10 rounded-full"
|
||||
loading="lazy">
|
||||
</a>
|
||||
<div class="flex-1 min-w-0">
|
||||
<div class="flex items-center gap-2 mb-1 flex-wrap">
|
||||
<a :href="reply.author.url"
|
||||
class="font-semibold text-surface-900 dark:text-surface-100 hover:underline"
|
||||
target="_blank" rel="noopener"
|
||||
x-text="reply.author.name"></a>
|
||||
<span class="wm-provenance-badge" data-source="bluesky"></span>
|
||||
<a :href="reply.url"
|
||||
class="text-xs text-surface-600 dark:text-surface-400 hover:underline"
|
||||
target="_blank" rel="noopener">
|
||||
<time :datetime="reply.published" x-text="formatDate(reply.published)"></time>
|
||||
</a>
|
||||
</div>
|
||||
<div class="text-surface-700 dark:text-surface-300 prose dark:prose-invert prose-sm max-w-none"
|
||||
x-text="reply.text"></div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</template>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -201,9 +247,6 @@
|
||||
</section>
|
||||
{% endif %}
|
||||
|
||||
{# Bluesky Thread — AT Protocol replies from syndicated post #}
|
||||
{% include "components/bluesky-thread.njk" %}
|
||||
|
||||
{# Webmention send form — collapsed by default #}
|
||||
<details class="webmention-form mt-8">
|
||||
<summary class="text-sm font-semibold text-surface-600 dark:text-surface-400 cursor-pointer hover:text-surface-700 dark:hover:text-surface-300 transition-colors list-none [&::-webkit-details-marker]:hidden flex items-center gap-1.5">
|
||||
|
||||
Reference in New Issue
Block a user