Skip to content

Add stream live view - #34

Open
rockynox wants to merge 2 commits into
developfrom
add-stream-live-view
Open

Add stream live view#34
rockynox wants to merge 2 commits into
developfrom
add-stream-live-view

Conversation

@rockynox

Copy link
Copy Markdown
Member

Objectif

Ajoute une vue « Live » côté admin qui affiche en temps réel le fil des dons reçus pendant une session de stream, avec scroll infini vers l'historique.

Ce que ça change

Nouvelle page /admin/stream/{id}/live

  • Bouton « Démarrer / Terminer le live » (accessible depuis la page d'édition du stream via 🔴 Voir le direct)
  • Fil des dons : pseudo, montant, message, horodatage
  • Polling toutes les 10 s des nouveaux dons + scroll infini (IntersectionObserver) vers l'historique, plafonné à 300 lignes rendues

Endpoints ajoutés (tous derrière AuthMiddleware)

Route Rôle
GET /admin/stream/{id}/live vue HTML + 30 dons les plus récents
POST /admin/stream/{id}/live/start démarre la session, positionne le curseur API à « maintenant »
POST /admin/stream/{id}/live/stop arrête la session et purge l'historique
GET /admin/stream/{id}/live/fetch?since_id= polling JSON des nouveaux dons
GET /admin/stream/{id}/live/history?before_id= pagination par curseur vers l'historique

Persistance (migrations/20-add-stream-live-view.sql)

  • charity_stream : live_started_at, live_continuation_token, live_cache_updated_at
  • Nouvelle table stream_donation_history (pagination par curseur sur id)

Autres

  • StreamDonationHistoryRepository + modèle StreamDonationEntry
  • Le mode test alimente aussi le fil : simulateStreamDonation insère le don simulé dans l'historique quand un live est en cours
  • Le cache du live réutilise le TTL des widgets (WIDGET_CACHE_TTL, 30 s par défaut) pour limiter les appels API

Sécurité

Tout le contenu venant des donateurs (pseudo, message) est injecté côté client via textContent, jamais innerHTML.

Tests

vendor/bin/phpunit → 43 tests, 108 assertions, OK (mise à jour des constructeurs mockés uniquement — pas de test sur les nouveaux endpoints, cf. review).

À faire avant merge

  • Retirer add-stream-live-view de .github/workflows/php-sandbox.yml (déploiement sandbox temporaire)

🤖 Generated with Claude Code

rockynox and others added 2 commits July 3, 2026 23:40
New admin page (/admin/stream/{id}/live) letting stream owners replay
donation messages received during the current live session:

- Explicit live session: start/stop buttons; stopping deletes the
  session's donation history (no multi-live history yet)
- Donations captured in a new stream_donation_history table, polled
  from the HelloAsso orders feed with its own continuation token
  (30s server cache, 10s client poll, same as other widgets)
- Real-time feed with infinite scroll (keyset pagination on id) and
  a 300-row render cap
- Starting a live fast-forwards the cursor so pre-live donations are
  not imported
- Simulated donations (test mode) also feed the live view
- Donor pseudo/message escaped at render (Twig auto-escape,
  textContent in JS) per SEC-02

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant