Link do sali w mailu i na stronie zgloszenia
Deploy PROD / deploy (push) Successful in 20s

Uczestnik przy dostawcy z wlasnymi pokojami (LiveKit, Jitsi, Daily, Zoom)
nie mial ZADNEJ drogi na sale:

- mail potwierdzajacy prowadzil na /w/{slug}, czyli formularz zapisu,
- strona zgloszenia renderowala przycisk "Dolacz do spotkania" wylacznie
  gdy `webinars.join_url` nie bylo puste, a przy LiveKit pokoj jest
  wewnetrzny i to pole zostaje NULL,
- mail obiecywal przy tym wprost "link do spotkania znajdziesz na stronie
  swojego zgloszenia".

Adres sklada teraz `VideoProviderFactory.meetingUrlFor`, bo tylko backend
zna token zapisu. Tryb NONE oddaje `join_url` wklejony przez organizatora,
kazdy inny dostawca wlasna trase /spotkanie/{token}. Ta sama wartosc zasila
widok zgloszenia i szablony maili, wiec nie ma dwoch miejsc do poprawiania.

Szablon potwierdzenia dostaje przycisk wejscia jako pierwszy, nad odnosnikiem
do strony webinaru, oraz zdanie o tym, ze sala otwiera sie przed startem:
bez niego uczestnik klikajacy tydzien wczesniej widzi odliczanie i nie wie,
czy tak ma byc. Szablon przypomnienia mial obsluge `joinUrl` od poczatku,
wiec naprawia sie sam.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-04 07:53:09 +02:00
parent ffea40ebff
commit 1dadc6f6c4
7 changed files with 117 additions and 12 deletions
@@ -55,7 +55,9 @@ class MailAttachmentTest {
// SafeDelivery z tym samym mockiem ustawien: test sklada wiadomosc,
// a nie wysyla jej, wiec straznik nie zmienia tu niczego
mailService = new MailService(settings, engine, new IcsGenerator(settings),
new ReminderTextBuilder(settings), new SafeDelivery(settings));
new ReminderTextBuilder(settings), new SafeDelivery(settings),
new com.softspm.webinar.video.VideoProviderFactory(
java.util.List.of(new com.softspm.webinar.video.NoneVideoProvider()), settings));
}
private ClassLoaderTemplateResolver resolver(TemplateMode mode, String pattern) {
@@ -62,7 +62,9 @@ class MailPreviewTest {
// SafeDelivery z tym samym mockiem ustawien: test sklada wiadomosc,
// a nie wysyla jej, wiec straznik nie zmienia tu niczego
mailService = new MailService(settings, engine, new IcsGenerator(settings),
new ReminderTextBuilder(settings), new SafeDelivery(settings));
new ReminderTextBuilder(settings), new SafeDelivery(settings),
new com.softspm.webinar.video.VideoProviderFactory(
java.util.List.of(new com.softspm.webinar.video.NoneVideoProvider()), settings));
}
private ClassLoaderTemplateResolver resolver(TemplateMode mode, String pattern) {