From 68f3b26dae1eecd7f053f9d5f2bb0c7d39c0bd42 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Tue, 6 Jan 2026 13:06:45 -0500 Subject: [PATCH 1/3] feat: In teacher mode, allow setting of required number of activities to unlock next topic --- lib/l10n/intl_ar.arb | 12 ++++- lib/l10n/intl_be.arb | 12 ++++- lib/l10n/intl_bn.arb | 12 ++++- lib/l10n/intl_bo.arb | 12 ++++- lib/l10n/intl_ca.arb | 12 ++++- lib/l10n/intl_cs.arb | 12 ++++- lib/l10n/intl_da.arb | 12 ++++- lib/l10n/intl_de.arb | 12 ++++- lib/l10n/intl_el.arb | 12 ++++- lib/l10n/intl_en.arb | 4 +- lib/l10n/intl_eo.arb | 12 ++++- lib/l10n/intl_es.arb | 12 ++++- lib/l10n/intl_et.arb | 12 ++++- lib/l10n/intl_eu.arb | 12 ++++- lib/l10n/intl_fa.arb | 12 ++++- lib/l10n/intl_fi.arb | 12 ++++- lib/l10n/intl_fil.arb | 12 ++++- lib/l10n/intl_fr.arb | 12 ++++- lib/l10n/intl_ga.arb | 12 ++++- lib/l10n/intl_gl.arb | 12 ++++- lib/l10n/intl_he.arb | 12 ++++- lib/l10n/intl_hi.arb | 12 ++++- lib/l10n/intl_hr.arb | 12 ++++- lib/l10n/intl_hu.arb | 12 ++++- lib/l10n/intl_ia.arb | 12 ++++- lib/l10n/intl_id.arb | 12 ++++- lib/l10n/intl_ie.arb | 12 ++++- lib/l10n/intl_it.arb | 12 ++++- lib/l10n/intl_ja.arb | 12 ++++- lib/l10n/intl_ka.arb | 12 ++++- lib/l10n/intl_ko.arb | 12 ++++- lib/l10n/intl_lt.arb | 12 ++++- lib/l10n/intl_lv.arb | 12 ++++- lib/l10n/intl_nb.arb | 12 ++++- lib/l10n/intl_nl.arb | 12 ++++- lib/l10n/intl_pl.arb | 12 ++++- lib/l10n/intl_pt.arb | 12 ++++- lib/l10n/intl_pt_BR.arb | 12 ++++- lib/l10n/intl_pt_PT.arb | 12 ++++- lib/l10n/intl_ro.arb | 12 ++++- lib/l10n/intl_ru.arb | 12 ++++- lib/l10n/intl_sk.arb | 12 ++++- lib/l10n/intl_sl.arb | 12 ++++- lib/l10n/intl_sr.arb | 12 ++++- lib/l10n/intl_sv.arb | 12 ++++- lib/l10n/intl_ta.arb | 12 ++++- lib/l10n/intl_te.arb | 12 ++++- lib/l10n/intl_th.arb | 12 ++++- lib/l10n/intl_tr.arb | 12 ++++- lib/l10n/intl_uk.arb | 12 ++++- lib/l10n/intl_vi.arb | 12 ++++- lib/l10n/intl_yue.arb | 12 ++++- lib/l10n/intl_zh.arb | 12 ++++- lib/l10n/intl_zh_Hant.arb | 12 ++++- .../pages/room_details_buttons.dart | 2 + .../pages/space_details_content.dart | 50 ++++++++++++++++++- .../activity_summaries_provider.dart | 27 +++++++--- .../courses/course_plan_room_extension.dart | 22 ++++---- .../course_settings/course_settings.dart | 2 + .../course_settings/teacher_mode_model.dart | 32 ++++++++++++ 60 files changed, 704 insertions(+), 71 deletions(-) create mode 100644 lib/pangea/course_settings/teacher_mode_model.dart diff --git a/lib/l10n/intl_ar.arb b/lib/l10n/intl_ar.arb index 7348dfa92..ba423e4b3 100644 --- a/lib/l10n/intl_ar.arb +++ b/lib/l10n/intl_ar.arb @@ -1,6 +1,6 @@ { "@@locale": "ar", - "@@last_modified": "2025-12-12 14:56:32.447193", + "@@last_modified": "2026-01-06 13:02:07.966839", "about": "حول", "@about": { "type": "String", @@ -12130,5 +12130,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "الأنشطة لفتح الموضوع التالي", + "activitiesToUnlockTopicDesc": "حدد عدد الأنشطة لفتح موضوع الدورة التالي", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_be.arb b/lib/l10n/intl_be.arb index f1146200c..65cec11a8 100644 --- a/lib/l10n/intl_be.arb +++ b/lib/l10n/intl_be.arb @@ -2392,7 +2392,7 @@ "playWithAI": "Пакуль гуляйце з ШІ", "courseStartDesc": "Pangea Bot гатовы да працы ў любы час!\n\n...але навучанне лепш з сябрамі!", "@@locale": "be", - "@@last_modified": "2025-12-12 14:56:19.028442", + "@@last_modified": "2026-01-06 13:01:53.730932", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -13012,5 +13012,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Дзеянні для адкрыцця наступнай тэмы", + "activitiesToUnlockTopicDesc": "Усталюйце колькасць дзеянняў для адкрыцця наступнай тэмы курса", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_bn.arb b/lib/l10n/intl_bn.arb index 9e9c7fc9b..44eaa88f0 100644 --- a/lib/l10n/intl_bn.arb +++ b/lib/l10n/intl_bn.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:56:49.857662", + "@@last_modified": "2026-01-06 13:02:28.649450", "about": "সম্পর্কে", "@about": { "type": "String", @@ -13017,5 +13017,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "পরবর্তী বিষয় উন্মুক্ত করার জন্য কার্যক্রম", + "activitiesToUnlockTopicDesc": "পরবর্তী কোর্স বিষয় উন্মুক্ত করার জন্য কার্যক্রমের সংখ্যা নির্ধারণ করুন", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_bo.arb b/lib/l10n/intl_bo.arb index a3772bbb4..89c41757a 100644 --- a/lib/l10n/intl_bo.arb +++ b/lib/l10n/intl_bo.arb @@ -4707,7 +4707,7 @@ "joinPublicTrip": "མི་ཚེས་ལ་ལོག་འབད།", "startOwnTrip": "ངེད་རང་གི་ལོག་ལ་སྦྱོར་བཅོས།", "@@locale": "bo", - "@@last_modified": "2025-12-12 14:56:46.077004", + "@@last_modified": "2026-01-06 13:02:23.320520", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12759,5 +12759,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Aktiviteti për të Çliruar Temën Tjetër", + "activitiesToUnlockTopicDesc": "Caktoni numrin e aktiviteteve për të çliruar temën tjetër të kursit", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ca.arb b/lib/l10n/intl_ca.arb index bd1f20df8..ee1313a9d 100644 --- a/lib/l10n/intl_ca.arb +++ b/lib/l10n/intl_ca.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:56:20.853227", + "@@last_modified": "2026-01-06 13:01:55.665527", "about": "Quant a", "@about": { "type": "String", @@ -11937,5 +11937,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Activitats per Desbloquejar el Proper Tema", + "activitiesToUnlockTopicDesc": "Estableix el nombre d'activitats per desbloquejar el proper tema del curs", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_cs.arb b/lib/l10n/intl_cs.arb index e493f504b..dc8c37687 100644 --- a/lib/l10n/intl_cs.arb +++ b/lib/l10n/intl_cs.arb @@ -1,6 +1,6 @@ { "@@locale": "cs", - "@@last_modified": "2025-12-12 14:56:15.654816", + "@@last_modified": "2026-01-06 13:01:46.866113", "about": "O aplikaci", "@about": { "type": "String", @@ -12520,5 +12520,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Aktivity k odemčení dalšího tématu", + "activitiesToUnlockTopicDesc": "Nastavte počet aktivit k odemčení dalšího tématu kurzu", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_da.arb b/lib/l10n/intl_da.arb index 76c78db6a..14a7d6a66 100644 --- a/lib/l10n/intl_da.arb +++ b/lib/l10n/intl_da.arb @@ -2411,7 +2411,7 @@ "playWithAI": "Leg med AI for nu", "courseStartDesc": "Pangea Bot er klar til at starte når som helst!\n\n...men læring er bedre med venner!", "@@locale": "da", - "@@last_modified": "2025-12-12 14:55:40.954552", + "@@last_modified": "2026-01-06 13:01:06.115252", "@aboutHomeserver": { "type": "String", "placeholders": { @@ -12975,5 +12975,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Aktiviteter til at låse op for næste emne", + "activitiesToUnlockTopicDesc": "Indstil antallet af aktiviteter for at låse op for det næste kursusemne", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb index ffaa08ea5..5cced4193 100644 --- a/lib/l10n/intl_de.arb +++ b/lib/l10n/intl_de.arb @@ -1,6 +1,6 @@ { "@@locale": "de", - "@@last_modified": "2025-12-12 14:56:06.649574", + "@@last_modified": "2026-01-06 13:01:34.264308", "alwaysUse24HourFormat": "true", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." @@ -11920,5 +11920,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Aktivitäten zum Freischalten des nächsten Themas", + "activitiesToUnlockTopicDesc": "Legen Sie die Anzahl der Aktivitäten fest, um das nächste Kursthema freizuschalten", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_el.arb b/lib/l10n/intl_el.arb index 48211b6bd..23cfc88c3 100644 --- a/lib/l10n/intl_el.arb +++ b/lib/l10n/intl_el.arb @@ -4937,7 +4937,7 @@ "playWithAI": "Παίξτε με την Τεχνητή Νοημοσύνη προς το παρόν", "courseStartDesc": "Ο Pangea Bot είναι έτοιμος να ξεκινήσει οποιαδήποτε στιγμή!\n\n...αλλά η μάθηση είναι καλύτερη με φίλους!", "@@locale": "el", - "@@last_modified": "2025-12-12 14:56:59.182419", + "@@last_modified": "2026-01-06 13:02:36.159093", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12971,5 +12971,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Δραστηριότητες για Ξεκλείδωμα Επόμενου Θέματος", + "activitiesToUnlockTopicDesc": "Ορίστε τον αριθμό των δραστηριοτήτων για να ξεκλειδώσετε το επόμενο θέμα του μαθήματος", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 4567e0c2e..62f6a6fea 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -5343,5 +5343,7 @@ "introChatDesc": "Anyone in the space can post.", "announcementsChatTitle": "Announcements Chat", "announcementsChatDesc": "Only space admin can post.", - "inOngoingActivity": "You have an ongoing activity!" + "inOngoingActivity": "You have an ongoing activity!", + "activitiesToUnlockTopicTitle": "Activities to Unlock Next Topic", + "activitiesToUnlockTopicDesc": "Set the number of activities to unlock the next course topic" } diff --git a/lib/l10n/intl_eo.arb b/lib/l10n/intl_eo.arb index d33ee53f0..0aa337550 100644 --- a/lib/l10n/intl_eo.arb +++ b/lib/l10n/intl_eo.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:57:05.939954", + "@@last_modified": "2026-01-06 13:02:41.310107", "about": "Prio", "@about": { "type": "String", @@ -13002,5 +13002,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Aktivecoj por Malŝlosi Sekvan Temon", + "activitiesToUnlockTopicDesc": "Agordu la nombron de aktivecoj por malŝlosi la sekvan kurson", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_es.arb b/lib/l10n/intl_es.arb index 3bf09bf16..210f5d2d5 100644 --- a/lib/l10n/intl_es.arb +++ b/lib/l10n/intl_es.arb @@ -1,6 +1,6 @@ { "@@locale": "es", - "@@last_modified": "2025-12-12 14:55:35.099744", + "@@last_modified": "2026-01-06 13:00:57.006469", "about": "Acerca de", "@about": { "type": "String", @@ -7524,5 +7524,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Actividades para Desbloquear el Siguiente Tema", + "activitiesToUnlockTopicDesc": "Establecer el número de actividades para desbloquear el siguiente tema del curso", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_et.arb b/lib/l10n/intl_et.arb index 9fd118d64..f9bec4cee 100644 --- a/lib/l10n/intl_et.arb +++ b/lib/l10n/intl_et.arb @@ -1,6 +1,6 @@ { "@@locale": "et", - "@@last_modified": "2025-12-12 14:56:04.911626", + "@@last_modified": "2026-01-06 13:01:32.507692", "about": "Rakenduse teave", "@about": { "type": "String", @@ -12184,5 +12184,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Tegevused järgmise teema avamiseks", + "activitiesToUnlockTopicDesc": "Määrake tegevuste arv järgmise kursuse teema avamiseks", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_eu.arb b/lib/l10n/intl_eu.arb index fa6572982..0ef828f31 100644 --- a/lib/l10n/intl_eu.arb +++ b/lib/l10n/intl_eu.arb @@ -1,6 +1,6 @@ { "@@locale": "eu", - "@@last_modified": "2025-12-12 14:56:01.835283", + "@@last_modified": "2026-01-06 13:01:29.144037", "about": "Honi buruz", "@about": { "type": "String", @@ -11913,5 +11913,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Hurrengo gaia irekitzeko jarduerak", + "activitiesToUnlockTopicDesc": "Hurrengo ikastaro gaia irekitzeko jardueren kopurua ezarri", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fa.arb b/lib/l10n/intl_fa.arb index 15ba585ed..e89ff08a4 100644 --- a/lib/l10n/intl_fa.arb +++ b/lib/l10n/intl_fa.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:56:51.600012", + "@@last_modified": "2026-01-06 13:02:30.390244", "repeatPassword": "تکرار رمزعبور", "@repeatPassword": {}, "about": "درباره", @@ -12645,5 +12645,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "فعالیت‌ها برای باز کردن موضوع بعدی", + "activitiesToUnlockTopicDesc": "تعداد فعالیت‌ها را برای باز کردن موضوع بعدی دوره تنظیم کنید", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fi.arb b/lib/l10n/intl_fi.arb index d241b2521..0c2992875 100644 --- a/lib/l10n/intl_fi.arb +++ b/lib/l10n/intl_fi.arb @@ -4512,7 +4512,7 @@ "playWithAI": "Leiki tekoälyn kanssa nyt", "courseStartDesc": "Pangea Bot on valmis milloin tahansa!\n\n...mutta oppiminen on parempaa ystävien kanssa!", "@@locale": "fi", - "@@last_modified": "2025-12-12 14:55:38.794396", + "@@last_modified": "2026-01-06 13:01:04.204663", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12558,5 +12558,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Toiminnot seuraavan aiheen avaamiseksi", + "activitiesToUnlockTopicDesc": "Aseta toimintojen määrä seuraavan kurssiaiheen avaamiseksi", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fil.arb b/lib/l10n/intl_fil.arb index 65bd2f2ea..cfdecfa8c 100644 --- a/lib/l10n/intl_fil.arb +++ b/lib/l10n/intl_fil.arb @@ -3272,7 +3272,7 @@ "selectAll": "Piliin lahat", "deselectAll": "Huwag piliin lahat", "@@locale": "fil", - "@@last_modified": "2025-12-12 14:56:28.662833", + "@@last_modified": "2026-01-06 13:02:03.027217", "@setCustomPermissionLevel": { "type": "String", "placeholders": {} @@ -12889,5 +12889,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Mga Aktibidad upang I-unlock ang Susunod na Paksa", + "activitiesToUnlockTopicDesc": "Itakda ang bilang ng mga aktibidad upang i-unlock ang susunod na paksa ng kurso", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index 9901ac48f..feea75e17 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -1,6 +1,6 @@ { "@@locale": "fr", - "@@last_modified": "2025-12-12 14:57:14.235816", + "@@last_modified": "2026-01-06 13:02:50.687446", "about": "À propos", "@about": { "type": "String", @@ -12237,5 +12237,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Activités à débloquer pour le prochain sujet", + "activitiesToUnlockTopicDesc": "Définissez le nombre d'activités pour débloquer le prochain sujet de cours", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ga.arb b/lib/l10n/intl_ga.arb index 3c7411024..71f0b4121 100644 --- a/lib/l10n/intl_ga.arb +++ b/lib/l10n/intl_ga.arb @@ -4998,7 +4998,7 @@ "playWithAI": "Imir le AI faoi láthair", "courseStartDesc": "Tá Bot Pangea réidh chun dul am ar bith!\n\n...ach is fearr foghlaim le cairde!", "@@locale": "ga", - "@@last_modified": "2025-12-12 14:57:12.595251", + "@@last_modified": "2026-01-06 13:02:48.899020", "@customReaction": { "type": "String", "placeholders": {} @@ -11911,5 +11911,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Gníomhaíochtaí le hOscail an Topaic Seo chugainn", + "activitiesToUnlockTopicDesc": "Socraigh an líon gníomhaíochtaí le hOscail an topaic chúrsa seo chugainn", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_gl.arb b/lib/l10n/intl_gl.arb index 1551ea1c6..8948862ad 100644 --- a/lib/l10n/intl_gl.arb +++ b/lib/l10n/intl_gl.arb @@ -1,6 +1,6 @@ { "@@locale": "gl", - "@@last_modified": "2025-12-12 14:55:36.646073", + "@@last_modified": "2026-01-06 13:01:01.095511", "about": "Acerca de", "@about": { "type": "String", @@ -11910,5 +11910,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Actividades para Desbloquear o Próximo Tema", + "activitiesToUnlockTopicDesc": "Establece o número de actividades para desbloquear o próximo tema do curso", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_he.arb b/lib/l10n/intl_he.arb index dacd02679..7486dff15 100644 --- a/lib/l10n/intl_he.arb +++ b/lib/l10n/intl_he.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:55:56.162697", + "@@last_modified": "2026-01-06 13:01:22.903727", "about": "אודות", "@about": { "type": "String", @@ -12962,5 +12962,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "פעילויות לפתיחת נושא הבא", + "activitiesToUnlockTopicDesc": "קבע את מספר הפעילויות לפתיחת נושא הקורס הבא", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_hi.arb b/lib/l10n/intl_hi.arb index 952eca2d2..d71d2fccf 100644 --- a/lib/l10n/intl_hi.arb +++ b/lib/l10n/intl_hi.arb @@ -4964,7 +4964,7 @@ "playWithAI": "अभी के लिए एआई के साथ खेलें", "courseStartDesc": "पैंजिया बॉट कभी भी जाने के लिए तैयार है!\n\n...लेकिन दोस्तों के साथ सीखना बेहतर है!", "@@locale": "hi", - "@@last_modified": "2025-12-12 14:57:04.374272", + "@@last_modified": "2026-01-06 13:02:39.726780", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12998,5 +12998,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "अगले विषय को अनलॉक करने के लिए गतिविधियाँ", + "activitiesToUnlockTopicDesc": "अगले पाठ्यक्रम विषय को अनलॉक करने के लिए गतिविधियों की संख्या निर्धारित करें", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_hr.arb b/lib/l10n/intl_hr.arb index 92a9b0207..6d68adfba 100644 --- a/lib/l10n/intl_hr.arb +++ b/lib/l10n/intl_hr.arb @@ -1,6 +1,6 @@ { "@@locale": "hr", - "@@last_modified": "2025-12-12 14:55:54.655811", + "@@last_modified": "2026-01-06 13:01:21.058681", "about": "Informacije", "@about": { "type": "String", @@ -12285,5 +12285,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Aktivnosti za otključavanje sljedeće teme", + "activitiesToUnlockTopicDesc": "Postavite broj aktivnosti za otključavanje sljedeće teme tečaja", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_hu.arb b/lib/l10n/intl_hu.arb index d5e66c00f..ed306f5b2 100644 --- a/lib/l10n/intl_hu.arb +++ b/lib/l10n/intl_hu.arb @@ -1,6 +1,6 @@ { "@@locale": "hu", - "@@last_modified": "2025-12-12 14:55:43.397189", + "@@last_modified": "2026-01-06 13:01:08.359844", "about": "Névjegy", "@about": { "type": "String", @@ -11914,5 +11914,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Tevékenységek a következő téma feloldásához", + "activitiesToUnlockTopicDesc": "Állítsa be a tevékenységek számát a következő tanfolyam téma feloldásához", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ia.arb b/lib/l10n/intl_ia.arb index b55713470..27242a5f7 100644 --- a/lib/l10n/intl_ia.arb +++ b/lib/l10n/intl_ia.arb @@ -2439,7 +2439,7 @@ "playWithAI": "Joca con le IA pro ora", "courseStartDesc": "Pangea Bot es preste a comenzar a qualunque momento!\n\n...ma apprender es melior con amicos!", "@@locale": "ia", - "@@last_modified": "2025-12-12 14:55:58.378450", + "@@last_modified": "2026-01-06 13:01:24.542087", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12991,5 +12991,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Actividades para Desbloquear el Siguiente Tema", + "activitiesToUnlockTopicDesc": "Establecer el número de actividades para desbloquear el siguiente tema del curso", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_id.arb b/lib/l10n/intl_id.arb index 176b44c8c..9e3c7e829 100644 --- a/lib/l10n/intl_id.arb +++ b/lib/l10n/intl_id.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:55:45.570582", + "@@last_modified": "2026-01-06 13:01:11.059266", "setAsCanonicalAlias": "Atur sebagai alias utama", "@setAsCanonicalAlias": { "type": "String", @@ -11904,5 +11904,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Kegiatan untuk Membuka Topik Berikutnya", + "activitiesToUnlockTopicDesc": "Tentukan jumlah kegiatan untuk membuka topik kursus berikutnya", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ie.arb b/lib/l10n/intl_ie.arb index b79304552..8af7efc8b 100644 --- a/lib/l10n/intl_ie.arb +++ b/lib/l10n/intl_ie.arb @@ -4853,7 +4853,7 @@ "playWithAI": "Joca con AI pro ora", "courseStartDesc": "Pangea Bot es preste a partir a qualunque momento!\n\n...ma apprender es melior con amicos!", "@@locale": "ie", - "@@last_modified": "2025-12-12 14:55:51.396585", + "@@last_modified": "2026-01-06 13:01:17.481803", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12887,5 +12887,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Gníomhaíochtaí le hOscail an Conradh Nua", + "activitiesToUnlockTopicDesc": "Socraigh an líon gníomhaíochtaí le hOscail an chéad ábhar cúrsa", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_it.arb b/lib/l10n/intl_it.arb index b1b1bfb28..69849db9b 100644 --- a/lib/l10n/intl_it.arb +++ b/lib/l10n/intl_it.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:56:12.230518", + "@@last_modified": "2026-01-06 13:01:39.801417", "about": "Informazioni", "@about": { "type": "String", @@ -11916,5 +11916,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Attività per sbloccare il prossimo argomento", + "activitiesToUnlockTopicDesc": "Imposta il numero di attività per sbloccare il prossimo argomento del corso", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ja.arb b/lib/l10n/intl_ja.arb index 333f8e9b8..e593e83c9 100644 --- a/lib/l10n/intl_ja.arb +++ b/lib/l10n/intl_ja.arb @@ -1,6 +1,6 @@ { "@@locale": "ja", - "@@last_modified": "2025-12-12 14:57:02.463257", + "@@last_modified": "2026-01-06 13:02:37.951868", "about": "このアプリについて", "@about": { "type": "String", @@ -12703,5 +12703,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "次のトピックをアンロックするためのアクティビティ", + "activitiesToUnlockTopicDesc": "次のコーストピックをアンロックするためのアクティビティの数を設定します", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ka.arb b/lib/l10n/intl_ka.arb index 472a6035e..91bd64b51 100644 --- a/lib/l10n/intl_ka.arb +++ b/lib/l10n/intl_ka.arb @@ -3075,7 +3075,7 @@ "playWithAI": "ამ დროისთვის ითამაშეთ AI-თან", "courseStartDesc": "Pangea Bot მზადაა ნებისმიერ დროს გასასვლელად!\n\n...მაგრამ სწავლა უკეთესია მეგობრებთან ერთად!", "@@locale": "ka", - "@@last_modified": "2025-12-12 14:57:09.365040", + "@@last_modified": "2026-01-06 13:02:45.195897", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12943,5 +12943,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "აქტივობები შემდეგ თემაზე გადასასვლელად", + "activitiesToUnlockTopicDesc": "განსაზღვრეთ აქტივობების რაოდენობა, რათა გახსნათ შემდეგი კურსის თემა", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ko.arb b/lib/l10n/intl_ko.arb index a23edd2f1..f82fc9758 100644 --- a/lib/l10n/intl_ko.arb +++ b/lib/l10n/intl_ko.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:55:32.554351", + "@@last_modified": "2026-01-06 13:00:55.145584", "about": "소개", "@about": { "type": "String", @@ -12021,5 +12021,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "다음 주제를 잠금 해제할 활동", + "activitiesToUnlockTopicDesc": "다음 과정 주제를 잠금 해제할 활동 수를 설정하세요", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_lt.arb b/lib/l10n/intl_lt.arb index 6defe065d..f285cb289 100644 --- a/lib/l10n/intl_lt.arb +++ b/lib/l10n/intl_lt.arb @@ -4342,7 +4342,7 @@ "playWithAI": "Žaiskite su dirbtiniu intelektu dabar", "courseStartDesc": "Pangea botas pasiruošęs bet kada pradėti!\n\n...bet mokymasis yra geresnis su draugais!", "@@locale": "lt", - "@@last_modified": "2025-12-12 14:56:37.876164", + "@@last_modified": "2026-01-06 13:02:14.517811", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12718,5 +12718,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Veiklos, kad atrakintumėte kitą temą", + "activitiesToUnlockTopicDesc": "Nustatykite veiklų skaičių, kad atrakintumėte kitą kurso temą", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_lv.arb b/lib/l10n/intl_lv.arb index e30b03ad8..da62402e1 100644 --- a/lib/l10n/intl_lv.arb +++ b/lib/l10n/intl_lv.arb @@ -4958,7 +4958,7 @@ "playWithAI": "Tagad spēlējiet ar AI", "courseStartDesc": "Pangea bots ir gatavs jebkurā laikā!\n\n...bet mācīties ir labāk ar draugiem!", "@@locale": "lv", - "@@last_modified": "2025-12-12 14:56:30.616551", + "@@last_modified": "2026-01-06 13:02:05.693062", "analyticsInactiveTitle": "Pieprasījumi neaktīviem lietotājiem nevar tikt nosūtīti", "analyticsInactiveDesc": "Neaktīvi lietotāji, kuri nav pieteikušies kopš šīs funkcijas ieviešanas, neredzēs jūsu pieprasījumu.\n\nPieprasījuma poga parādīsies, kad viņi atgriezīsies. Jūs varat atkārtoti nosūtīt pieprasījumu vēlāk, noklikšķinot uz pieprasījuma pogas viņu vārdā, kad tā būs pieejama.", "accessRequestedTitle": "Pieprasījums piekļūt analītikai", @@ -11899,5 +11899,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Aktivitātes, lai atbloķētu nākamo tēmu", + "activitiesToUnlockTopicDesc": "Iestatiet aktivitāšu skaitu, lai atbloķētu nākamo kursa tēmu", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_nb.arb b/lib/l10n/intl_nb.arb index caccda82d..a6723b0a4 100644 --- a/lib/l10n/intl_nb.arb +++ b/lib/l10n/intl_nb.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:56:17.485955", + "@@last_modified": "2026-01-06 13:01:49.200225", "about": "Om", "@about": { "type": "String", @@ -13006,5 +13006,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Aktiviteter for å låse opp neste emne", + "activitiesToUnlockTopicDesc": "Sett antall aktiviteter for å låse opp neste kurs emne", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_nl.arb b/lib/l10n/intl_nl.arb index 2e252de15..1ce44e6cf 100644 --- a/lib/l10n/intl_nl.arb +++ b/lib/l10n/intl_nl.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:56:43.921908", + "@@last_modified": "2026-01-06 13:02:20.252502", "about": "Over ons", "@about": { "type": "String", @@ -11913,5 +11913,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Activiteiten om het Volgende Onderwerp te Ontgrendelen", + "activitiesToUnlockTopicDesc": "Stel het aantal activiteiten in om het volgende cursusonderwerp te ontgrendelen", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pl.arb b/lib/l10n/intl_pl.arb index a11634ee9..d73e3564d 100644 --- a/lib/l10n/intl_pl.arb +++ b/lib/l10n/intl_pl.arb @@ -1,6 +1,6 @@ { "@@locale": "pl", - "@@last_modified": "2025-12-12 14:56:55.860719", + "@@last_modified": "2026-01-06 13:02:32.127346", "about": "O aplikacji", "@about": { "type": "String", @@ -11913,5 +11913,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Aktywności do odblokowania następnego tematu", + "activitiesToUnlockTopicDesc": "Ustaw liczbę aktywności do odblokowania następnego tematu kursu", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pt.arb b/lib/l10n/intl_pt.arb index b0f610e6a..dd8c82364 100644 --- a/lib/l10n/intl_pt.arb +++ b/lib/l10n/intl_pt.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:56:03.478395", + "@@last_modified": "2026-01-06 13:01:30.651964", "copiedToClipboard": "Copiada para a área de transferência", "@copiedToClipboard": { "type": "String", @@ -13013,5 +13013,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Atividades para Desbloquear o Próximo Tópico", + "activitiesToUnlockTopicDesc": "Defina o número de atividades para desbloquear o próximo tópico do curso", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pt_BR.arb b/lib/l10n/intl_pt_BR.arb index 2b23f1b98..18d971fe6 100644 --- a/lib/l10n/intl_pt_BR.arb +++ b/lib/l10n/intl_pt_BR.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:56:00.087346", + "@@last_modified": "2026-01-06 13:01:26.266378", "about": "Sobre", "@about": { "type": "String", @@ -12271,5 +12271,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Atividades para Desbloquear o Próximo Tópico", + "activitiesToUnlockTopicDesc": "Defina o número de atividades para desbloquear o próximo tópico do curso", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pt_PT.arb b/lib/l10n/intl_pt_PT.arb index f1cfa80d7..b0b769606 100644 --- a/lib/l10n/intl_pt_PT.arb +++ b/lib/l10n/intl_pt_PT.arb @@ -3816,7 +3816,7 @@ "selectAll": "Selecionar tudo", "deselectAll": "Desmarcar tudo", "@@locale": "pt_PT", - "@@last_modified": "2025-12-12 14:56:24.160772", + "@@last_modified": "2026-01-06 13:01:59.189375", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12942,5 +12942,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Atividades para Desbloquear o Próximo Tópico", + "activitiesToUnlockTopicDesc": "Defina o número de atividades para desbloquear o próximo tópico do curso", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ro.arb b/lib/l10n/intl_ro.arb index 16b3f4886..51df3e3d0 100644 --- a/lib/l10n/intl_ro.arb +++ b/lib/l10n/intl_ro.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:55:47.409206", + "@@last_modified": "2026-01-06 13:01:12.939720", "about": "Despre", "@about": { "type": "String", @@ -12648,5 +12648,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Activități pentru deblocarea următorului subiect", + "activitiesToUnlockTopicDesc": "Stabilește numărul de activități pentru a debloca următorul subiect al cursului", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ru.arb b/lib/l10n/intl_ru.arb index 9fdb344f8..7c331e44e 100644 --- a/lib/l10n/intl_ru.arb +++ b/lib/l10n/intl_ru.arb @@ -1,6 +1,6 @@ { "@@locale": "ru", - "@@last_modified": "2025-12-12 14:57:07.862319", + "@@last_modified": "2026-01-06 13:02:42.875671", "about": "О проекте", "@about": { "type": "String", @@ -12018,5 +12018,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Деятельности для разблокировки следующей темы", + "activitiesToUnlockTopicDesc": "Установите количество действий для разблокировки следующей темы курса", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sk.arb b/lib/l10n/intl_sk.arb index 7ca0d1edf..a98d2798e 100644 --- a/lib/l10n/intl_sk.arb +++ b/lib/l10n/intl_sk.arb @@ -1,6 +1,6 @@ { "@@locale": "sk", - "@@last_modified": "2025-12-12 14:55:49.234609", + "@@last_modified": "2026-01-06 13:01:15.636781", "about": "O aplikácii", "@about": { "type": "String", @@ -12997,5 +12997,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Aktivity na odomknutie nasledujúcej témy", + "activitiesToUnlockTopicDesc": "Nastavte počet aktivít na odomknutie nasledujúcej témy kurzu", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sl.arb b/lib/l10n/intl_sl.arb index 45a071ec1..7c644b5d6 100644 --- a/lib/l10n/intl_sl.arb +++ b/lib/l10n/intl_sl.arb @@ -2945,7 +2945,7 @@ "playWithAI": "Za zdaj igrajte z AI-jem", "courseStartDesc": "Pangea Bot je pripravljen kadarkoli!\n\n...ampak je bolje učiti se s prijatelji!", "@@locale": "sl", - "@@last_modified": "2025-12-12 14:56:08.288965", + "@@last_modified": "2026-01-06 13:01:36.111015", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12994,5 +12994,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Dejavnosti za odklepanje naslednje teme", + "activitiesToUnlockTopicDesc": "Določite število dejavnosti za odklepanje naslednje teme tečaja", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sr.arb b/lib/l10n/intl_sr.arb index 2775a5055..463fe4312 100644 --- a/lib/l10n/intl_sr.arb +++ b/lib/l10n/intl_sr.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:57:11.168077", + "@@last_modified": "2026-01-06 13:02:46.667322", "about": "О програму", "@about": { "type": "String", @@ -13015,5 +13015,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Aktivnosti za otključavanje sledeće teme", + "activitiesToUnlockTopicDesc": "Postavite broj aktivnosti za otključavanje sledeće teme kursa", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sv.arb b/lib/l10n/intl_sv.arb index be19b5dfb..48fd04208 100644 --- a/lib/l10n/intl_sv.arb +++ b/lib/l10n/intl_sv.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:56:57.524563", + "@@last_modified": "2026-01-06 13:02:34.358506", "about": "Om", "@about": { "type": "String", @@ -12391,5 +12391,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Aktiviteter för att låsa upp nästa ämne", + "activitiesToUnlockTopicDesc": "Ange antalet aktiviteter för att låsa upp nästa kursämne", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ta.arb b/lib/l10n/intl_ta.arb index 517380878..864ec90d4 100644 --- a/lib/l10n/intl_ta.arb +++ b/lib/l10n/intl_ta.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:56:42.385850", + "@@last_modified": "2026-01-06 13:02:17.997622", "acceptedTheInvitation": "👍 {username} அழைப்பை ஏற்றுக்கொண்டது", "@acceptedTheInvitation": { "type": "String", @@ -12137,5 +12137,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "அடுத்த தலைப்பை திறக்க செயல்பாடுகள்", + "activitiesToUnlockTopicDesc": "அடுத்த பாடத்தொகுப்பை திறக்க செயல்பாடுகளின் எண்ணிக்கையை அமைக்கவும்", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_te.arb b/lib/l10n/intl_te.arb index 3e2115562..612bedbcd 100644 --- a/lib/l10n/intl_te.arb +++ b/lib/l10n/intl_te.arb @@ -2401,7 +2401,7 @@ "playWithAI": "ఇప్పుడే AI తో ఆడండి", "courseStartDesc": "పాంజియా బాట్ ఎప్పుడైనా సిద్ధంగా ఉంటుంది!\n\n...కానీ స్నేహితులతో నేర్చుకోవడం మెరుగైనది!", "@@locale": "te", - "@@last_modified": "2025-12-12 14:56:35.809423", + "@@last_modified": "2026-01-06 13:02:11.522520", "@setCustomPermissionLevel": { "type": "String", "placeholders": {} @@ -13002,5 +13002,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "తరువాతి అంశాన్ని అన్లాక్ చేయడానికి కార్యకలాపాలు", + "activitiesToUnlockTopicDesc": "తరువాతి కోర్సు అంశాన్ని అన్లాక్ చేయడానికి కార్యకలాపాల సంఖ్యను సెట్ చేయండి", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_th.arb b/lib/l10n/intl_th.arb index 462faf1db..a5ed06ea7 100644 --- a/lib/l10n/intl_th.arb +++ b/lib/l10n/intl_th.arb @@ -4937,7 +4937,7 @@ "playWithAI": "เล่นกับ AI ชั่วคราว", "courseStartDesc": "Pangea Bot พร้อมที่จะเริ่มต้นได้ทุกเมื่อ!\n\n...แต่การเรียนรู้ดีกว่ากับเพื่อน!", "@@locale": "th", - "@@last_modified": "2025-12-12 14:56:22.826920", + "@@last_modified": "2026-01-06 13:01:57.436131", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12971,5 +12971,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "กิจกรรมเพื่อปลดล็อกหัวข้อถัดไป", + "activitiesToUnlockTopicDesc": "กำหนดจำนวนกิจกรรมเพื่อปลดล็อกหัวข้อหลักสูตรถัดไป", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_tr.arb b/lib/l10n/intl_tr.arb index 4faf6766d..e1f7b19b9 100644 --- a/lib/l10n/intl_tr.arb +++ b/lib/l10n/intl_tr.arb @@ -1,6 +1,6 @@ { "@@locale": "tr", - "@@last_modified": "2025-12-12 14:56:34.173135", + "@@last_modified": "2026-01-06 13:02:09.596458", "about": "Hakkında", "@about": { "type": "String", @@ -12135,5 +12135,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Sonraki Konuyu Açmak için Aktiviteler", + "activitiesToUnlockTopicDesc": "Sonraki kurs konusunu açmak için aktivite sayısını ayarlayın", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_uk.arb b/lib/l10n/intl_uk.arb index 847972f3e..90ae479f9 100644 --- a/lib/l10n/intl_uk.arb +++ b/lib/l10n/intl_uk.arb @@ -1,6 +1,6 @@ { "@@locale": "uk", - "@@last_modified": "2025-12-12 14:56:13.994412", + "@@last_modified": "2026-01-06 13:01:42.034870", "about": "Про застосунок", "@about": { "type": "String", @@ -11907,5 +11907,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Дії для розблокування наступної теми", + "activitiesToUnlockTopicDesc": "Встановіть кількість дій для розблокування наступної теми курсу", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_vi.arb b/lib/l10n/intl_vi.arb index bf6c3f6a7..2caff2293 100644 --- a/lib/l10n/intl_vi.arb +++ b/lib/l10n/intl_vi.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:56:39.506888", + "@@last_modified": "2026-01-06 13:02:16.250270", "about": "Giới thiệu", "@about": { "type": "String", @@ -5854,5 +5854,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "Các hoạt động để mở khóa chủ đề tiếp theo", + "activitiesToUnlockTopicDesc": "Đặt số lượng hoạt động để mở khóa chủ đề khóa học tiếp theo", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_yue.arb b/lib/l10n/intl_yue.arb index 7bdf11777..ec477fd55 100644 --- a/lib/l10n/intl_yue.arb +++ b/lib/l10n/intl_yue.arb @@ -2341,7 +2341,7 @@ "selectAll": "全選", "deselectAll": "取消全選", "@@locale": "yue", - "@@last_modified": "2025-12-12 14:56:10.080732", + "@@last_modified": "2026-01-06 13:01:38.057632", "@ignoreUser": { "type": "String", "placeholders": {} @@ -13004,5 +13004,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "解鎖下一主題的活動", + "activitiesToUnlockTopicDesc": "設置解鎖下一課程主題所需的活動數量", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb index 1b4a9ab29..94693b098 100644 --- a/lib/l10n/intl_zh.arb +++ b/lib/l10n/intl_zh.arb @@ -1,6 +1,6 @@ { "@@locale": "zh", - "@@last_modified": "2025-12-12 14:56:47.615356", + "@@last_modified": "2026-01-06 13:02:25.686469", "about": "关于", "@about": { "type": "String", @@ -11904,5 +11904,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "解锁下一个主题的活动", + "activitiesToUnlockTopicDesc": "设置解锁下一个课程主题所需的活动数量", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_zh_Hant.arb b/lib/l10n/intl_zh_Hant.arb index e22a7793b..667fca74a 100644 --- a/lib/l10n/intl_zh_Hant.arb +++ b/lib/l10n/intl_zh_Hant.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-12 14:56:26.718989", + "@@last_modified": "2026-01-06 13:02:01.182495", "about": "關於", "@about": { "type": "String", @@ -11911,5 +11911,15 @@ "@inOngoingActivity": { "type": "String", "placeholders": {} + }, + "activitiesToUnlockTopicTitle": "解鎖下一主題的活動", + "activitiesToUnlockTopicDesc": "設定解鎖下一課程主題所需的活動數量", + "@activitiesToUnlockTopicTitle": { + "type": "String", + "placeholders": {} + }, + "@activitiesToUnlockTopicDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/pangea/chat_settings/pages/room_details_buttons.dart b/lib/pangea/chat_settings/pages/room_details_buttons.dart index 525a6de07..c47f64734 100644 --- a/lib/pangea/chat_settings/pages/room_details_buttons.dart +++ b/lib/pangea/chat_settings/pages/room_details_buttons.dart @@ -14,6 +14,7 @@ class ButtonDetails { final bool isToggle; final bool value; final SpaceSettingsTabs? tab; + final Widget? trailing; const ButtonDetails({ required this.title, @@ -26,6 +27,7 @@ class ButtonDetails { this.value = false, this.showInMainView = true, this.tab, + this.trailing, }); } diff --git a/lib/pangea/chat_settings/pages/space_details_content.dart b/lib/pangea/chat_settings/pages/space_details_content.dart index 0cb5c5515..2c3bd150d 100644 --- a/lib/pangea/chat_settings/pages/space_details_content.dart +++ b/lib/pangea/chat_settings/pages/space_details_content.dart @@ -24,6 +24,7 @@ import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart'; import 'package:fluffychat/pangea/space_analytics/space_analytics.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; @@ -129,13 +130,59 @@ class SpaceDetailsContent extends StatelessWidget { icon: const Icon(Icons.school_outlined, size: 30.0), onPressed: () => showFutureLoadingDialog( context: context, - future: () => room.setTeacherMode(!room.isTeacherMode), + future: () => room.setTeacherMode( + room.teacherMode.copyWith(enabled: !room.isTeacherMode), + ), ), enabled: room.isRoomAdmin, showInMainView: false, isToggle: true, value: room.isTeacherMode, ), + ButtonDetails( + title: L10n.of(context).activitiesToUnlockTopicTitle, + description: L10n.of(context).activitiesToUnlockTopicDesc, + icon: const Icon(Icons.lock_open_outlined, size: 30.0), + onPressed: () async { + final current = room.teacherMode.activitiesToUnlockTopic; + final resp = await showTextInputDialog( + context: context, + title: L10n.of(context).activitiesToUnlockTopicTitle, + keyboardType: TextInputType.number, + validator: (input) { + if (input.isEmpty || + int.tryParse(input) == null || + int.parse(input) < 0) { + return L10n.of(context).enterNumber; + } + return null; + }, + initialText: current != null ? "$current" : null, + ); + + if (resp == null) return; + await showFutureLoadingDialog( + context: context, + future: () => room.setTeacherMode( + room.teacherMode.copyWith( + activitiesToUnlockTopic: int.parse(resp), + ), + ), + ); + }, + enabled: room.isRoomAdmin, + visible: room.isTeacherMode, + showInMainView: false, + trailing: room.teacherMode.activitiesToUnlockTopic != null + ? Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: Text( + "${room.teacherMode.activitiesToUnlockTopic}", + style: Theme.of(context).textTheme.labelLarge, + ), + ) + : null, + ), ButtonDetails( title: l10n.permissions, description: l10n.permissionsDesc, @@ -366,6 +413,7 @@ class SpaceDetailsContent extends StatelessWidget { onTap: b.enabled ? () => b.onPressed?.call() : null, + trailing: b.trailing, ), ); }).toList(), diff --git a/lib/pangea/course_plans/course_activities/activity_summaries_provider.dart b/lib/pangea/course_plans/course_activities/activity_summaries_provider.dart index 3963caeac..d4788e81e 100644 --- a/lib/pangea/course_plans/course_activities/activity_summaries_provider.dart +++ b/lib/pangea/course_plans/course_activities/activity_summaries_provider.dart @@ -152,21 +152,26 @@ mixin ActivitySummariesProvider on State { bool _hasCompletedTopic( String userID, CourseTopicModel topic, + int? activitiesToCompleteOverride, ) { final topicActivityIds = topic.activityIds.toSet(); - final numTwoPersonActivities = topic.loadedActivities.values - .where((a) => a.req.numberOfParticipants <= 2) - .length; - final completedTopicActivities = _completedActivities(userID).intersection(topicActivityIds); + if (activitiesToCompleteOverride != null) { + return completedTopicActivities.length >= activitiesToCompleteOverride; + } + + final numTwoPersonActivities = topic.loadedActivities.values + .where((a) => a.req.numberOfParticipants <= 2) + .length; return completedTopicActivities.length >= numTwoPersonActivities; } String? currentTopicId( String userID, CoursePlanModel course, + int? activitiesToCompleteOverride, ) { if (course.loadedTopics.isEmpty) { return null; @@ -180,7 +185,12 @@ mixin ActivitySummariesProvider on State { return null; } - if (!_hasCompletedTopic(userID, topic) && topic.activityIds.isNotEmpty) { + if (!_hasCompletedTopic( + userID, + topic, + activitiesToCompleteOverride, + ) && + topic.activityIds.isNotEmpty) { return topicId; } } @@ -190,12 +200,17 @@ mixin ActivitySummariesProvider on State { Map> topicsToUsers( Room room, CoursePlanModel course, + int? activitiesToCompleteOverride, ) { final Map> topicUserMap = {}; final users = room.getParticipants(); for (final user in users) { if (user.id == BotName.byEnvironment) continue; - final topicId = currentTopicId(user.id, course); + final topicId = currentTopicId( + user.id, + course, + activitiesToCompleteOverride, + ); if (topicId != null) { topicUserMap.putIfAbsent(topicId, () => []).add(user); } diff --git a/lib/pangea/course_plans/courses/course_plan_room_extension.dart b/lib/pangea/course_plans/courses/course_plan_room_extension.dart index e9d78c2b5..728b0bf84 100644 --- a/lib/pangea/course_plans/courses/course_plan_room_extension.dart +++ b/lib/pangea/course_plans/courses/course_plan_room_extension.dart @@ -12,6 +12,7 @@ import 'package:fluffychat/pangea/chat_settings/constants/pangea_room_types.dart import 'package:fluffychat/pangea/course_chats/course_chats_settings_model.dart'; import 'package:fluffychat/pangea/course_chats/course_default_chats_enum.dart'; import 'package:fluffychat/pangea/course_plans/courses/course_plan_event.dart'; +import 'package:fluffychat/pangea/course_settings/teacher_mode_model.dart'; import 'package:fluffychat/pangea/events/constants/pangea_event_types.dart'; import 'package:fluffychat/pangea/extensions/join_rule_extension.dart'; import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart'; @@ -107,21 +108,22 @@ extension CoursePlanRoomExtension on Room { return roomID; } - bool get isTeacherMode { - final event = getState(PangeaEventTypes.teacherMode, client.userID!); - if (event == null) return false; - final content = event.content; - return content['enabled'] == true; + TeacherModeModel get teacherMode { + final state = getState(PangeaEventTypes.teacherMode); + if (state == null) { + return const TeacherModeModel(enabled: false); + } + return TeacherModeModel.fromJson(state.content); } - Future setTeacherMode(bool enabled) async { + bool get isTeacherMode => teacherMode.enabled && isRoomAdmin; + + Future setTeacherMode(TeacherModeModel model) async { await client.setRoomStateWithKey( id, PangeaEventTypes.teacherMode, - client.userID!, - { - 'enabled': enabled, - }, + '', + model.toJson(), ); } diff --git a/lib/pangea/course_settings/course_settings.dart b/lib/pangea/course_settings/course_settings.dart index 9c7a9c586..27422cace 100644 --- a/lib/pangea/course_settings/course_settings.dart +++ b/lib/pangea/course_settings/course_settings.dart @@ -105,6 +105,7 @@ class CourseSettings extends StatelessWidget { final activeTopicId = controller.currentTopicId( Matrix.of(context).client.userID!, controller.course!, + room.teacherMode.activitiesToUnlockTopic, ); final int? topicIndex = activeTopicId == null @@ -116,6 +117,7 @@ class CourseSettings extends StatelessWidget { : controller.topicsToUsers( room, controller.course!, + room.teacherMode.activitiesToUnlockTopic, ); final teacherMode = room.isTeacherMode; diff --git a/lib/pangea/course_settings/teacher_mode_model.dart b/lib/pangea/course_settings/teacher_mode_model.dart new file mode 100644 index 000000000..dea77e843 --- /dev/null +++ b/lib/pangea/course_settings/teacher_mode_model.dart @@ -0,0 +1,32 @@ +class TeacherModeModel { + final bool enabled; + final int? activitiesToUnlockTopic; + + const TeacherModeModel({ + required this.enabled, + this.activitiesToUnlockTopic, + }); + + TeacherModeModel copyWith({ + bool? enabled, + int? activitiesToUnlockTopic, + }) { + return TeacherModeModel( + enabled: enabled ?? this.enabled, + activitiesToUnlockTopic: + activitiesToUnlockTopic ?? this.activitiesToUnlockTopic, + ); + } + + Map toJson() => { + 'enabled': enabled, + 'activities_to_unlock_topic': activitiesToUnlockTopic, + }; + + factory TeacherModeModel.fromJson(Map json) { + return TeacherModeModel( + enabled: json['enabled'] ?? false, + activitiesToUnlockTopic: json['activities_to_unlock_topic'], + ); + } +} From 9ad8266314bc983318ab3c82c6d394f5b71f1066 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Tue, 6 Jan 2026 13:08:33 -0500 Subject: [PATCH 2/3] build: bump version number --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index abecae9b7..64ec21fb8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,7 +6,7 @@ description: Learn a language while texting your friends. # Pangea# publish_to: none # On version bump also increase the build number for F-Droid -version: 4.1.15+12 +version: 4.1.15+13 environment: sdk: ">=3.0.0 <4.0.0" From cdad9bfef81cc4e07bcd009a7da9e818525261ea Mon Sep 17 00:00:00 2001 From: ggurdin Date: Tue, 6 Jan 2026 13:17:32 -0500 Subject: [PATCH 3/3] if user has completed all activities in topic, always unlock next topic --- .../course_activities/activity_summaries_provider.dart | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/pangea/course_plans/course_activities/activity_summaries_provider.dart b/lib/pangea/course_plans/course_activities/activity_summaries_provider.dart index d4788e81e..ccdf37414 100644 --- a/lib/pangea/course_plans/course_activities/activity_summaries_provider.dart +++ b/lib/pangea/course_plans/course_activities/activity_summaries_provider.dart @@ -158,6 +158,10 @@ mixin ActivitySummariesProvider on State { final completedTopicActivities = _completedActivities(userID).intersection(topicActivityIds); + if (completedTopicActivities.length >= topicActivityIds.length) { + return true; + } + if (activitiesToCompleteOverride != null) { return completedTopicActivities.length >= activitiesToCompleteOverride; } @@ -165,6 +169,7 @@ mixin ActivitySummariesProvider on State { final numTwoPersonActivities = topic.loadedActivities.values .where((a) => a.req.numberOfParticipants <= 2) .length; + return completedTopicActivities.length >= numTwoPersonActivities; }