Changeset fa08981 in Klonkt for src/routes


Ignore:
Timestamp:
06/20/2026 01:52:46 AM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
8f6225c
Parents:
230e446
Message:

fix(player): scroll-to-track works for site-wide tracks too

Site-wide tracks (PCMS_SITE_TRACKS) were not getting an id → no anchor; and
no postUrl → no jump. Now: id included in the queue; mini-player click uses
postUrl when known, otherwise looks up the post via new endpoint
GET /audio/track/:id/post (newest post with [[track:<id>]]) and jumps +
scrolls to the track. audio-player.js?v=18.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/audio.js

    r230e446 rfa08981  
    141141});
    142142
     143// Welke post bevat deze track? (voor de mini-speler → "spring naar de post +
     144// scroll naar de track".) Pakt de nieuwste gepubliceerde post met [[track:<id>]].
     145router.get('/track/:id/post', (req, res) => {
     146  const id = String(req.params.id || '');
     147  if (!/^[A-Za-z0-9_-]+$/.test(id)) return res.status(400).json({ error: 'bad id' });
     148  const isHub = res.locals.tenancy === 'hub';
     149  const row = db.prepare(`
     150    SELECT p.slug, s.slug AS site_slug
     151    FROM posts p JOIN sites s ON s.id = p.site_id
     152    WHERE p.status = 'published' AND p.content LIKE ?
     153    ORDER BY p.published_at DESC LIMIT 1
     154  `).get('%[[track:' + id + ']]%');
     155  if (!row) return res.status(404).json({ error: 'not found' });
     156  const url = isHub ? `/user/${row.site_slug}/${row.slug}` : `/${row.slug}`;
     157  res.json({ url });
     158});
     159
    143160export default router;
Note: See TracChangeset for help on using the changeset viewer.