diff --git a/lib/l10n/intl_ar.arb b/lib/l10n/intl_ar.arb index aca18e072..82b4ddbed 100644 --- a/lib/l10n/intl_ar.arb +++ b/lib/l10n/intl_ar.arb @@ -3884,7 +3884,7 @@ "yeCountryDisplayName": "اليمن", "zmCountryDisplayName": "زامبيا", "zwCountryDisplayName": "زيمبابوي", - "pay": "دفع", + "pay": "إنهاء الشراء", "allPrivateChats": "الدردشات المباشرة", "unknownPrivateChat": "دردشة خاصة غير معروفة", "invitedToSpace": "{user} دعاك للانضمام إلى دورة: {space}! هل ترغب في القبول؟", diff --git a/lib/l10n/intl_be.arb b/lib/l10n/intl_be.arb index d6a6ffb65..eecd16d72 100644 --- a/lib/l10n/intl_be.arb +++ b/lib/l10n/intl_be.arb @@ -1401,7 +1401,7 @@ "yeCountryDisplayName": "Ямен", "zmCountryDisplayName": "Замбія", "zwCountryDisplayName": "Зімбабвэ", - "pay": "Аплаціць", + "pay": "Checkout", "allPrivateChats": "Прыватныя чаты", "unknownPrivateChat": "Невядомы прыватны чат", "invitedToSpace": "{user} запрасіў вас далучыцца да курса: {space}! Ці жадаеце прыняць запрашэнне?", diff --git a/lib/l10n/intl_bn.arb b/lib/l10n/intl_bn.arb index 904ffd278..50125932a 100644 --- a/lib/l10n/intl_bn.arb +++ b/lib/l10n/intl_bn.arb @@ -3993,7 +3993,7 @@ "yeCountryDisplayName": "ইয়েমেন", "zmCountryDisplayName": "জাম্বিয়া", "zwCountryDisplayName": "জিম্বাবোয়ে", - "pay": "পরিশোধ করুন", + "pay": "Checkout", "allPrivateChats": "প্রতক্ষ্য চ্যাট", "unknownPrivateChat": "অজানা ব্যক্তিগত চ্যাট", "invitedToSpace": "{user} আপনাকে একটি কোর্সে যোগ দেওয়ার জন্য আমন্ত্রণ জানিয়েছেন: {space}! আপনি কি গ্রহণ করতে চান?", diff --git a/lib/l10n/intl_bo.arb b/lib/l10n/intl_bo.arb index 6e3402847..1ec59c1ee 100644 --- a/lib/l10n/intl_bo.arb +++ b/lib/l10n/intl_bo.arb @@ -3848,7 +3848,7 @@ "yeCountryDisplayName": "Yemen", "zmCountryDisplayName": "زامبیا", "zwCountryDisplayName": "زیمبابوې", - "pay": "پیسہ ادا کریں", + "pay": "Checkout", "allPrivateChats": "مستقیم چیٹ", "unknownPrivateChat": "نامعلوم نجی گفتگو", "invitedToSpace": "{user} تہاڈے نوں اکورس: {space} وچ شامل ہون لئی بلایا اے! کی تسی قبول کرنا چاہو گے؟", diff --git a/lib/l10n/intl_ca.arb b/lib/l10n/intl_ca.arb index 618d3e432..0ea70bc95 100644 --- a/lib/l10n/intl_ca.arb +++ b/lib/l10n/intl_ca.arb @@ -3971,7 +3971,7 @@ "yeCountryDisplayName": "Iemen", "zmCountryDisplayName": "Zàmbia", "zwCountryDisplayName": "Zimbàbue", - "pay": "Paga", + "pay": "Checkout", "allPrivateChats": "Xats privats", "unknownPrivateChat": "Xat privat desconegut", "invitedToSpace": "{user} t'ha convidat a unir-te a un curs: {space}! Desitges acceptar?", diff --git a/lib/l10n/intl_cs.arb b/lib/l10n/intl_cs.arb index 4d7a94838..98c924a2f 100644 --- a/lib/l10n/intl_cs.arb +++ b/lib/l10n/intl_cs.arb @@ -3528,7 +3528,7 @@ "yeCountryDisplayName": "Jemen", "zmCountryDisplayName": "Zambie", "zwCountryDisplayName": "Zimbabwe", - "pay": "Platba", + "pay": "Pokladna", "allPrivateChats": "Přímé chaty", "unknownPrivateChat": "Neznámý soukromý chat", "invitedToSpace": "{user} vás pozval připojit se ke kurzu: {space}! Chcete přijmout?", diff --git a/lib/l10n/intl_da.arb b/lib/l10n/intl_da.arb index 6b10d1547..29f05c397 100644 --- a/lib/l10n/intl_da.arb +++ b/lib/l10n/intl_da.arb @@ -1420,7 +1420,7 @@ "yeCountryDisplayName": "Yemen", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Betal", + "pay": "Til betaling", "allPrivateChats": "Private beskeder", "unknownPrivateChat": "Ukendt privat chat", "invitedToSpace": "{user} har inviteret dig til at deltage i et kursus: {space}! Vil du acceptere?", diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb index 0aab187d1..11b1b6477 100644 --- a/lib/l10n/intl_de.arb +++ b/lib/l10n/intl_de.arb @@ -4006,7 +4006,7 @@ "yeCountryDisplayName": "Jemen", "zmCountryDisplayName": "Sambia", "zwCountryDisplayName": "Simbabwe", - "pay": "Bezahlen", + "pay": "Zur Kasse", "allPrivateChats": "Private Chats", "unknownPrivateChat": "Unbekannter Privatchat", "invitedToSpace": "{user} hat Sie eingeladen, an einem Kurs teilzunehmen: {space}! Möchten Sie annehmen?", diff --git a/lib/l10n/intl_el.arb b/lib/l10n/intl_el.arb index d0e1e926b..b4eeb023d 100644 --- a/lib/l10n/intl_el.arb +++ b/lib/l10n/intl_el.arb @@ -3946,7 +3946,7 @@ "yeCountryDisplayName": "Υεμένη", "zmCountryDisplayName": "Ζάμπια", "zwCountryDisplayName": "Ζιμπάμπουε", - "pay": "Πληρωμή", + "pay": "Checkout", "allPrivateChats": "Άμεσες συνομιλίες", "unknownPrivateChat": "Άγνωστη ιδιωτική συνομιλία", "invitedToSpace": "{user} σας έχει προσκαλέσει να συμμετάσχετε σε ένα μάθημα: {space}! Θέλετε να αποδεχθείτε;", diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 280a64a31..0e9a1ae4d 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -3899,7 +3899,7 @@ "yeCountryDisplayName": "Yemen", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Pay", + "pay": "Checkout", "allPrivateChats": "Direct chats", "unknownPrivateChat": "Unknown private chat", "invitedToSpace": "{user} has invited you to join a course: {space}! Do you wish to accept?", @@ -5316,5 +5316,6 @@ "emojiView": "Emoji view", "feedbackDialogDesc": "I make mistakes too! Anything to help me improve?", "getStartedFriendsButton": "Invite a friend", - "contactHasBeenInvitedToTheCourse": "Contact has been invited to the course" + "contactHasBeenInvitedToTheCourse": "Contact has been invited to the course", + "inviteFriends": "Invite friends" } \ No newline at end of file diff --git a/lib/l10n/intl_eo.arb b/lib/l10n/intl_eo.arb index 6a9f91c72..c83a6cecc 100644 --- a/lib/l10n/intl_eo.arb +++ b/lib/l10n/intl_eo.arb @@ -3125,7 +3125,7 @@ "yeCountryDisplayName": "Jemen", "zmCountryDisplayName": "Zambio", "zwCountryDisplayName": "Zimbabvo", - "pay": "Pagu", + "pay": "Checkout", "allPrivateChats": "Privataj konversacioj", "unknownPrivateChat": "Nekonata privata konversacio", "invitedToSpace": "{user} invitis vin aliĝi al kurso: {space}! Ĉu vi volas akcepti?", diff --git a/lib/l10n/intl_es.arb b/lib/l10n/intl_es.arb index 438cc10a9..acd7cda2e 100644 --- a/lib/l10n/intl_es.arb +++ b/lib/l10n/intl_es.arb @@ -4438,7 +4438,7 @@ "toggleToolSettingsDescription": "Aquí puedes cambiar la configuración individual de la herramienta de idioma. Para los chats dentro de un espacio, la configuración del espacio tendrá prioridad y puede anular esta configuración.", "classRoster": "Participantes", "welcomeBack": "¡Bienvenido de nuevo! Si formó parte del piloto 2023-2024, póngase en contacto con nosotros para obtener su suscripción especial de piloto. Si es usted un profesor que ha adquirido (o cuya institución ha adquirido) licencias para su clase, póngase en contacto con nosotros para obtener su suscripción de profesor.", - "pay": "Pagar", + "pay": "Finalizar compra", "inviteUsersFromPangea": "Añadir profesores", "addToClass": "Añadir intercambio a la clase", "myLearning": "Mis análisis", diff --git a/lib/l10n/intl_et.arb b/lib/l10n/intl_et.arb index b1bfa7136..150bd966f 100644 --- a/lib/l10n/intl_et.arb +++ b/lib/l10n/intl_et.arb @@ -4011,7 +4011,7 @@ "yeCountryDisplayName": "Jeemen", "zmCountryDisplayName": "Sambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Maksa", + "pay": "Checkout", "allPrivateChats": "Otsevestlused", "unknownPrivateChat": "Tundmatu privaatvestlus", "copyClassCodeDesc": "Kasutajad, kes on juba rakenduses, saavad peamenüüst 'Liitu ruumiga'.", diff --git a/lib/l10n/intl_eu.arb b/lib/l10n/intl_eu.arb index 68a3dc7a5..04cdd0224 100644 --- a/lib/l10n/intl_eu.arb +++ b/lib/l10n/intl_eu.arb @@ -3999,7 +3999,7 @@ "yeCountryDisplayName": "Yemen", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Ordaindu", + "pay": "Checkout", "allPrivateChats": "Pribatutasun txat guztiak", "unknownPrivateChat": "Pribatutasun txalungorik eza", "invitedToSpace": "{user}k gonbidatu zaitu ikastaro batean parte hartzera: {space}! Onartu nahi duzu?", diff --git a/lib/l10n/intl_fa.arb b/lib/l10n/intl_fa.arb index cc2777fb4..9329cfdab 100644 --- a/lib/l10n/intl_fa.arb +++ b/lib/l10n/intl_fa.arb @@ -3419,7 +3419,7 @@ "yeCountryDisplayName": "یمن", "zmCountryDisplayName": "زامبیا", "zwCountryDisplayName": "زیمبابوه", - "pay": "پرداخت", + "pay": "Checkout", "allPrivateChats": "گفتگوهای مستقیم", "unknownPrivateChat": "گفتگوی خصوصی ناشناخته", "invitedToSpace": "{user} شما را به یک دوره دعوت کرده است: {space}! آیا مایل به پذیرش هستید؟", diff --git a/lib/l10n/intl_fi.arb b/lib/l10n/intl_fi.arb index 4ba0bd058..e3f264471 100644 --- a/lib/l10n/intl_fi.arb +++ b/lib/l10n/intl_fi.arb @@ -3521,7 +3521,7 @@ "yeCountryDisplayName": "Jemen", "zmCountryDisplayName": "Sambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Maksa", + "pay": "Kassalle", "allPrivateChats": "Yksityiset keskustelut", "unknownPrivateChat": "Tuntematon yksityinen keskustelu", "invitedToSpace": "{user} on kutsunut sinut liittymään kurssille: {space}! Haluatko hyväksyä?", diff --git a/lib/l10n/intl_fil.arb b/lib/l10n/intl_fil.arb index 1ac80c213..9f5155777 100644 --- a/lib/l10n/intl_fil.arb +++ b/lib/l10n/intl_fil.arb @@ -2265,7 +2265,7 @@ "yeCountryDisplayName": "Yemen", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Magbayad", + "pay": "Checkout", "allPrivateChats": "Direktang mga chat", "unknownPrivateChat": "Hindi kilalang pribadong chat", "invitedToSpace": "{user} ay nag-imbita sa iyo na sumali sa isang kurso: {space}! Nais mo bang tanggapin?", diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index 6351aad8c..aae21ed68 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -3829,7 +3829,7 @@ "yeCountryDisplayName": "Yémen", "zmCountryDisplayName": "Zambie", "zwCountryDisplayName": "Zimbabwe", - "pay": "Payer", + "pay": "Finaliser l'achat", "allPrivateChats": "Chats privés directs", "unknownPrivateChat": "Chat privé inconnu", "invitedToSpace": "{user} vous a invité à rejoindre un cours : {space} ! Souhaitez-vous accepter ?", diff --git a/lib/l10n/intl_ga.arb b/lib/l10n/intl_ga.arb index e9e1ee9ac..2916cc68d 100644 --- a/lib/l10n/intl_ga.arb +++ b/lib/l10n/intl_ga.arb @@ -4007,7 +4007,7 @@ "yeCountryDisplayName": "Yemen", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Íoc", + "pay": "Checkout", "allPrivateChats": "Comhráite díreacha", "unknownPrivateChat": "Comhrá príobháideach anaithnid", "invitedToSpace": "{user} thú cuireadh a thabhairt chun páirt a ghlacadh i gcúrsa: {space}! An bhfuil tú ag iarraidh glacadh leis?", diff --git a/lib/l10n/intl_gl.arb b/lib/l10n/intl_gl.arb index ba1dceaaf..5ecdcf26d 100644 --- a/lib/l10n/intl_gl.arb +++ b/lib/l10n/intl_gl.arb @@ -4000,7 +4000,7 @@ "yeCountryDisplayName": "Iemen", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabue", - "pay": "Pagar", + "pay": "Checkout", "allPrivateChats": "Chats directos", "unknownPrivateChat": "Chat privado descoñecido", "invitedToSpace": "{user} invitouno a unirse a un curso: {space}! Queres aceptar?", diff --git a/lib/l10n/intl_he.arb b/lib/l10n/intl_he.arb index 40c14d4c5..962e2a13f 100644 --- a/lib/l10n/intl_he.arb +++ b/lib/l10n/intl_he.arb @@ -2585,7 +2585,7 @@ "yeCountryDisplayName": "תימן", "zmCountryDisplayName": "זמביה", "zwCountryDisplayName": "זימבבואה", - "pay": "שלם", + "pay": "Checkout", "allPrivateChats": "שיחות פרטיות ישירות", "unknownPrivateChat": "שיחה פרטית לא ידועה", "invitedToSpace": "{user} הזמין אותך להצטרף לקורס: {space}! האם ברצונך לקבל?", diff --git a/lib/l10n/intl_hi.arb b/lib/l10n/intl_hi.arb index 1ec370ea9..90de67879 100644 --- a/lib/l10n/intl_hi.arb +++ b/lib/l10n/intl_hi.arb @@ -3973,7 +3973,7 @@ "yeCountryDisplayName": "यमन", "zmCountryDisplayName": "ज़ाम्बिया", "zwCountryDisplayName": "ज़िम्बाब्वे", - "pay": "भुगतान करें", + "pay": "चेकआउट", "allPrivateChats": "प्रत्यक्ष चैट", "unknownPrivateChat": "अज्ञात निजी चैट", "invitedToSpace": "{user} ने आपको एक कोर्स में शामिल होने के लिए आमंत्रित किया है: {space}! क्या आप स्वीकार करना चाहेंगे?", diff --git a/lib/l10n/intl_hr.arb b/lib/l10n/intl_hr.arb index c4f1e9aaf..4cbe03c54 100644 --- a/lib/l10n/intl_hr.arb +++ b/lib/l10n/intl_hr.arb @@ -3755,7 +3755,7 @@ "yeCountryDisplayName": "Jemen", "zmCountryDisplayName": "Zambija", "zwCountryDisplayName": "Zimbabve", - "pay": "Plaćanje", + "pay": "Checkout", "allPrivateChats": "Privatni razgovori", "unknownPrivateChat": "Nepoznati privatni razgovor", "invitedToSpace": "{user} vas je pozvao da se pridružite tečaju: {space}! Želite li prihvatiti?", diff --git a/lib/l10n/intl_hu.arb b/lib/l10n/intl_hu.arb index 36b62f488..5720d3f42 100644 --- a/lib/l10n/intl_hu.arb +++ b/lib/l10n/intl_hu.arb @@ -4000,7 +4000,7 @@ "yeCountryDisplayName": "Jemen", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Fizetés", + "pay": "Checkout", "allPrivateChats": "Közvetlen beszélgetések", "unknownPrivateChat": "Ismeretlen privát beszélgetés", "invitedToSpace": "{user} meghívott, hogy csatlakozzon egy kurzushoz: {space}! Elfogadod?", diff --git a/lib/l10n/intl_ia.arb b/lib/l10n/intl_ia.arb index 98abe4ecb..0ded6d1b7 100644 --- a/lib/l10n/intl_ia.arb +++ b/lib/l10n/intl_ia.arb @@ -1448,7 +1448,7 @@ "yeCountryDisplayName": "Yemen", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Paga", + "pay": "Checkout", "allPrivateChats": "Chats private directe", "unknownPrivateChat": "Chat private ignote", "invitedToSpace": "{user} te ha invitate a junger un curso: {space}! Tu vole acceptar?", diff --git a/lib/l10n/intl_id.arb b/lib/l10n/intl_id.arb index a9bcb9e6e..c80baee5b 100644 --- a/lib/l10n/intl_id.arb +++ b/lib/l10n/intl_id.arb @@ -4001,7 +4001,7 @@ "yeCountryDisplayName": "Yaman", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Bayar", + "pay": "Checkout", "allPrivateChats": "Obrolan Pribadi", "unknownPrivateChat": "Obrolan pribadi tidak diketahui", "invitedToSpace": "{user} telah mengundang Anda untuk bergabung dalam kursus: {space}! Apakah Anda ingin menerima?", diff --git a/lib/l10n/intl_ie.arb b/lib/l10n/intl_ie.arb index 749f24431..4e18c09e9 100644 --- a/lib/l10n/intl_ie.arb +++ b/lib/l10n/intl_ie.arb @@ -3862,7 +3862,7 @@ "yeCountryDisplayName": "Yemen", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zambia", - "pay": "Paga", + "pay": "Checkout", "allPrivateChats": "Chat privet", "unknownPrivateChat": "Chat privet ignot", "invitedToSpace": "{user} ha invitato te a un curso: {space}! Vuoi acceptar?", diff --git a/lib/l10n/intl_it.arb b/lib/l10n/intl_it.arb index a22a33617..788fb200a 100644 --- a/lib/l10n/intl_it.arb +++ b/lib/l10n/intl_it.arb @@ -3978,7 +3978,7 @@ "yeCountryDisplayName": "Yemen", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Paga", + "pay": "Checkout", "allPrivateChats": "Chat diretti", "unknownPrivateChat": "Chat privato sconosciuto", "invitedToSpace": "{user} ti ha invitato a partecipare a un corso: {space}! Vuoi accettare?", diff --git a/lib/l10n/intl_ja.arb b/lib/l10n/intl_ja.arb index 6a5948c8f..71f562005 100644 --- a/lib/l10n/intl_ja.arb +++ b/lib/l10n/intl_ja.arb @@ -3342,7 +3342,7 @@ "yeCountryDisplayName": "イエメン", "zmCountryDisplayName": "ザンビア", "zwCountryDisplayName": "ジンバブエ", - "pay": "支払う", + "pay": "チェックアウト", "allPrivateChats": "ダイレクトチャット", "unknownPrivateChat": "不明なプライベートチャット", "invitedToSpace": "{user}さんがあなたをコース「{space}」に招待しました。参加しますか?", diff --git a/lib/l10n/intl_ka.arb b/lib/l10n/intl_ka.arb index 633668774..8432b7415 100644 --- a/lib/l10n/intl_ka.arb +++ b/lib/l10n/intl_ka.arb @@ -2084,7 +2084,7 @@ "yeCountryDisplayName": "იემენი", "zmCountryDisplayName": "ზამბია", "zwCountryDisplayName": "ზიმბაბვე", - "pay": "გადახდა", + "pay": "Checkout", "allPrivateChats": "მხოლოდ პირადი ჩეთები", "unknownPrivateChat": "უცნობი პირადი ჩათი", "invitedToSpace": "{user} გეპატიჟება გაერთო კურსში: {space}! გსურთ მიიღოთ?", diff --git a/lib/l10n/intl_lt.arb b/lib/l10n/intl_lt.arb index 81f7c0f61..712063ad2 100644 --- a/lib/l10n/intl_lt.arb +++ b/lib/l10n/intl_lt.arb @@ -3351,7 +3351,7 @@ "yeCountryDisplayName": "Jemenas", "zmCountryDisplayName": "Zambija", "zwCountryDisplayName": "Zimbabvė", - "pay": "Mokėti", + "pay": "Checkout", "allPrivateChats": "Tiesioginiai pokalbiai", "unknownPrivateChat": "Nežinomas privatų pokalbis", "invitedToSpace": "{user} pakvietė jus prisijungti prie kurso: {space}! Ar norite priimti?", diff --git a/lib/l10n/intl_lv.arb b/lib/l10n/intl_lv.arb index 9dc34c494..20e84d399 100644 --- a/lib/l10n/intl_lv.arb +++ b/lib/l10n/intl_lv.arb @@ -3987,7 +3987,7 @@ "yeCountryDisplayName": "Jemen", "zmCountryDisplayName": "Zambija", "zwCountryDisplayName": "Zimbabve", - "pay": "Maksāt", + "pay": "Checkout", "allPrivateChats": "Tiešās sarunas", "unknownPrivateChat": "Nezināma privāta saruna", "invitedToSpace": "{user} ir ielūdzis jūs pievienoties kursam: {space}! Vai vēlaties pieņemt?", diff --git a/lib/l10n/intl_nb.arb b/lib/l10n/intl_nb.arb index 5ff8bae87..749fb9506 100644 --- a/lib/l10n/intl_nb.arb +++ b/lib/l10n/intl_nb.arb @@ -2914,7 +2914,7 @@ "yeCountryDisplayName": "Jemen", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Betal", + "pay": "Til betaling", "allPrivateChats": "Direktmeldinger", "unknownPrivateChat": "Ukjent privat samtale", "invitedToSpace": "{user} har invitert deg til å bli med på et kurs: {space}! Vil du akseptere?", diff --git a/lib/l10n/intl_nl.arb b/lib/l10n/intl_nl.arb index 59a9e6752..410603929 100644 --- a/lib/l10n/intl_nl.arb +++ b/lib/l10n/intl_nl.arb @@ -3998,7 +3998,7 @@ "yeCountryDisplayName": "Jemen", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Betalen", + "pay": "Afrekenen", "allPrivateChats": "Directe gesprekken", "unknownPrivateChat": "Onbekend privégesprek", "invitedToSpace": "{user} heeft je uitgenodigd om deel te nemen aan een cursus: {space}! Wil je accepteren?", diff --git a/lib/l10n/intl_pl.arb b/lib/l10n/intl_pl.arb index c6bed1aeb..1fc198eac 100644 --- a/lib/l10n/intl_pl.arb +++ b/lib/l10n/intl_pl.arb @@ -3999,7 +3999,7 @@ "yeCountryDisplayName": "Jemen", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Zapłać", + "pay": "Do kasy", "allPrivateChats": "Czaty prywatne", "unknownPrivateChat": "Nieznany czat prywatny", "invitedToSpace": "{user} zaprosił Cię do dołączenia do kursu: {space}! Czy chcesz przyjąć zaproszenie?", diff --git a/lib/l10n/intl_pt.arb b/lib/l10n/intl_pt.arb index c0afd1356..58341031b 100644 --- a/lib/l10n/intl_pt.arb +++ b/lib/l10n/intl_pt.arb @@ -3989,7 +3989,7 @@ "yeCountryDisplayName": "Iêmen", "zmCountryDisplayName": "Zâmbia", "zwCountryDisplayName": "Zimbábue", - "pay": "Pagar", + "pay": "Finalizar compra", "allPrivateChats": "Conversas privadas", "unknownPrivateChat": "Conversa privada desconhecida", "invitedToSpace": "{user} convidou você para participar de um curso: {space}! Deseja aceitar?", diff --git a/lib/l10n/intl_pt_BR.arb b/lib/l10n/intl_pt_BR.arb index e53eb5275..797a4228a 100644 --- a/lib/l10n/intl_pt_BR.arb +++ b/lib/l10n/intl_pt_BR.arb @@ -3746,7 +3746,7 @@ "yeCountryDisplayName": "Iêmen", "zmCountryDisplayName": "Zâmbia", "zwCountryDisplayName": "Zimbábue", - "pay": "Pagar", + "pay": "Finalizar compra", "allPrivateChats": "Conversas diretas", "unknownPrivateChat": "Conversa privada desconhecida", "invitedToSpace": "{user} convidou você para participar de um curso: {space}! Deseja aceitar?", diff --git a/lib/l10n/intl_pt_PT.arb b/lib/l10n/intl_pt_PT.arb index 528e26d03..4db81dd68 100644 --- a/lib/l10n/intl_pt_PT.arb +++ b/lib/l10n/intl_pt_PT.arb @@ -2809,7 +2809,7 @@ "yeCountryDisplayName": "Iémen", "zmCountryDisplayName": "Zâmbia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Pagar", + "pay": "Finalizar compra", "allPrivateChats": "Conversas privadas", "unknownPrivateChat": "Conversa privada desconhecida", "invitedToSpace": "{user} convidou-o a participar num curso: {space}! Deseja aceitar?", diff --git a/lib/l10n/intl_ro.arb b/lib/l10n/intl_ro.arb index 5c4d00b36..c78fcced1 100644 --- a/lib/l10n/intl_ro.arb +++ b/lib/l10n/intl_ro.arb @@ -3418,7 +3418,7 @@ "yeCountryDisplayName": "Iordania", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Plătește", + "pay": "Checkout", "allPrivateChats": "Chat-uri private", "unknownPrivateChat": "Chat privat necunoscut", "invitedToSpace": "{user} te-a invitat să te alături unui curs: {space}! Vrei să accepți?", diff --git a/lib/l10n/intl_ru.arb b/lib/l10n/intl_ru.arb index 3d2a22cef..21f3bce04 100644 --- a/lib/l10n/intl_ru.arb +++ b/lib/l10n/intl_ru.arb @@ -3937,7 +3937,7 @@ "yeCountryDisplayName": "Йемен", "zmCountryDisplayName": "Замбия", "zwCountryDisplayName": "Зимбабве", - "pay": "Оплатить", + "pay": "Оформить заказ", "allPrivateChats": "Личные сообщения", "unknownPrivateChat": "Неизвестный личный чат", "invitedToSpace": "{user} пригласил вас присоединиться к курсу: {space}! Хотите принять приглашение?", diff --git a/lib/l10n/intl_sk.arb b/lib/l10n/intl_sk.arb index 2a1f444c2..93af57574 100644 --- a/lib/l10n/intl_sk.arb +++ b/lib/l10n/intl_sk.arb @@ -2622,7 +2622,7 @@ "yeCountryDisplayName": "Jemen", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Platiť", + "pay": "Checkout", "allPrivateChats": "Priame správy", "unknownPrivateChat": "Neznáma súkromná správa", "invitedToSpace": "{user} vás pozval na kurz: {space}! Chcete prijať?", diff --git a/lib/l10n/intl_sl.arb b/lib/l10n/intl_sl.arb index 1dcd82dd6..8a18b4c7f 100644 --- a/lib/l10n/intl_sl.arb +++ b/lib/l10n/intl_sl.arb @@ -1954,7 +1954,7 @@ "yeCountryDisplayName": "Jemen", "zmCountryDisplayName": "Zambija", "zwCountryDisplayName": "Zimbabve", - "pay": "Plačaj", + "pay": "Checkout", "allPrivateChats": "Neposredni pogovori", "unknownPrivateChat": "Neznan zasebni klepet", "invitedToSpace": "{user} vas je povabil, da se pridružite tečaju: {space}! Ali želite sprejeti?", diff --git a/lib/l10n/intl_sr.arb b/lib/l10n/intl_sr.arb index f8dbdff89..4d198225c 100644 --- a/lib/l10n/intl_sr.arb +++ b/lib/l10n/intl_sr.arb @@ -3035,7 +3035,7 @@ "yeCountryDisplayName": "Jemen", "zmCountryDisplayName": "Zambija", "zwCountryDisplayName": "Zimbabve", - "pay": "Plati", + "pay": "Checkout", "allPrivateChats": "Direktni razgovori", "unknownPrivateChat": "Nepoznati privatni razgovor", "invitedToSpace": "{user} vas je pozvao da se pridružite kursu: {space}! Da li želite da prihvatite?", diff --git a/lib/l10n/intl_sv.arb b/lib/l10n/intl_sv.arb index f2b35b4a5..2bfe0c47e 100644 --- a/lib/l10n/intl_sv.arb +++ b/lib/l10n/intl_sv.arb @@ -3660,7 +3660,7 @@ "yeCountryDisplayName": "Jemen", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Betala", + "pay": "Till kassan", "allPrivateChats": "Privata chattar", "unknownPrivateChat": "Okänd privat chatt", "invitedToSpace": "{user} har bjudit in dig att delta i en kurs: {space}! Vill du acceptera?", diff --git a/lib/l10n/intl_ta.arb b/lib/l10n/intl_ta.arb index 00d977348..0c3e53813 100644 --- a/lib/l10n/intl_ta.arb +++ b/lib/l10n/intl_ta.arb @@ -3875,7 +3875,7 @@ "yeCountryDisplayName": "யேமன்", "zmCountryDisplayName": "சம்பியா", "zwCountryDisplayName": "சிம்பாப்வே", - "pay": "பணம் செலுத்தவும்", + "pay": "Checkout", "allPrivateChats": "நேரடி உரைகள்", "unknownPrivateChat": "அறியப்படாத தனிப்பட்ட உரை", "invitedToSpace": "{user} உங்களை ஒரு பாடத்திற்குக் கூப்பிடினார்: {space}! நீங்கள் ஏற்க விரும்புகிறீர்களா?", diff --git a/lib/l10n/intl_te.arb b/lib/l10n/intl_te.arb index f32c4a58c..b1ac7eb93 100644 --- a/lib/l10n/intl_te.arb +++ b/lib/l10n/intl_te.arb @@ -1410,7 +1410,7 @@ "yeCountryDisplayName": "యెమెన్", "zmCountryDisplayName": "జాంబియా", "zwCountryDisplayName": "జింబాబ్వే", - "pay": "చెల్లించండి", + "pay": "Checkout", "allPrivateChats": "నేరుగా చాట్లు", "unknownPrivateChat": "అజ్ఞాత ప్రైవేట్ చాట్", "invitedToSpace": "{user} మీరు కోర్సులో చేరేందుకు ఆహ్వానించారు: {space}! మీరు అంగీకరించాలనుకుంటున్నారా?", diff --git a/lib/l10n/intl_th.arb b/lib/l10n/intl_th.arb index 8c71efb26..e69ebf2a7 100644 --- a/lib/l10n/intl_th.arb +++ b/lib/l10n/intl_th.arb @@ -3946,7 +3946,7 @@ "yeCountryDisplayName": "เยเมน", "zmCountryDisplayName": "แซมเบีย", "zwCountryDisplayName": "ซิมบับเว", - "pay": "ชำระเงิน", + "pay": "Checkout", "allPrivateChats": "แชทส่วนตัวทั้งหมด", "unknownPrivateChat": "แชทส่วนตัวที่ไม่รู้จัก", "invitedToSpace": "{user} ได้เชิญคุณเข้าร่วมคอร์ส: {space}! คุณต้องการยอมรับไหม?", diff --git a/lib/l10n/intl_tr.arb b/lib/l10n/intl_tr.arb index 387f4bc9c..6c69ff5e2 100644 --- a/lib/l10n/intl_tr.arb +++ b/lib/l10n/intl_tr.arb @@ -3882,7 +3882,7 @@ "yeCountryDisplayName": "Yemen", "zmCountryDisplayName": "Zambiya", "zwCountryDisplayName": "Zimbabve", - "pay": "Öde", + "pay": "Ödeme", "allPrivateChats": "Özel mesajlar", "unknownPrivateChat": "Bilinmeyen özel sohbet", "invitedToSpace": "{user} sizi {space} adlı kursa katılmaya davet etti! Kabul etmek istiyor musunuz?", diff --git a/lib/l10n/intl_uk.arb b/lib/l10n/intl_uk.arb index c8aa8df5b..50460b9ef 100644 --- a/lib/l10n/intl_uk.arb +++ b/lib/l10n/intl_uk.arb @@ -4001,7 +4001,7 @@ "yeCountryDisplayName": "Ємен", "zmCountryDisplayName": "Замбія", "zwCountryDisplayName": "Зімбабве", - "pay": "Оплатити", + "pay": "Оформити замовлення", "allPrivateChats": "Прямі чати", "unknownPrivateChat": "Невідомий приватний чат", "invitedToSpace": "{user} запросив вас приєднатися до курсу: {space}! Бажаєте прийняти?", diff --git a/lib/l10n/intl_vi.arb b/lib/l10n/intl_vi.arb index 9174bacfe..d57ac85b4 100644 --- a/lib/l10n/intl_vi.arb +++ b/lib/l10n/intl_vi.arb @@ -2416,7 +2416,7 @@ "yeCountryDisplayName": "Yemen", "zmCountryDisplayName": "Zambia", "zwCountryDisplayName": "Zimbabwe", - "pay": "Thanh toán", + "pay": "Checkout", "allPrivateChats": "Trò chuyện riêng", "unknownPrivateChat": "Cuộc trò chuyện riêng chưa xác định", "declinedInvitation": "Đã từ chối lời mời", diff --git a/lib/l10n/intl_yue.arb b/lib/l10n/intl_yue.arb index 595ddb5c0..5cbb1301d 100644 --- a/lib/l10n/intl_yue.arb +++ b/lib/l10n/intl_yue.arb @@ -1333,7 +1333,7 @@ "yeCountryDisplayName": "也門", "zmCountryDisplayName": "尚比亞", "zwCountryDisplayName": "津巴布韋", - "pay": "付款", + "pay": "Checkout", "allPrivateChats": "私密對話", "unknownPrivateChat": "未知私密對話", "invitedToSpace": "{user} 已邀請你加入課程:{space}!你想接受嗎?", diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb index eef1bd49d..ac2ae6acd 100644 --- a/lib/l10n/intl_zh.arb +++ b/lib/l10n/intl_zh.arb @@ -4002,7 +4002,7 @@ "yeCountryDisplayName": "也门", "zmCountryDisplayName": "赞比亚", "zwCountryDisplayName": "津巴布韦", - "pay": "支付", + "pay": "结账", "allPrivateChats": "私聊", "unknownPrivateChat": "未知私聊", "invitedToSpace": "{user} 邀请你加入课程:{space}!你是否愿意接受?", diff --git a/lib/l10n/intl_zh_Hant.arb b/lib/l10n/intl_zh_Hant.arb index 3776fc06f..ace19c0ef 100644 --- a/lib/l10n/intl_zh_Hant.arb +++ b/lib/l10n/intl_zh_Hant.arb @@ -3978,7 +3978,7 @@ "yeCountryDisplayName": "也门", "zmCountryDisplayName": "赞比亚", "zwCountryDisplayName": "津巴布韦", - "pay": "支付", + "pay": "結帳", "allPrivateChats": "私密聊天", "unknownPrivateChat": "未知私密聊天", "invitedToSpace": "{user} 邀请你加入课程:{space}!你想接受吗?", diff --git a/lib/pangea/activity_sessions/activity_roles_model.dart b/lib/pangea/activity_sessions/activity_roles_model.dart index a2942e751..ff8b392ae 100644 --- a/lib/pangea/activity_sessions/activity_roles_model.dart +++ b/lib/pangea/activity_sessions/activity_roles_model.dart @@ -38,11 +38,11 @@ class ActivityRolesModel { } static ActivityRolesModel fromJson(Map json) { - final roles = (json['roles'] as Map) - .map((id, value) => MapEntry(id, ActivityRoleModel.fromJson(value))); + final roles = (json['roles'] as Map?) + ?.map((id, value) => MapEntry(id, ActivityRoleModel.fromJson(value))); return ActivityRolesModel( - roles, + roles ?? {}, ); } } diff --git a/lib/pangea/activity_sessions/activity_session_chat/activity_finished_status_message.dart b/lib/pangea/activity_sessions/activity_session_chat/activity_finished_status_message.dart index ee98276fd..ec2de0dbd 100644 --- a/lib/pangea/activity_sessions/activity_session_chat/activity_finished_status_message.dart +++ b/lib/pangea/activity_sessions/activity_session_chat/activity_finished_status_message.dart @@ -77,48 +77,51 @@ class ActivityFinishedStatusMessage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: controller.room.isActivityFinished ? [ - if (summary?.isLoading ?? false) ...[ - Text( - L10n.of(context).generatingSummary, - style: const TextStyle( - fontStyle: FontStyle.italic, + if (summary?.summary == null) ...[ + if (summary?.isLoading ?? false) ...[ + Text( + L10n.of(context).generatingSummary, + style: const TextStyle( + fontStyle: FontStyle.italic, + ), ), - ), - const SizedBox( - height: 36.0, - width: 36.0, - child: CircularProgressIndicator(), - ), - ] else if (isSubscribed == false) - ErrorIndicator( - message: L10n.of(context) - .subscribeToUnlockActivitySummaries, - onTap: () { - MatrixState.pangeaController.subscriptionController - .showPaywall(context); - }, - ) - else if (summary?.hasError ?? false) ...[ - Row( - mainAxisSize: MainAxisSize.min, - children: [ - const Icon( - Icons.school_outlined, - size: 24.0, - ), - const SizedBox(width: 8), - Flexible( - child: Text( - L10n.of(context).activitySummaryError, - textAlign: TextAlign.center, + const SizedBox( + height: 36.0, + width: 36.0, + child: CircularProgressIndicator(), + ), + ] else if (isSubscribed == false) + ErrorIndicator( + message: L10n.of(context) + .subscribeToUnlockActivitySummaries, + onTap: () { + MatrixState + .pangeaController.subscriptionController + .showPaywall(context); + }, + ) + else if (summary?.hasError ?? false) ...[ + Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon( + Icons.school_outlined, + size: 24.0, ), - ), - ], - ), - TextButton( - onPressed: () => controller.room.fetchSummaries(), - child: Text(L10n.of(context).requestSummaries), - ), + const SizedBox(width: 8), + Flexible( + child: Text( + L10n.of(context).activitySummaryError, + textAlign: TextAlign.center, + ), + ), + ], + ), + TextButton( + onPressed: () => controller.room.fetchSummaries(), + child: Text(L10n.of(context).requestSummaries), + ), + ], ], if (!controller.room.hasArchivedActivity) ...[ Text( diff --git a/lib/pangea/activity_sessions/activity_session_start/activity_sessions_start_view.dart b/lib/pangea/activity_sessions/activity_session_start/activity_sessions_start_view.dart index bd3c55062..99700d64d 100644 --- a/lib/pangea/activity_sessions/activity_session_start/activity_sessions_start_view.dart +++ b/lib/pangea/activity_sessions/activity_session_start/activity_sessions_start_view.dart @@ -254,12 +254,8 @@ class ActivitySessionStartView extends StatelessWidget { MainAxisAlignment.center, children: [ Text( - controller.courseParent != - null - ? L10n.of(context) - .inviteFriendsToActivityCourse - : L10n.of(context) - .inviteFriendsToActivity, + L10n.of(context) + .inviteFriends, ), ], ), diff --git a/lib/pangea/activity_sessions/activity_summary_widget.dart b/lib/pangea/activity_sessions/activity_summary_widget.dart index dfea580f2..716586540 100644 --- a/lib/pangea/activity_sessions/activity_summary_widget.dart +++ b/lib/pangea/activity_sessions/activity_summary_widget.dart @@ -88,169 +88,176 @@ class ActivitySummary extends StatelessWidget { isSelected: isParticipantSelected, getOpacity: getParticipantOpacity, ), - Padding( - padding: const EdgeInsets.symmetric( - horizontal: 8.0, + DecoratedBox( + decoration: BoxDecoration( + color: theme.colorScheme.surface.withAlpha(220), + borderRadius: BorderRadius.circular(12.0), ), - child: Column( - spacing: 4.0, - mainAxisSize: MainAxisSize.min, - children: [ - InkWell( - onTap: toggleInstructions, - child: Column( - spacing: 4.0, - children: [ - Text( - activity.description, - style: theme.textTheme.bodyMedium, - ), - Padding( - padding: const EdgeInsets.symmetric( - vertical: 4.0, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8.0, + ), + child: Column( + spacing: 4.0, + mainAxisSize: MainAxisSize.min, + children: [ + InkWell( + hoverColor: theme.colorScheme.surfaceTint.withAlpha(200), + onTap: toggleInstructions, + child: Column( + spacing: 4.0, + children: [ + Text( + activity.description, + style: theme.textTheme.bodyMedium, ), - child: Row( + Padding( + padding: const EdgeInsets.symmetric( + vertical: 4.0, + ), + child: Row( + spacing: 4.0, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + L10n.of(context).details, + style: theme.textTheme.bodyMedium, + ), + Icon( + showInstructions + ? Icons.arrow_drop_up + : Icons.arrow_drop_down, + size: 22.0, + ), + ], + ), + ), + ], + ), + ), + if (showInstructions) ...[ + Row( + spacing: 8.0, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + activity.req.mode, + style: theme.textTheme.bodyMedium, + ), + Row( spacing: 4.0, mainAxisSize: MainAxisSize.min, children: [ + const Icon(Icons.school, size: 12.0), Text( - L10n.of(context).details, + activity.req.cefrLevel.string, style: theme.textTheme.bodyMedium, ), - Icon( - showInstructions - ? Icons.arrow_drop_up - : Icons.arrow_drop_down, - size: 20.0, - ), ], ), - ), - ], - ), - ), - if (showInstructions) ...[ - Row( - spacing: 8.0, - mainAxisSize: MainAxisSize.min, - children: [ - Text( - activity.req.mode, + ], + ), + ActivitySessionDetailsRow( + icon: Symbols.target, + iconSize: 16.0, + child: Text( + activity.learningObjective, style: theme.textTheme.bodyMedium, ), - Row( - spacing: 4.0, - mainAxisSize: MainAxisSize.min, - children: [ - const Icon(Icons.school, size: 12.0), - Text( - activity.req.cefrLevel.string, - style: theme.textTheme.bodyMedium, + ), + ActivitySessionDetailsRow( + icon: Symbols.steps, + iconSize: 16.0, + child: Html( + data: markdown(activity.instructions), + style: { + "body": Style( + margin: Margins.all(0), + padding: HtmlPaddings.all(0), + fontSize: FontSize( + theme.textTheme.bodyMedium!.fontSize!, + ), ), - ], + }, ), - ], - ), - ActivitySessionDetailsRow( - icon: Symbols.target, - iconSize: 16.0, - child: Text( - activity.learningObjective, - style: theme.textTheme.bodyMedium, ), - ), - ActivitySessionDetailsRow( - icon: Symbols.steps, - iconSize: 16.0, - child: Html( - data: markdown(activity.instructions), - style: { - "body": Style( - margin: Margins.all(0), - padding: HtmlPaddings.all(0), - fontSize: FontSize( - theme.textTheme.bodyMedium!.fontSize!, - ), - ), - }, - ), - ), - ActivitySessionDetailsRow( - icon: Symbols.dictionary, - iconSize: 16.0, - child: Wrap( - spacing: 4.0, - runSpacing: 4.0, - children: activity.vocab.map((vocab) { - return CompositedTransformTarget( - link: MatrixState.pAnyState - .layerLinkAndKey( - "activity-summary-vocab-${vocab.lemma}", - ) - .link, - child: InkWell( - key: MatrixState.pAnyState + ActivitySessionDetailsRow( + icon: Symbols.dictionary, + iconSize: 16.0, + child: Wrap( + spacing: 4.0, + runSpacing: 4.0, + children: activity.vocab.map((vocab) { + return CompositedTransformTarget( + link: MatrixState.pAnyState .layerLinkAndKey( "activity-summary-vocab-${vocab.lemma}", ) - .key, - borderRadius: BorderRadius.circular( - 24.0, - ), - onTap: () { - OverlayUtil.showPositionedCard( - overlayKey: + .link, + child: InkWell( + key: MatrixState.pAnyState + .layerLinkAndKey( "activity-summary-vocab-${vocab.lemma}", - context: context, - cardToShow: WordZoomWidget( - token: PangeaTokenText( - content: vocab.lemma, - length: vocab.lemma.characters.length, - offset: 0, - ), - construct: ConstructIdentifier( - lemma: vocab.lemma, - type: ConstructTypeEnum.vocab, - category: vocab.pos, - ), - langCode: activity.req.targetLanguage, - onClose: () { - MatrixState.pAnyState.closeOverlay( + ) + .key, + borderRadius: BorderRadius.circular( + 24.0, + ), + onTap: () { + OverlayUtil.showPositionedCard( + overlayKey: "activity-summary-vocab-${vocab.lemma}", - ); - }, + context: context, + cardToShow: WordZoomWidget( + token: PangeaTokenText( + content: vocab.lemma, + length: vocab.lemma.characters.length, + offset: 0, + ), + construct: ConstructIdentifier( + lemma: vocab.lemma, + type: ConstructTypeEnum.vocab, + category: vocab.pos, + ), + langCode: activity.req.targetLanguage, + onClose: () { + MatrixState.pAnyState.closeOverlay( + "activity-summary-vocab-${vocab.lemma}", + ); + }, + ), + transformTargetId: + "activity-summary-vocab-${vocab.lemma}", + closePrevOverlay: false, + addBorder: false, + maxWidth: AppConfig.toolbarMinWidth, + maxHeight: AppConfig.toolbarMaxHeight, + ); + }, + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 8.0, + vertical: 4.0, ), - transformTargetId: - "activity-summary-vocab-${vocab.lemma}", - closePrevOverlay: false, - addBorder: false, - maxWidth: AppConfig.toolbarMinWidth, - maxHeight: AppConfig.toolbarMaxHeight, - ); - }, - child: Container( - padding: const EdgeInsets.symmetric( - horizontal: 8.0, - vertical: 4.0, - ), - decoration: BoxDecoration( - color: theme.colorScheme.primary.withAlpha( - 20, + decoration: BoxDecoration( + color: theme.colorScheme.primary.withAlpha( + 20, + ), + borderRadius: BorderRadius.circular(20), + ), + child: Text( + vocab.lemma, + style: theme.textTheme.bodyMedium, ), - borderRadius: BorderRadius.circular(20), - ), - child: Text( - vocab.lemma, - style: theme.textTheme.bodyMedium, ), ), - ), - ); - }).toList(), + ); + }).toList(), + ), ), - ), + ], ], - ], + ), ), ), ], diff --git a/lib/pangea/course_settings/course_settings.dart b/lib/pangea/course_settings/course_settings.dart index 295360fe0..c85acba8d 100644 --- a/lib/pangea/course_settings/course_settings.dart +++ b/lib/pangea/course_settings/course_settings.dart @@ -122,146 +122,151 @@ class CourseSettings extends StatelessWidget { return Column( spacing: isColumnMode ? 40.0 : 36.0, mainAxisSize: MainAxisSize.min, - children: controller.course!.topicIds.mapIndexed((index, topicId) { - final topic = controller.course!.loadedTopics[topicId]; - if (topic == null) { - return const SizedBox(); - } + children: [ + ...controller.course!.topicIds.mapIndexed((index, topicId) { + final topic = controller.course!.loadedTopics[topicId]; + if (topic == null) { + return const SizedBox(); + } - final usersInTopic = userTopics[topicId] ?? []; - final activityError = controller.activityErrors[topicId]; + final usersInTopic = userTopics[topicId] ?? []; + final activityError = controller.activityErrors[topicId]; - final bool locked = topicIndex == null ? false : index > topicIndex; - final disabled = - locked || controller.loadingActivities || activityError != null; - return AbsorbPointer( - absorbing: disabled, - child: Opacity( - opacity: disabled ? 0.5 : 1.0, - child: Column( - spacing: 12.0, - mainAxisSize: MainAxisSize.min, - children: [ - LayoutBuilder( - builder: (context, constraints) { - return Row( - spacing: 8.0, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Flexible( - child: Row( - spacing: 4.0, - mainAxisSize: MainAxisSize.min, - children: [ - Stack( - children: [ - ClipPath( - clipper: PinClipper(), - child: ImageByUrl( - imageUrl: topic.imageUrl, - width: 54.0, - replacement: Container( + final bool locked = topicIndex == null ? false : index > topicIndex; + final disabled = + locked || controller.loadingActivities || activityError != null; + return AbsorbPointer( + absorbing: disabled, + child: Opacity( + opacity: disabled ? 0.5 : 1.0, + child: Column( + spacing: 12.0, + mainAxisSize: MainAxisSize.min, + children: [ + LayoutBuilder( + builder: (context, constraints) { + return Row( + spacing: 8.0, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Flexible( + child: Row( + spacing: 4.0, + mainAxisSize: MainAxisSize.min, + children: [ + Stack( + children: [ + ClipPath( + clipper: PinClipper(), + child: ImageByUrl( + imageUrl: topic.imageUrl, + width: 54.0, + replacement: Container( + width: 54.0, + height: 54.0, + decoration: BoxDecoration( + color: theme.colorScheme.secondary, + ), + ), + ), + ), + if (locked) + const Positioned( + bottom: 0, + right: 0, + child: Icon(Icons.lock, size: 24.0), + ) + else if (controller.loadingActivities) + const SizedBox( width: 54.0, height: 54.0, - decoration: BoxDecoration( - color: theme.colorScheme.secondary, - ), - ), - ), - ), - if (locked) - const Positioned( - bottom: 0, - right: 0, - child: Icon(Icons.lock, size: 24.0), - ) - else if (controller.loadingActivities) - const SizedBox( - width: 54.0, - height: 54.0, - child: - CircularProgressIndicator.adaptive(), - ), - ], - ), - Flexible( - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - topic.title, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle( - fontSize: titleFontSize, - ), - ), - if (topic.location != null) - CourseInfoChip( - icon: Icons.location_on, - text: topic.location!, - fontSize: descFontSize, - iconSize: iconSize, - ), - if (constraints.maxWidth < 700.0) - Padding( - padding: - const EdgeInsetsGeometry.symmetric( - vertical: 4.0, - ), - child: TopicParticipantList( - room: room, - users: usersInTopic, - avatarSize: - isColumnMode ? 50.0 : 25.0, - overlap: isColumnMode ? 20.0 : 8.0, - ), + child: CircularProgressIndicator + .adaptive(), ), ], ), - ), - ], - ), - ), - if (constraints.maxWidth >= 700.0) - TopicParticipantList( - room: room, - users: usersInTopic, - avatarSize: isColumnMode ? 50.0 : 25.0, - overlap: isColumnMode ? 20.0 : 8.0, - ), - ], - ); - }, - ), - if (!locked) - controller.loadingActivities - ? ActivityCardPlaceholder( - activityCount: topic.activityIds.length, - ) - : activityError != null - ? ErrorIndicator( - message: L10n.of(context).oopsSomethingWentWrong, - ) - : topic.loadedActivities.isNotEmpty - ? SizedBox( - height: isColumnMode ? 290.0 : 210.0, - child: TopicActivitiesList( - room: room, - activities: topic.loadedActivities, - loading: controller.loadingCourseSummary, - hasCompletedActivity: - controller.hasCompletedActivity, + Flexible( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Text( + topic.title, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: titleFontSize, + ), + ), + if (topic.location != null) + CourseInfoChip( + icon: Icons.location_on, + text: topic.location!, + fontSize: descFontSize, + iconSize: iconSize, + ), + if (constraints.maxWidth < 700.0) + Padding( + padding: const EdgeInsetsGeometry + .symmetric( + vertical: 4.0, + ), + child: TopicParticipantList( + room: room, + users: usersInTopic, + avatarSize: + isColumnMode ? 50.0 : 25.0, + overlap: isColumnMode ? 20.0 : 8.0, + ), + ), + ], ), - ) - : const SizedBox(), - ], + ), + ], + ), + ), + if (constraints.maxWidth >= 700.0) + TopicParticipantList( + room: room, + users: usersInTopic, + avatarSize: isColumnMode ? 50.0 : 25.0, + overlap: isColumnMode ? 20.0 : 8.0, + ), + ], + ); + }, + ), + if (!locked) + controller.loadingActivities + ? ActivityCardPlaceholder( + activityCount: topic.activityIds.length, + ) + : activityError != null + ? ErrorIndicator( + message: + L10n.of(context).oopsSomethingWentWrong, + ) + : topic.loadedActivities.isNotEmpty + ? SizedBox( + height: isColumnMode ? 290.0 : 210.0, + child: TopicActivitiesList( + room: room, + activities: topic.loadedActivities, + loading: controller.loadingCourseSummary, + hasCompletedActivity: + controller.hasCompletedActivity, + ), + ) + : const SizedBox(), + ], + ), ), - ), - ); - }).toList(), + ); + }), + const SizedBox(height: 16.0), + ], ); } } diff --git a/lib/pangea/events/event_wrappers/pangea_message_event.dart b/lib/pangea/events/event_wrappers/pangea_message_event.dart index 4f7e943e9..0781a0c07 100644 --- a/lib/pangea/events/event_wrappers/pangea_message_event.dart +++ b/lib/pangea/events/event_wrappers/pangea_message_event.dart @@ -237,9 +237,21 @@ class PangeaMessageEvent { event.content.tryGetMap(ModelKey.botTranscription); if (rawBotTranscription != null) { - return SpeechToTextModel.fromJson( - Map.from(rawBotTranscription), - ); + try { + return SpeechToTextModel.fromJson( + Map.from(rawBotTranscription), + ); + } catch (err, s) { + ErrorHandler.logError( + e: err, + s: s, + data: { + "event": _event.toJson(), + }, + m: "error parsing botTranscription", + ); + return null; + } } return representations @@ -272,9 +284,22 @@ class PangeaMessageEvent { final rawBotTranscription = event.content.tryGetMap(ModelKey.botTranscription); if (rawBotTranscription != null) { - final botTranscription = SpeechToTextModel.fromJson( - Map.from(rawBotTranscription), - ); + SpeechToTextModel botTranscription; + try { + botTranscription = SpeechToTextModel.fromJson( + Map.from(rawBotTranscription), + ); + } catch (err, s) { + ErrorHandler.logError( + e: err, + s: s, + data: { + "event": _event.toJson(), + }, + m: "error parsing botTranscription", + ); + return null; + } _representations ??= []; _representations!.add( diff --git a/lib/pangea/lemmas/lemma_emoji_picker.dart b/lib/pangea/lemmas/lemma_emoji_picker.dart index d3c20b2fa..c99a79214 100644 --- a/lib/pangea/lemmas/lemma_emoji_picker.dart +++ b/lib/pangea/lemmas/lemma_emoji_picker.dart @@ -4,7 +4,7 @@ import 'package:fluffychat/pangea/toolbar/reading_assistance_input_row/lemma_emo class LemmaEmojiPicker extends StatelessWidget { final List emojis; - final Function(String) onSelect; + final Function(String)? onSelect; final bool loading; final Function(String)? disabled; @@ -36,7 +36,9 @@ class LemmaEmojiPicker extends StatelessWidget { opacity: isDisabled ? 0.33 : 1, child: LemmaEmojiChoiceItem( content: emoji, - onTap: isDisabled ? null : () => onSelect(emoji), + onTap: isDisabled || onSelect == null + ? null + : () => onSelect!(emoji), ), ); }).toList(), diff --git a/lib/pangea/lemmas/lemma_reaction_picker.dart b/lib/pangea/lemmas/lemma_reaction_picker.dart index 6f3e2ab92..1d70bc72c 100644 --- a/lib/pangea/lemmas/lemma_reaction_picker.dart +++ b/lib/pangea/lemmas/lemma_reaction_picker.dart @@ -75,7 +75,9 @@ class LemmaReactionPicker extends StatelessWidget { return LemmaEmojiPicker( emojis: emojis, - onSelect: (emoji) => setEmoji(emoji, context), + onSelect: event?.room.timeline != null + ? (emoji) => setEmoji(emoji, context) + : null, disabled: (emoji) => sentReactions.contains(emoji), loading: loading, ); diff --git a/lib/pangea/login/pages/new_course_page.dart b/lib/pangea/login/pages/new_course_page.dart index 29994c8ca..01a3bff97 100644 --- a/lib/pangea/login/pages/new_course_page.dart +++ b/lib/pangea/login/pages/new_course_page.dart @@ -99,7 +99,7 @@ class NewCoursePageState extends State { final existingRoom = Matrix.of(context).client.getRoomByCourseId(course.uuid); - if (existingRoom == null) { + if (existingRoom == null || widget.spaceId != null) { context.go( widget.spaceId != null ? '/rooms/spaces/${widget.spaceId}/addcourse/${course.uuid}' diff --git a/lib/pangea/login/pages/public_courses_page.dart b/lib/pangea/login/pages/public_courses_page.dart index a17d92804..710d300f5 100644 --- a/lib/pangea/login/pages/public_courses_page.dart +++ b/lib/pangea/login/pages/public_courses_page.dart @@ -67,7 +67,8 @@ class PublicCoursesPageState extends State { r.id == c.room.roomId && r.membership == Membership.join, ) && - coursePlans.containsKey(c.courseId), + coursePlans.containsKey(c.courseId) && + c.room.joinRule == 'public', ) .toList(); diff --git a/lib/pangea/toolbar/models/speech_to_text_models.dart b/lib/pangea/toolbar/models/speech_to_text_models.dart index 4b00929a0..ffb2a7088 100644 --- a/lib/pangea/toolbar/models/speech_to_text_models.dart +++ b/lib/pangea/toolbar/models/speech_to_text_models.dart @@ -222,12 +222,17 @@ class SpeechToTextModel { String get langCode => results.first.transcripts.first.langCode; - factory SpeechToTextModel.fromJson(Map json) => - SpeechToTextModel( - results: (json['results'] as List) - .map((e) => SpeechToTextResult.fromJson(e)) - .toList(), - ); + factory SpeechToTextModel.fromJson(Map json) { + final results = json['results'] as List; + if (results.isEmpty) { + throw Exception('SpeechToTextModel.fromJson: results is empty'); + } + return SpeechToTextModel( + results: (json['results'] as List) + .map((e) => SpeechToTextResult.fromJson(e)) + .toList(), + ); + } Map toJson() => { "results": results.map((e) => e.toJson()).toList(), diff --git a/lib/pangea/toolbar/widgets/select_mode_buttons.dart b/lib/pangea/toolbar/widgets/select_mode_buttons.dart index ac235bd9d..85cdba00c 100644 --- a/lib/pangea/toolbar/widgets/select_mode_buttons.dart +++ b/lib/pangea/toolbar/widgets/select_mode_buttons.dart @@ -432,13 +432,14 @@ class SelectModeButtonsState extends State { widget.overlayController.setTranscription(resp!); _transcriptionCompleter?.complete(resp.transcript.text); - } catch (err) { + } catch (err, s) { widget.overlayController.setTranscriptionError( err.toString(), ); _transcriptionCompleter?.completeError(err); ErrorHandler.logError( e: err, + s: s, data: {}, ); } diff --git a/lib/widgets/matrix.dart b/lib/widgets/matrix.dart index 4a1512833..678ee8991 100644 --- a/lib/widgets/matrix.dart +++ b/lib/widgets/matrix.dart @@ -385,14 +385,14 @@ class MatrixState extends State with WidgetsBindingObserver { } } else { // #Pangea - final isL2Set = await pangeaController.userController.isUserL2Set; - FluffyChatApp.router.go( - state == LoginState.loggedIn - ? isL2Set - ? '/rooms' - : '/registration/create' - : '/home', - ); + if (state == LoginState.loggedIn) { + final isL2Set = await pangeaController.userController.isUserL2Set; + FluffyChatApp.router.go( + isL2Set ? '/rooms' : '/registration/create', + ); + } else { + FluffyChatApp.router.go('/home'); + } // FluffyChatApp.router // .go(state == LoginState.loggedIn ? '/rooms' : '/home'); // Pangea#