Changeset 6401681 in Klonkt for src/routes/admin-sites.js


Ignore:
Timestamp:
08/13/2026 01:08:32 PM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
f59a46c
Parents:
5300652
git-author:
Robin <roboburr@…> (08/13/2026 12:16:47 PM)
git-committer:
Robin <roboburr@…> (08/13/2026 01:08:32 PM)
Message:

Het paneel hoort bij wie je bent, niet bij je bestanden (Robins correctie)

Verhuisd van Beheer -> Audio naar het profielscherm van de site-eigenaar, en
daar staat het NAAST de aliassen -- want dat is dezelfde vraag. Een alias zegt
wie je elders in de fediverse bent, een MBID zegt wie je in het muziekregister
bent. Bij de audiobestanden ging het over beheer van spullen; hier gaat het over
identiteit, en daar hoort het thuis.

DE VERHUIZING VERANDERDE DE VORM, en dat is de moeite waard om te weten. Het
profielscherm IS een formulier, en een formulier in een formulier bestaat niet
in HTML. Dus geen eigen opslaan-knop meer: de keuze zet een verborgen veld en
gaat mee met de Opslaan van de pagina, precies zoals de profielfoto. Dat leest
ook beter -- een halve wijziging die je nog kunt herzien voor je opslaat.

Ontkoppelen is nu het veld leegmaken, geen aparte route. Minder oppervlak.

Het zoek-endpoint ging mee naar /admin/sites/:slug/api/musicbrainz. Een endpoint
onder /admin/audio laten staan voor een scherm in /admin/sites is precies zo'n
naad die later niemand meer kan plaatsen. De teksten heten nu asite.mb_* in
plaats van aaud.mb_*, in alle drie de talen, met een placeholder erbij.

Wat NIET veranderde: de zoekopdracht draait server-side (hun regel geldt per
applicatie), wij kiezen niet voor de artiest, en alleen een echte MBID komt de
kolom in.

Co-Authored-By: Claude Opus 5 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/admin-sites.js

    r5300652 r6401681  
    2727import { mediaDir } from '../config/paths.js';
    2828import AP from '../services/ActivityPubService.js';
     29import MusicBrainz from '../services/MusicBrainzService.js';
    2930
    3031
     
    322323
    323324// ==================== SAVE ====================
     325/**
     326 * "Ben jij dit?" -- kandidaten uit MusicBrainz (shaer-mbz).
     327 *
     328 * De zoekopdracht draait HIER en niet in de browser: MusicBrainz staat een
     329 * verzoek per seconde toe per APPLICATIE, en dat is alleen af te dwingen als
     330 * alles langs een plek gaat. Bovendien eisen ze een User-Agent met contact, en
     331 * die kan een browser niet zetten.
     332 *
     333 * Wij kiezen NIET. Ook niet als er precies een treffer is: een verkeerd geraden
     334 * MBID zet jouw naam onder andermans werk.
     335 */
     336router.get('/:slug/api/musicbrainz', requireSiteManagerBySlug, async (req, res) => {
     337  const site = db.prepare('SELECT title, mb_artist_id, mb_artist_name FROM sites WHERE slug = ?').get(req.params.slug);
     338  if (!site) return res.status(404).json({ error: 'no_site' });
     339  const q = String(req.query.q || site.title || '').trim();
     340  if (!q) return res.json({ ok: true, q: '', kandidaten: [] });
     341  res.json({ ok: true, q, kandidaten: await MusicBrainz.zoekArtiesten(q) });
     342});
     343
    324344router.post('/:slug/save', requireSiteManagerBySlug, async (req, res) => {
    325345  const site = db.prepare('SELECT id, ap_aliases FROM sites WHERE slug = ?').get(req.params.slug);
     
    346366  // accent: only accept colors from the curated ACCENTS list. Falls back to
    347367  // the orange default if the submitted value isn't recognised.
     368  // De MusicBrainz-koppeling (shaer-mbz). Alleen een echte MBID komt de kolom
     369  // in: zonder deze zeef sluipt er een hele URL of een handle in het veld dat
     370  // straks naar buiten gaat. Leeg is een geldige keuze -- dat is ontkoppelen.
     371  const mbRuw = String(f.mb_artist_id || '').trim().toLowerCase();
     372  const mbArtistId = MusicBrainz.isMbid(mbRuw) ? mbRuw : null;
     373
    348374  const accent = ThemeService.validateAccent(f.accent) || '#e8b04b';
    349375
     
    355381      profile_links = ?,
    356382      ap_aliases = ?,
     383      mb_artist_id = ?, mb_artist_name = ?,
    357384      is_public = ?, robots_index = ?, require_login_to_comment = ?,
    358385      enable_audio_player = ?,
     
    374401    profileLinksJson,
    375402    apAliasesJson,
     403    mbArtistId,
     404    mbArtistId ? (String(f.mb_artist_name || '').trim().slice(0, 200) || null) : null,
    376405    f.is_public ? 1 : 0,
    377406    f.robots_index ? 1 : 0,
Note: See TracChangeset for help on using the changeset viewer.