Skip to content

feat: les salons en direct dans la page d'une communauté, avec le bouton de l'appel (#155) - #185

Merged
rev22rse22 merged 1 commit into
mainfrom
155-salons-ecrans
Nov 14, 2026
Merged

rev22rse22 merged 1 commit into
mainfrom
155-salons-ecrans

Conversation

@rev22rse22

Copy link
Copy Markdown
Collaborator

Seconde moitié des salons (#155), contre le contrat fusionné dans #184.

Ce qui a été fait

  • Page d'une communauté : deux onglets, « Questions et discussions » (le fil d'avant, inchangé) et « Salons en direct ». L'adresse garde le salon (/communautes/flutter?salon=entraide) : on peut partager le lien d'un salon.
  • SalonsCommunaute.vue :
    • # général, # entraide, # projets, avec le sujet du salon ;
    • les messages, relus toutes les 3 secondes avec apres, sans doublon, la liste suit le bas si on y était ;
    • Entrée envoie, Maj + Entrée passe à la ligne. Le message apparaît tout de suite ;
    • « Rejoindre l'appel » (membres seulement) : la salle Jitsi du salon, dans un nouvel onglet (noopener noreferrer) ;
    • un non-membre lit, et on l'invite à rejoindre pour écrire et appeler.
  • Sobre et robuste : la relecture s'arrête quand l'onglet est caché ou qu'on quitte la page. Une coupure réseau affiche « Connexion perdue », sans perdre les messages déjà là. Une réponse arrivée après un changement de salon est ignorée. 429 : « Tu écris très vite… ».
  • Accessibilité : la liste est aria-live="polite", le salon actuel a aria-current, le champ a son libellé.
  • Données factices (MSW) : quelques messages de démo dans flutter/entraide et flutter/general.
  • docs/vocabulaire.md : « Salon », « Rejoindre l'appel » (et non canal, channel, room, call).

Comment c'est vérifié

  • tests : 5 nouveaux (salons.test.ts) :

    • ouverture par l'onglet, changement de salon, lien d'appel sûr ;
    • envoi avec Entrée ;
    • relecture toutes les 3 s avec apres, arrêtée en quittant la page (minuteries simulées) ;
    • coupure réseau ;
    • non-membre.

    Un sélecteur de communautes.test.ts précisé : il visait le premier groupe d'onglets de la page. Front : 173/173, vue-tsc OK.

  • testé manuellement (mode factice, port 5174) : envoi avec Entrée, pas de doublon après la relecture, liste au bas. Largeur 375 px : pas de défilement horizontal.

  • Pas testé contre l'API locale dans le navigateur (couvert par SalonsTest côté API, feat: salons des communautés, lus en direct, avec leur salle d'appel (API et contrat) (#155) #184).

Décisions et alternatives écartées

  • Un onglet dans la page de la communauté, plutôt qu'une nouvelle page : la communauté reste le point d'entrée, et le fil existant ne change pas.
  • L'appel dans un nouvel onglet plutôt qu'intégré (iframe) : sur meet.jit.si, le premier arrivé doit se connecter, ce qui passe mal dans une iframe. Intégrer viendra avec LiveKit après la CADEV.

Pistes d'amélioration

  • 🟡 À améliorer ensuite : signaler un message de salon ; un compteur de messages non lus par salon.
  • 💡 Idée : les demandes publiées par le module freelance (DemandePubliee, @sowibrr) comme message dans # projets.
  • ❓ Question ouverte : pour la démo, qui se connecte à Jitsi avant de lancer l'appel ?

Outils d'IA utilisés : Claude Code (Claude Opus 5.5).

🤖 Generated with Claude Code

…ton de l'appel (#155)

Onglet « Salons en direct » (adresse partageable `?salon=entraide`) : les messages relus toutes
les 3 secondes, l'envoi avec Entrée, « Rejoindre l'appel » pour les membres (nouvel onglet). La relecture
s'arrête quand l'onglet est caché ou qu'on quitte la page, et une coupure est signalée sans perdre les messages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@rev22rse22
rev22rse22 merged commit 66f6adb into main Nov 14, 2026
7 checks passed
@rev22rse22
rev22rse22 deleted the 155-salons-ecrans branch November 14, 2026 18:27
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