Changeset 34e63f0 in Klonkt


Ignore:
Timestamp:
08/08/2026 05:30:13 AM (5 weeks ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
4d81de5
Parents:
ffb371c
git-author:
Robin <roboburr@…> (08/08/2026 05:30:12 AM)
git-committer:
roboburr <roboburr@…> (08/08/2026 05:30:13 AM)
Message:

De antwoordpoort ook in Klonkts eigen web-UI (shaer-r4c, vervolg)

De poort weigert nu in deliverReply, dus het antwoord komt er niet doorheen --
maar de webinterface toonde het veld gewoon nog. Precies de knop-die-niet-werkt
waar ik in de app-code tegen waarschuwde: een kind duwt tegen een deur die op
slot zit en krijgt geen uitleg.

res.locals.mayReply staat er nu een keer, naast res.locals.site, zodat geen route
hem apart hoeft door te geven.

NIET IN DE PARTIAL ZELF, en dat scheelde een fout. reply-editor.ejs leek het
knooppunt -- vier includes, een plek -- maar hij wordt ook voor BEWERKEN gebruikt
(msg-edit, /fediverse/:id/edit). Een guard daarbinnen had het bewerken van een
eigen bericht meegesloopt.

Dus per include, en in Berichten precies de tak die de server ook kiest:
/messages/reply gaat naar deliverReply als er een interaction+post is (een
antwoord, valt onder de poort) en anders naar deliverDirectNote (een bericht,
andere poort). Alleen de eerste verdwijnt.

De vier gewijzigde templates compileren; de suite (686) blijft groen.

Location:
src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • src/middleware/site.js

    rffb371c r34e63f0  
    1212import { audioUrl } from '../services/AudioStreamService.js';
    1313import { audioEnabled } from '../config/features.js';
     14import * as Guardianship from '../services/guardianship/index.js';
    1415
    1516/**
     
    3334    res.locals.site = defaultSite;
    3435    res.locals.siteUrlBase = '';
     36    // Mag deze account antwoorden (shaer-r4c)? Eén keer hier, zodat de
     37    // antwoordvelden in de views hem kunnen lezen zonder dat elke route hem
     38    // apart doorgeeft. De server weigert het antwoord toch al in deliverReply;
     39    // dit voorkomt alleen dat een kind tegen een deur duwt die op slot zit.
     40    try {
     41      const isWard = Guardianship.listGuardians(defaultSite.slug).length > 0;
     42      res.locals.mayReply = Guardianship.wardGateAllowed(defaultSite.gate_replies, isWard);
     43    } catch { res.locals.mayReply = true; }
    3544  }
    3645
  • src/views/pages/authorize-interaction.ejs

    rffb371c r34e63f0  
    174174      </form>
    175175    </div>
     176    <% if (locals.mayReply !== false) { %>
    176177    <p class="auth-interact-or"><%= t('fedi.or_reply') %></p>
    177178    <p class="auth-interact-where">💬 <%= t('fedi.reply_where') %></p>
     
    191192      <div class="auth-interact-actions"><a href="<%= uri %>" class="btn"><%= t('comments.cancel') %></a></div>
    192193    </div>
     194    <% } %>
    193195    <p class="auth-interact-note"><%= t('fedi.remote_as', { site: siteTitle }) %></p>
    194196    <details class="auth-report">
  • src/views/partials/fedi-node.ejs

    rffb371c r34e63f0  
    4646        <button type="submit" class="fedi-cact fedi-cact-boost<%= n.acted_boost ? ' is-on' : '' %>" title="<%= n.acted_boost ? t('tl.unboost') : t('fedi.boost_short') %>" aria-label="<%= n.acted_boost ? t('tl.unboost') : t('fedi.boost_short') %>"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="17 1 21 5 17 9"/><path d="M3 11V9a4 4 0 0 1 4-4h14"/><polyline points="7 23 3 19 7 15"/><path d="M21 13v2a4 4 0 0 1-4 4H3"/></svg></button>
    4747      </form>
     48      <% if (locals.mayReply !== false) { %>
    4849      <details class="fedi-owner-reply">
    4950        <summary class="fedi-cact fedi-cact-reply" title="<%= t('fedi.remote_reply_short') %>" aria-label="<%= t('fedi.remote_reply_short') %>"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 17 4 12 9 7"/><path d="M20 18v-2a4 4 0 0 0-4-4H4"/></svg></summary>
     
    5758        }) %>
    5859      </details>
     60      <% } %>
    5961      <%# Owner moderation: report to their instance + remove (tombstoned: never comes back via re-delivery or thread-crawl). %>
    6062      <form method="post" action="<%= _base %>/interactions/<%= n.id %>/report" class="fedi-owner-react" data-confirm="<%= t('fedi.mod_report_confirm') %>">
  • src/views/partials/msg-item.ejs

    rffb371c r34e63f0  
    4848              draad aan een post krijgt een reply, een draad aan een persoon een
    4949              direct bericht. %>
    50           <% var _rt = n.replyTo || {}; var _kan = canMutate && ((_rt.interactionId && _rt.postSlug) || _rt.actorUri); %>
     50          <%# shaer-r4c: precies de tak die de server ook kiest. /messages/reply
     51              gaat naar deliverReply als er een interaction+post is (dat is een
     52              ANTWOORD en valt onder de poort), en anders naar deliverDirectNote
     53              (dat is een bericht, andere poort). Alleen de eerste verbergen. %>
     54          <% var _rt = n.replyTo || {}; var _thread = _rt.interactionId && _rt.postSlug; %>
     55          <% var _kan = canMutate && ((_thread && locals.mayReply !== false) || (!_thread && _rt.actorUri)); %>
    5156          <% if (_kan) { %>
    5257            <div class="msg-thread-foot">
Note: See TracChangeset for help on using the changeset viewer.