From be1c78c2fab5cb1ab579577df84623533efc3701 Mon Sep 17 00:00:00 2001 From: sws2apps-admin Date: Sat, 9 Nov 2024 23:45:24 +0300 Subject: [PATCH 01/27] feat(localize): updated translation from Crowdin (#2899) --- src/locales/ceb-PH/dashboard.json | 4 +++- src/locales/ceb-PH/onboarding.json | 2 +- src/locales/ch-CHS/dashboard.json | 4 +++- src/locales/ch-CHS/onboarding.json | 2 +- src/locales/de-DE/dashboard.json | 4 +++- src/locales/de-DE/onboarding.json | 2 +- src/locales/en/dashboard.json | 2 +- src/locales/es-ES/dashboard.json | 4 +++- src/locales/es-ES/onboarding.json | 2 +- src/locales/es-SSP/dashboard.json | 4 +++- src/locales/es-SSP/onboarding.json | 2 +- src/locales/fi-FI/dashboard.json | 4 +++- src/locales/fi-FI/onboarding.json | 2 +- src/locales/fr-FR/dashboard.json | 4 +++- src/locales/fr-FR/onboarding.json | 2 +- src/locales/hu-HU/dashboard.json | 4 +++- src/locales/hu-HU/onboarding.json | 2 +- src/locales/hy-AM/dashboard.json | 4 +++- src/locales/hy-AM/onboarding.json | 2 +- src/locales/it-IT/dashboard.json | 4 +++- src/locales/it-IT/onboarding.json | 2 +- src/locales/ja-JP/dashboard.json | 4 +++- src/locales/ja-JP/onboarding.json | 2 +- src/locales/ko-KR/dashboard.json | 4 +++- src/locales/ko-KR/onboarding.json | 2 +- src/locales/mg-MG/dashboard.json | 4 +++- src/locales/mg-MG/onboarding.json | 2 +- src/locales/mg-TND/dashboard.json | 4 +++- src/locales/mg-TND/onboarding.json | 2 +- src/locales/mg-TNK/dashboard.json | 4 +++- src/locales/mg-TNK/onboarding.json | 2 +- src/locales/mg-TTM/dashboard.json | 4 +++- src/locales/mg-TTM/onboarding.json | 2 +- src/locales/mg-VZ/dashboard.json | 4 +++- src/locales/mg-VZ/onboarding.json | 2 +- src/locales/mn-MN/dashboard.json | 4 +++- src/locales/mn-MN/onboarding.json | 2 +- src/locales/ne-NP/dashboard.json | 4 +++- src/locales/ne-NP/onboarding.json | 2 +- src/locales/nl-NL/dashboard.json | 4 +++- src/locales/nl-NL/onboarding.json | 2 +- src/locales/pl-PL/dashboard.json | 4 +++- src/locales/pl-PL/onboarding.json | 2 +- src/locales/pt-BR/dashboard.json | 4 +++- src/locales/pt-BR/onboarding.json | 2 +- src/locales/pt-PT/dashboard.json | 4 +++- src/locales/pt-PT/onboarding.json | 2 +- src/locales/ro-RO/dashboard.json | 4 +++- src/locales/ro-RO/onboarding.json | 2 +- src/locales/ru-RU/dashboard.json | 4 +++- src/locales/ru-RU/onboarding.json | 2 +- src/locales/sl-SI/dashboard.json | 4 +++- src/locales/sl-SI/onboarding.json | 2 +- src/locales/sv-SE/dashboard.json | 4 +++- src/locales/sv-SE/onboarding.json | 2 +- src/locales/sw-KE/dashboard.json | 4 +++- src/locales/sw-KE/onboarding.json | 2 +- src/locales/tl-PH/dashboard.json | 4 +++- src/locales/tl-PH/onboarding.json | 2 +- src/locales/tr-TR/dashboard.json | 4 +++- src/locales/tr-TR/onboarding.json | 2 +- src/locales/tw-TW/dashboard.json | 4 +++- src/locales/tw-TW/onboarding.json | 2 +- src/locales/uk-UA/dashboard.json | 4 +++- src/locales/uk-UA/onboarding.json | 6 +++--- src/locales/vi-VN/dashboard.json | 4 +++- src/locales/vi-VN/onboarding.json | 2 +- 67 files changed, 135 insertions(+), 69 deletions(-) diff --git a/src/locales/ceb-PH/dashboard.json b/src/locales/ceb-PH/dashboard.json index bb0e0dc9a9..4a2c0d0fc7 100644 --- a/src/locales/ceb-PH/dashboard.json +++ b/src/locales/ceb-PH/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "New Organized update", "tr_newOrganizedUpdateDesc": "Organized just got better! See what’s new in this update!", "tr_improvements": "Improvements:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/ceb-PH/onboarding.json b/src/locales/ceb-PH/onboarding.json index 59f8911ab2..0508cfa1b1 100644 --- a/src/locales/ceb-PH/onboarding.json +++ b/src/locales/ceb-PH/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Congregation access code", "tr_congregationMasterKeyLostDesc": "Enter your congregation’s master key to access it", "tr_congregationMasterKeyAsk": "Enter congregation master key", - "tr_can'tFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Check for mistakes (minimum input is 2 characters). If your congregation isn’t listed on the jw.org search page, contact support@organized-app.com for help.", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/ch-CHS/dashboard.json b/src/locales/ch-CHS/dashboard.json index ed6a146c60..39d3f92ee7 100644 --- a/src/locales/ch-CHS/dashboard.json +++ b/src/locales/ch-CHS/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "新的 Organized 更新", "tr_newOrganizedUpdateDesc": "Organized 变得更好了!查看此更新中的新内容!", "tr_improvements": "改进:", - "tr_ok": "确定" + "tr_ok": "确定", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/ch-CHS/onboarding.json b/src/locales/ch-CHS/onboarding.json index 44e5e0ae78..e0b95d4ac5 100644 --- a/src/locales/ch-CHS/onboarding.json +++ b/src/locales/ch-CHS/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "会众访问代码", "tr_congregationMasterKeyLostDesc": "输入您会众的主密钥以访问", "tr_congregationMasterKeyAsk": "输入会众主密钥", - "tr_can'tFindCongregation": "找不到你的会众?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "请检查输入是否有误(最少需输入 2 个字符)。如果您的会众未在 jw.org 搜索页面上列出,请联系 support@organized-app.com 获取帮助。", "tr_appFunctionalityDataPrivacy": "应用程序功能和数据隐私", "tr_appIntro": "Organized 是由热心的弟兄姐妹们为耶和华见证人创建的非官方应用程序。它简化了会众中的各种职责。在注册您的会众之前,请先获得长老团的批准。", diff --git a/src/locales/de-DE/dashboard.json b/src/locales/de-DE/dashboard.json index 0ad752cac2..76244e8121 100644 --- a/src/locales/de-DE/dashboard.json +++ b/src/locales/de-DE/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "Neues Organized Update", "tr_newOrganizedUpdateDesc": "Organized ist jetzt noch besser! Schau dir die Neuerungen in diesem Update an!", "tr_improvements": "Verbesserungen:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/de-DE/onboarding.json b/src/locales/de-DE/onboarding.json index 5a969b82c0..e2f2fe63c7 100644 --- a/src/locales/de-DE/onboarding.json +++ b/src/locales/de-DE/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Versammlungszugangscode", "tr_congregationMasterKeyLostDesc": "Gib den Hauptschlüssel deiner Versammlung ein, um darauf zuzugreifen", "tr_congregationMasterKeyAsk": "Gib den Versammlungs-Hauptschlüssel ein", - "tr_can'tFindCongregation": "Kann deine Versammlung nicht finden?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Überprüfe auf Fehler (minimale Eingabe sind 2 Zeichen). Falls deine Versammlung auf der jw.org-Suchseite nicht aufgeführt ist, kontaktiere support@organized-app.com für Hilfe.", "tr_appFunctionalityDataPrivacy": "App-Funktionalität und Datenschutz", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/en/dashboard.json b/src/locales/en/dashboard.json index 9bb0a1ddec..4a2c0d0fc7 100644 --- a/src/locales/en/dashboard.json +++ b/src/locales/en/dashboard.json @@ -107,5 +107,5 @@ "tr_improvements": "Improvements:", "tr_ok": "OK", "tr_migrationTitle": "Migration to Organized succeeded", - "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations.

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/es-ES/dashboard.json b/src/locales/es-ES/dashboard.json index c6ab6dbab5..d53b0cbe5d 100644 --- a/src/locales/es-ES/dashboard.json +++ b/src/locales/es-ES/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "New Organized update", "tr_newOrganizedUpdateDesc": "Organized just got better! See what’s new in this update!", "tr_improvements": "Improvements:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/es-ES/onboarding.json b/src/locales/es-ES/onboarding.json index bf5eec7916..e084665cff 100644 --- a/src/locales/es-ES/onboarding.json +++ b/src/locales/es-ES/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Congregation access code", "tr_congregationMasterKeyLostDesc": "Enter your congregation’s master key to access it", "tr_congregationMasterKeyAsk": "Enter congregation master key", - "tr_can'tFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Check for mistakes (minimum input is 2 characters). If your congregation isn’t listed on the jw.org search page, contact support@organized-app.com for help.", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/es-SSP/dashboard.json b/src/locales/es-SSP/dashboard.json index c6ab6dbab5..d53b0cbe5d 100644 --- a/src/locales/es-SSP/dashboard.json +++ b/src/locales/es-SSP/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "New Organized update", "tr_newOrganizedUpdateDesc": "Organized just got better! See what’s new in this update!", "tr_improvements": "Improvements:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/es-SSP/onboarding.json b/src/locales/es-SSP/onboarding.json index bf5eec7916..e084665cff 100644 --- a/src/locales/es-SSP/onboarding.json +++ b/src/locales/es-SSP/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Congregation access code", "tr_congregationMasterKeyLostDesc": "Enter your congregation’s master key to access it", "tr_congregationMasterKeyAsk": "Enter congregation master key", - "tr_can'tFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Check for mistakes (minimum input is 2 characters). If your congregation isn’t listed on the jw.org search page, contact support@organized-app.com for help.", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/fi-FI/dashboard.json b/src/locales/fi-FI/dashboard.json index 4810b6c623..9348cc890d 100644 --- a/src/locales/fi-FI/dashboard.json +++ b/src/locales/fi-FI/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "Uusi Organized-päivitys", "tr_newOrganizedUpdateDesc": "Organized on vielä parempi! Katso, mitä uutta tässä päivityksessä on!", "tr_improvements": "Parannukset:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/fi-FI/onboarding.json b/src/locales/fi-FI/onboarding.json index 879d3dcf72..c783992729 100644 --- a/src/locales/fi-FI/onboarding.json +++ b/src/locales/fi-FI/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Seurakunnan pääsykoodi", "tr_congregationMasterKeyLostDesc": "Syötä seurakuntasi pääavain päästäksesi siihen", "tr_congregationMasterKeyAsk": "Syötä seurakunnan pääavain", - "tr_can'tFindCongregation": "Etkö löydä seurakuntaasi?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Tarkista virheet (vähimmäismerkintä on 2 merkkiä). Jos seurakuntaasi ei ole luettelossa jw.org:in haku sivulla, ota yhteyttä support@organized-app.com saadaksesi apua.", "tr_appFunctionalityDataPrivacy": "Sovellusten toiminnallisuus ja tietosuoja", "tr_appIntro": "Organized on epävirallinen sovellus Jehovan todistajille, innokkaat veljet ja sisaret ovat sen tehneet. Se yksinkertaistaa erilaisia velvollisuuksia seurakunnassa. Pyydämme, että saat hyväksynnän vanhimmistolta ennen kuin rekisteröit seurakuntasi.", diff --git a/src/locales/fr-FR/dashboard.json b/src/locales/fr-FR/dashboard.json index b77d467ed4..c5be1dd57f 100644 --- a/src/locales/fr-FR/dashboard.json +++ b/src/locales/fr-FR/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "Nouvelle mise à jour d'Organized", "tr_newOrganizedUpdateDesc": "Organized vient de s'améliorer ! Découvrez ce qui est nouveau dans cette mise à jour !", "tr_improvements": "Améliorations :", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/fr-FR/onboarding.json b/src/locales/fr-FR/onboarding.json index a7a60f87c5..e932ce0424 100644 --- a/src/locales/fr-FR/onboarding.json +++ b/src/locales/fr-FR/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Code d'accès de l'assemblée", "tr_congregationMasterKeyLostDesc": "Entrez la clé principale de votre assemblée pour y accéder", "tr_congregationMasterKeyAsk": "Entrez la clé principale de l'assemblée", - "tr_can'tFindCongregation": "Vous ne trouvez pas votre assemblée ?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Vérifiez les erreurs (le minimum requis est de 2 caractères). Si votre assemblée ne figure pas sur la page de recherche de jw.org, contactez support@organized-app.com pour obtenir de l'aide.", "tr_appFunctionalityDataPrivacy": "Fonctionnalités de l'application et protection des données", "tr_appIntro": "Organized est une application non officielle pour les Témoins de Jéhovah créé par des frères et soeurs enthousiastes. Il simplifie différentes responsabilités de l'assemblée. Veuillez obtenir l'approbation de votre collège des anciens avant d'enregistrer votre assemblée.", diff --git a/src/locales/hu-HU/dashboard.json b/src/locales/hu-HU/dashboard.json index bb0e0dc9a9..4a2c0d0fc7 100644 --- a/src/locales/hu-HU/dashboard.json +++ b/src/locales/hu-HU/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "New Organized update", "tr_newOrganizedUpdateDesc": "Organized just got better! See what’s new in this update!", "tr_improvements": "Improvements:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/hu-HU/onboarding.json b/src/locales/hu-HU/onboarding.json index 59f8911ab2..0508cfa1b1 100644 --- a/src/locales/hu-HU/onboarding.json +++ b/src/locales/hu-HU/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Congregation access code", "tr_congregationMasterKeyLostDesc": "Enter your congregation’s master key to access it", "tr_congregationMasterKeyAsk": "Enter congregation master key", - "tr_can'tFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Check for mistakes (minimum input is 2 characters). If your congregation isn’t listed on the jw.org search page, contact support@organized-app.com for help.", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/hy-AM/dashboard.json b/src/locales/hy-AM/dashboard.json index bb0e0dc9a9..4a2c0d0fc7 100644 --- a/src/locales/hy-AM/dashboard.json +++ b/src/locales/hy-AM/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "New Organized update", "tr_newOrganizedUpdateDesc": "Organized just got better! See what’s new in this update!", "tr_improvements": "Improvements:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/hy-AM/onboarding.json b/src/locales/hy-AM/onboarding.json index c0a3ee0ccb..4fe69b91d2 100644 --- a/src/locales/hy-AM/onboarding.json +++ b/src/locales/hy-AM/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Congregation access code", "tr_congregationMasterKeyLostDesc": "Enter your congregation’s master key to access it", "tr_congregationMasterKeyAsk": "Enter congregation master key", - "tr_can'tFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Check for mistakes (minimum input is 2 characters). If your congregation isn’t listed on the jw.org search page, contact support@organized-app.com for help.", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/it-IT/dashboard.json b/src/locales/it-IT/dashboard.json index eb7a67fb10..3507c4e83f 100644 --- a/src/locales/it-IT/dashboard.json +++ b/src/locales/it-IT/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "Nuovo aggiornamento Organized", "tr_newOrganizedUpdateDesc": "Organized si è appena migliorato! Scopri cosa c'è di nuovo in questo aggiornamento!", "tr_improvements": "Miglioramenti:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/it-IT/onboarding.json b/src/locales/it-IT/onboarding.json index 59f8911ab2..0508cfa1b1 100644 --- a/src/locales/it-IT/onboarding.json +++ b/src/locales/it-IT/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Congregation access code", "tr_congregationMasterKeyLostDesc": "Enter your congregation’s master key to access it", "tr_congregationMasterKeyAsk": "Enter congregation master key", - "tr_can'tFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Check for mistakes (minimum input is 2 characters). If your congregation isn’t listed on the jw.org search page, contact support@organized-app.com for help.", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/ja-JP/dashboard.json b/src/locales/ja-JP/dashboard.json index c4390fdce6..5ebec3a44f 100644 --- a/src/locales/ja-JP/dashboard.json +++ b/src/locales/ja-JP/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "新しいOrganizedのアップデート", "tr_newOrganizedUpdateDesc": "Organizedはさらに改善されました。新着情報をご覧ください!", "tr_improvements": "改善点:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/ja-JP/onboarding.json b/src/locales/ja-JP/onboarding.json index b26133374e..48bcaff1ed 100644 --- a/src/locales/ja-JP/onboarding.json +++ b/src/locales/ja-JP/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "会衆のアクセスコード", "tr_congregationMasterKeyLostDesc": "アクセスするには会衆のマスターキーを入力してください", "tr_congregationMasterKeyAsk": "会衆のマスターキーを入力", - "tr_can'tFindCongregation": "会衆が見つかりませんか?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "入力に間違いがないか確認してください。(少なくとも2文字入力する必要があります)あなたの会衆がjw.orgの検索ページに載せられていない場合は support@organized-app.comまで援助を依頼してください。", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/ko-KR/dashboard.json b/src/locales/ko-KR/dashboard.json index f938d6e549..1e240a370a 100644 --- a/src/locales/ko-KR/dashboard.json +++ b/src/locales/ko-KR/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "새로운 Organized 업데이트", "tr_newOrganizedUpdateDesc": "Organized가 더 좋아졌습니다! 이번 업데이트에서 새로 추가된 기능을 확인하세요!", "tr_improvements": "개선 사항:", - "tr_ok": "확인" + "tr_ok": "확인", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/ko-KR/onboarding.json b/src/locales/ko-KR/onboarding.json index 4cc63a501b..599cf8c03b 100644 --- a/src/locales/ko-KR/onboarding.json +++ b/src/locales/ko-KR/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "회중 액세스 코드", "tr_congregationMasterKeyLostDesc": "접근하기 위해 귀하의 회중 마스터 키를 입력하세요.", "tr_congregationMasterKeyAsk": "회중 마스터 키 입력", - "tr_can'tFindCongregation": "귀하의 회중을 찾을 수 없나요?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "오류가 없는지 확인하세요(최소 입력은 2자입니다). 귀하의 회중이 jw.org 검색 페이지에 나열되지 않았다면 support@organized-app.com에 도움을 요청하세요.", "tr_appFunctionalityDataPrivacy": "앱 기능 및 데이터 프라이버시", "tr_appIntro": "Organized는 열정적인 형제자매들이 만든 비공식 앱으로, 여호와의 증인을 위한 것입니다. 회중의 다양한 책임을 간소화합니다. 회중을 등록하기 전에 장로회로부터 승인을 받아주세요.", diff --git a/src/locales/mg-MG/dashboard.json b/src/locales/mg-MG/dashboard.json index d8e478a075..052e139ed6 100644 --- a/src/locales/mg-MG/dashboard.json +++ b/src/locales/mg-MG/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "Fanavaozana vaovao amin’ny Organized", "tr_newOrganizedUpdateDesc": "Lasa tsara kokoa izao ny Organized! Jereo hoe inona avy ny zava-baovao!", "tr_improvements": "Fanatsarana:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/mg-MG/onboarding.json b/src/locales/mg-MG/onboarding.json index b72b2baaf0..2e0863ca34 100644 --- a/src/locales/mg-MG/onboarding.json +++ b/src/locales/mg-MG/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Kaody fidirana", "tr_congregationMasterKeyLostDesc": "Ampidiro ny kaody manokana an’ny fiangonana", "tr_congregationMasterKeyAsk": "Ampidiro ny kaody manokana", - "tr_can'tFindCongregation": "Tsy hitanao ve ny fiangonanao?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Hamarino sao misy diso (litera 2 koa no ilaina fara fahakeliny). Raha tsy hita mihitsy ny fiangonanao na dia karohina ao amin’ny jw.org aza, dia mangataha fanampiana aty aminay ao amin’ny support@organized-app.com.", "tr_appFunctionalityDataPrivacy": "Fiasan’ny programa sy tsiambaratelo", "tr_appIntro": "Programa tsy ofisialy natao ho ampiasain’ny Vavolombelon’i Jehovah ny Organized. Rahalahy sy anabavy maromaro no miara-miasa manamboatra azy io. Afaka ny hanampy anao amin’ny andraikitrao ao amin’ny fiangonana izy io. Ataovy azo antoka hoe efa nanaiky ny hampiasana azy ity ny anti-panahy alohan’ny hamoronanao ny kaontin’ny fiangonanareo.", diff --git a/src/locales/mg-TND/dashboard.json b/src/locales/mg-TND/dashboard.json index d8e478a075..052e139ed6 100644 --- a/src/locales/mg-TND/dashboard.json +++ b/src/locales/mg-TND/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "Fanavaozana vaovao amin’ny Organized", "tr_newOrganizedUpdateDesc": "Lasa tsara kokoa izao ny Organized! Jereo hoe inona avy ny zava-baovao!", "tr_improvements": "Fanatsarana:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/mg-TND/onboarding.json b/src/locales/mg-TND/onboarding.json index b72b2baaf0..2e0863ca34 100644 --- a/src/locales/mg-TND/onboarding.json +++ b/src/locales/mg-TND/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Kaody fidirana", "tr_congregationMasterKeyLostDesc": "Ampidiro ny kaody manokana an’ny fiangonana", "tr_congregationMasterKeyAsk": "Ampidiro ny kaody manokana", - "tr_can'tFindCongregation": "Tsy hitanao ve ny fiangonanao?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Hamarino sao misy diso (litera 2 koa no ilaina fara fahakeliny). Raha tsy hita mihitsy ny fiangonanao na dia karohina ao amin’ny jw.org aza, dia mangataha fanampiana aty aminay ao amin’ny support@organized-app.com.", "tr_appFunctionalityDataPrivacy": "Fiasan’ny programa sy tsiambaratelo", "tr_appIntro": "Programa tsy ofisialy natao ho ampiasain’ny Vavolombelon’i Jehovah ny Organized. Rahalahy sy anabavy maromaro no miara-miasa manamboatra azy io. Afaka ny hanampy anao amin’ny andraikitrao ao amin’ny fiangonana izy io. Ataovy azo antoka hoe efa nanaiky ny hampiasana azy ity ny anti-panahy alohan’ny hamoronanao ny kaontin’ny fiangonanareo.", diff --git a/src/locales/mg-TNK/dashboard.json b/src/locales/mg-TNK/dashboard.json index d8e478a075..052e139ed6 100644 --- a/src/locales/mg-TNK/dashboard.json +++ b/src/locales/mg-TNK/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "Fanavaozana vaovao amin’ny Organized", "tr_newOrganizedUpdateDesc": "Lasa tsara kokoa izao ny Organized! Jereo hoe inona avy ny zava-baovao!", "tr_improvements": "Fanatsarana:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/mg-TNK/onboarding.json b/src/locales/mg-TNK/onboarding.json index b72b2baaf0..2e0863ca34 100644 --- a/src/locales/mg-TNK/onboarding.json +++ b/src/locales/mg-TNK/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Kaody fidirana", "tr_congregationMasterKeyLostDesc": "Ampidiro ny kaody manokana an’ny fiangonana", "tr_congregationMasterKeyAsk": "Ampidiro ny kaody manokana", - "tr_can'tFindCongregation": "Tsy hitanao ve ny fiangonanao?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Hamarino sao misy diso (litera 2 koa no ilaina fara fahakeliny). Raha tsy hita mihitsy ny fiangonanao na dia karohina ao amin’ny jw.org aza, dia mangataha fanampiana aty aminay ao amin’ny support@organized-app.com.", "tr_appFunctionalityDataPrivacy": "Fiasan’ny programa sy tsiambaratelo", "tr_appIntro": "Programa tsy ofisialy natao ho ampiasain’ny Vavolombelon’i Jehovah ny Organized. Rahalahy sy anabavy maromaro no miara-miasa manamboatra azy io. Afaka ny hanampy anao amin’ny andraikitrao ao amin’ny fiangonana izy io. Ataovy azo antoka hoe efa nanaiky ny hampiasana azy ity ny anti-panahy alohan’ny hamoronanao ny kaontin’ny fiangonanareo.", diff --git a/src/locales/mg-TTM/dashboard.json b/src/locales/mg-TTM/dashboard.json index d8e478a075..052e139ed6 100644 --- a/src/locales/mg-TTM/dashboard.json +++ b/src/locales/mg-TTM/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "Fanavaozana vaovao amin’ny Organized", "tr_newOrganizedUpdateDesc": "Lasa tsara kokoa izao ny Organized! Jereo hoe inona avy ny zava-baovao!", "tr_improvements": "Fanatsarana:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/mg-TTM/onboarding.json b/src/locales/mg-TTM/onboarding.json index b72b2baaf0..2e0863ca34 100644 --- a/src/locales/mg-TTM/onboarding.json +++ b/src/locales/mg-TTM/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Kaody fidirana", "tr_congregationMasterKeyLostDesc": "Ampidiro ny kaody manokana an’ny fiangonana", "tr_congregationMasterKeyAsk": "Ampidiro ny kaody manokana", - "tr_can'tFindCongregation": "Tsy hitanao ve ny fiangonanao?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Hamarino sao misy diso (litera 2 koa no ilaina fara fahakeliny). Raha tsy hita mihitsy ny fiangonanao na dia karohina ao amin’ny jw.org aza, dia mangataha fanampiana aty aminay ao amin’ny support@organized-app.com.", "tr_appFunctionalityDataPrivacy": "Fiasan’ny programa sy tsiambaratelo", "tr_appIntro": "Programa tsy ofisialy natao ho ampiasain’ny Vavolombelon’i Jehovah ny Organized. Rahalahy sy anabavy maromaro no miara-miasa manamboatra azy io. Afaka ny hanampy anao amin’ny andraikitrao ao amin’ny fiangonana izy io. Ataovy azo antoka hoe efa nanaiky ny hampiasana azy ity ny anti-panahy alohan’ny hamoronanao ny kaontin’ny fiangonanareo.", diff --git a/src/locales/mg-VZ/dashboard.json b/src/locales/mg-VZ/dashboard.json index 239312fb57..8cf151cc39 100644 --- a/src/locales/mg-VZ/dashboard.json +++ b/src/locales/mg-VZ/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "Fanavaoza Organized vaovao", "tr_newOrganizedUpdateDesc": "Mihasoa avao Organized io! Henteo hoe ino iaby ty fanovà miseho!", "tr_improvements": "Mila hasoavy:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/mg-VZ/onboarding.json b/src/locales/mg-VZ/onboarding.json index 894293d07f..2caf4cbe2e 100644 --- a/src/locales/mg-VZ/onboarding.json +++ b/src/locales/mg-VZ/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Kôdy filira", "tr_congregationMasterKeyLostDesc": "Ampidiro ty kôdy filira ho an’ny fiangona", "tr_congregationMasterKeyAsk": "Ampidiro ty kôdy filira manoka", - "tr_can'tFindCongregation": "Tsy hitanao va ty fiangonanao?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Hamarino va misy diso (litera 2 koa ro ilà fara fahakeliny). Laha tsy hita mihitsy ty fiangonanao ndre mila amy jw.org ao aza iha, le mangataha fanampea aminay amy support@organized-app.com.", "tr_appFunctionalityDataPrivacy": "Fiasan’ny programa sy tsiambaratelo", "tr_appIntro": "Programa tsy ofisialy natao ho ampiasain’ny Vavolombelon’i Jehovah ny Organized. Rahalahy sy anabavy maromaro no miara-miasa manamboatra azy io. Afaka ny hanampy anao amin’ny andraikitrao ao amin’ny fiangonana izy io. Ataovy azo antoka hoe efa nanaiky ny hampiasana azy ity ny anti-panahy alohan’ny hamoronanao ny kaontin’ny fiangonanareo.", diff --git a/src/locales/mn-MN/dashboard.json b/src/locales/mn-MN/dashboard.json index bb0e0dc9a9..4a2c0d0fc7 100644 --- a/src/locales/mn-MN/dashboard.json +++ b/src/locales/mn-MN/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "New Organized update", "tr_newOrganizedUpdateDesc": "Organized just got better! See what’s new in this update!", "tr_improvements": "Improvements:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/mn-MN/onboarding.json b/src/locales/mn-MN/onboarding.json index 59f8911ab2..0508cfa1b1 100644 --- a/src/locales/mn-MN/onboarding.json +++ b/src/locales/mn-MN/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Congregation access code", "tr_congregationMasterKeyLostDesc": "Enter your congregation’s master key to access it", "tr_congregationMasterKeyAsk": "Enter congregation master key", - "tr_can'tFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Check for mistakes (minimum input is 2 characters). If your congregation isn’t listed on the jw.org search page, contact support@organized-app.com for help.", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/ne-NP/dashboard.json b/src/locales/ne-NP/dashboard.json index c054e3999c..0ccf929316 100644 --- a/src/locales/ne-NP/dashboard.json +++ b/src/locales/ne-NP/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "New Organized update", "tr_newOrganizedUpdateDesc": "Organized just got better! See what’s new in this update!", "tr_improvements": "Improvements:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/ne-NP/onboarding.json b/src/locales/ne-NP/onboarding.json index 505d35cfc6..55e5dabd62 100644 --- a/src/locales/ne-NP/onboarding.json +++ b/src/locales/ne-NP/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Congregation access code", "tr_congregationMasterKeyLostDesc": "Enter your congregation’s master key to access it", "tr_congregationMasterKeyAsk": "Enter congregation master key", - "tr_can'tFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Check for mistakes (minimum input is 2 characters). If your congregation isn’t listed on the jw.org search page, contact support@organized-app.com for help.", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/nl-NL/dashboard.json b/src/locales/nl-NL/dashboard.json index bb0e0dc9a9..4a2c0d0fc7 100644 --- a/src/locales/nl-NL/dashboard.json +++ b/src/locales/nl-NL/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "New Organized update", "tr_newOrganizedUpdateDesc": "Organized just got better! See what’s new in this update!", "tr_improvements": "Improvements:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/nl-NL/onboarding.json b/src/locales/nl-NL/onboarding.json index 6907930900..a5ee8c3218 100644 --- a/src/locales/nl-NL/onboarding.json +++ b/src/locales/nl-NL/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Congregation access code", "tr_congregationMasterKeyLostDesc": "Enter your congregation’s master key to access it", "tr_congregationMasterKeyAsk": "Enter congregation master key", - "tr_can'tFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Check for mistakes (minimum input is 2 characters). If your congregation isn’t listed on the jw.org search page, contact support@organized-app.com for help.", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/pl-PL/dashboard.json b/src/locales/pl-PL/dashboard.json index 915a8991ef..962fdbad89 100644 --- a/src/locales/pl-PL/dashboard.json +++ b/src/locales/pl-PL/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "New Organized update", "tr_newOrganizedUpdateDesc": "Organized just got better! See what’s new in this update!", "tr_improvements": "Improvements:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/pl-PL/onboarding.json b/src/locales/pl-PL/onboarding.json index 280b0e69b4..2bb5d6657e 100644 --- a/src/locales/pl-PL/onboarding.json +++ b/src/locales/pl-PL/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Congregation access code", "tr_congregationMasterKeyLostDesc": "Enter your congregation’s master key to access it", "tr_congregationMasterKeyAsk": "Enter congregation master key", - "tr_can'tFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Check for mistakes (minimum input is 2 characters). If your congregation isn’t listed on the jw.org search page, contact support@organized-app.com for help.", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/pt-BR/dashboard.json b/src/locales/pt-BR/dashboard.json index 759950b07c..a297b3b678 100644 --- a/src/locales/pt-BR/dashboard.json +++ b/src/locales/pt-BR/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "Nova atualização do Organized", "tr_newOrganizedUpdateDesc": "O Organized ficou ainda melhor! Veja o que há de novo nesta atualização!", "tr_improvements": "Melhorias:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/pt-BR/onboarding.json b/src/locales/pt-BR/onboarding.json index 6c8bddb3a2..64a3088b46 100644 --- a/src/locales/pt-BR/onboarding.json +++ b/src/locales/pt-BR/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Código de acesso da congregação", "tr_congregationMasterKeyLostDesc": "Insira a chave mestra da sua congregação para acessá-la", "tr_congregationMasterKeyAsk": "Digite a chave mestra da congregação", - "tr_can'tFindCongregation": "Não consegue encontrar sua congregação?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Verifique por erros (a entrada mínima é de 2 caracteres). Se sua congregação não estiver listada na página de pesquisa do jw.org, entre em contato com support@organized-app.com para obter ajuda.", "tr_appFunctionalityDataPrivacy": "Funcionalidade do aplicativo e privacidade de dados", "tr_appIntro": "O Organized é um aplicativo não oficial para as Testemunhas de Jeová, criado por irmãos e irmãs entusiastas. Ele simplifica várias responsabilidades na congregação. Por favor, obtenha a aprovação de seu corpo de anciões antes de registrar sua congregação.", diff --git a/src/locales/pt-PT/dashboard.json b/src/locales/pt-PT/dashboard.json index c9bc07540a..d18ec04972 100644 --- a/src/locales/pt-PT/dashboard.json +++ b/src/locales/pt-PT/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "New Organized update", "tr_newOrganizedUpdateDesc": "Organized just got better! See what’s new in this update!", "tr_improvements": "Improvements:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/pt-PT/onboarding.json b/src/locales/pt-PT/onboarding.json index 4f1b4bc5dc..5eb7596f81 100644 --- a/src/locales/pt-PT/onboarding.json +++ b/src/locales/pt-PT/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Código de acesso da congregação", "tr_congregationMasterKeyLostDesc": "Introduza a chave mestra da congregação para aceder", "tr_congregationMasterKeyAsk": "Íntroduza a chave mestra de Congregação", - "tr_can'tFindCongregation": "Não encontrou a sua congregação?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Verifique se há erros (entrada mínima é de 2 caracteres). Se a sua congregação não estiver listada na página de pesquisa do jw.org, entre em contacto com support@organized-app.com para obter ajuda.", "tr_appFunctionalityDataPrivacy": "Funcionalidade e privacidade de dados da aplicação", "tr_appIntro": "Organized é uma aplicação não oficial para as Testemunhas de Jeová, criado por irmãos e irmãs entusiastas. Simplifica várias responsabilidades na congregação. Por favor, obtenha a aprovação do seu corpo de anciões antes de registar a sua congregação.", diff --git a/src/locales/ro-RO/dashboard.json b/src/locales/ro-RO/dashboard.json index 302d92de9b..a55d794e55 100644 --- a/src/locales/ro-RO/dashboard.json +++ b/src/locales/ro-RO/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "New Organized update", "tr_newOrganizedUpdateDesc": "Organized just got better! See what’s new in this update!", "tr_improvements": "Improvements:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/ro-RO/onboarding.json b/src/locales/ro-RO/onboarding.json index f5ffbd3bea..4cdc4bece9 100644 --- a/src/locales/ro-RO/onboarding.json +++ b/src/locales/ro-RO/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Congregation access code", "tr_congregationMasterKeyLostDesc": "Enter your congregation’s master key to access it", "tr_congregationMasterKeyAsk": "Enter congregation master key", - "tr_can'tFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Check for mistakes (minimum input is 2 characters). If your congregation isn’t listed on the jw.org search page, contact support@organized-app.com for help.", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/ru-RU/dashboard.json b/src/locales/ru-RU/dashboard.json index bae396b5db..e5da7a6f6c 100644 --- a/src/locales/ru-RU/dashboard.json +++ b/src/locales/ru-RU/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "Новая версия Organized", "tr_newOrganizedUpdateDesc": "Organized стал лучше! Узнай, что нового в этом обновлении!", "tr_improvements": "Улучшения:", - "tr_ok": "Хорошо" + "tr_ok": "Хорошо", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/ru-RU/onboarding.json b/src/locales/ru-RU/onboarding.json index d92227a118..1020e6e4a5 100644 --- a/src/locales/ru-RU/onboarding.json +++ b/src/locales/ru-RU/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Код доступа к собранию", "tr_congregationMasterKeyLostDesc": "Введи код шифрования твоего собрания для доступа к нему", "tr_congregationMasterKeyAsk": "Введи главный ключ собрания", - "tr_can'tFindCongregation": "Не удается найти свое собрание?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Проверь наличие ошибок (минимальное количество символов – 2). Если твоё собрание отсутствует на странице поиска jw.org, свяжись с support@organized-app.com для получения помощи.", "tr_appFunctionalityDataPrivacy": "Функциональность приложения и конфиденциальность данных", "tr_appIntro": "Organized - это неофициальное приложение для Свидетелей Иеговы, созданное энтузиастами братьями и сестрами. Оно упрощает различные обязанности в собрании. Пожалуйста, получи одобрение от старейшин, прежде чем зарегистрировать свое собрание.", diff --git a/src/locales/sl-SI/dashboard.json b/src/locales/sl-SI/dashboard.json index bb0e0dc9a9..4a2c0d0fc7 100644 --- a/src/locales/sl-SI/dashboard.json +++ b/src/locales/sl-SI/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "New Organized update", "tr_newOrganizedUpdateDesc": "Organized just got better! See what’s new in this update!", "tr_improvements": "Improvements:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/sl-SI/onboarding.json b/src/locales/sl-SI/onboarding.json index 59f8911ab2..0508cfa1b1 100644 --- a/src/locales/sl-SI/onboarding.json +++ b/src/locales/sl-SI/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Congregation access code", "tr_congregationMasterKeyLostDesc": "Enter your congregation’s master key to access it", "tr_congregationMasterKeyAsk": "Enter congregation master key", - "tr_can'tFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Check for mistakes (minimum input is 2 characters). If your congregation isn’t listed on the jw.org search page, contact support@organized-app.com for help.", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/sv-SE/dashboard.json b/src/locales/sv-SE/dashboard.json index 3ba6ba9004..d595472239 100644 --- a/src/locales/sv-SE/dashboard.json +++ b/src/locales/sv-SE/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "Ny Organized-uppdatering", "tr_newOrganizedUpdateDesc": "Organized blev bättre! Se vad som är nytt i denna uppdatering!", "tr_improvements": "Förbättringar:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/sv-SE/onboarding.json b/src/locales/sv-SE/onboarding.json index 30710114e4..2ab0e0769c 100644 --- a/src/locales/sv-SE/onboarding.json +++ b/src/locales/sv-SE/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Församlingens åtkomstkod", "tr_congregationMasterKeyLostDesc": "Ange din församlingens huvudkod för att få åtkomst", "tr_congregationMasterKeyAsk": "Ange församlingens huvudkod", - "tr_can'tFindCongregation": "Kan inte hitta din församling?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Kontrollera om det finns några fel (minst 2 tecken). Om din församling inte finns med på jw.org söksidan, kontakta support@organized-app.com för hjälp.", "tr_appFunctionalityDataPrivacy": "Appens funktionalitet och dataintegritet", "tr_appIntro": "Organiserad är en inofficiell app för Jehovas vittnen skapade av entusiastiska bröder och systrar. Det förenklar olika ansvarsområden i församlingen. Vänligen få ett godkännande från äldstekretsen innan du registrerar din församling.", diff --git a/src/locales/sw-KE/dashboard.json b/src/locales/sw-KE/dashboard.json index bb0e0dc9a9..fb47e7210f 100644 --- a/src/locales/sw-KE/dashboard.json +++ b/src/locales/sw-KE/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "New Organized update", "tr_newOrganizedUpdateDesc": "Organized just got better! See what’s new in this update!", "tr_improvements": "Improvements:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Міграція на Organized успішна", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/sw-KE/onboarding.json b/src/locales/sw-KE/onboarding.json index 59f8911ab2..0508cfa1b1 100644 --- a/src/locales/sw-KE/onboarding.json +++ b/src/locales/sw-KE/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Congregation access code", "tr_congregationMasterKeyLostDesc": "Enter your congregation’s master key to access it", "tr_congregationMasterKeyAsk": "Enter congregation master key", - "tr_can'tFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Check for mistakes (minimum input is 2 characters). If your congregation isn’t listed on the jw.org search page, contact support@organized-app.com for help.", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/tl-PH/dashboard.json b/src/locales/tl-PH/dashboard.json index 8b75981439..a5be96984b 100644 --- a/src/locales/tl-PH/dashboard.json +++ b/src/locales/tl-PH/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "Bagong update ng Organized", "tr_newOrganizedUpdateDesc": "Naging mas maganda ang Organized! Tingnan kung anong bago sa update na ito!", "tr_improvements": "Pagbabago:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/tl-PH/onboarding.json b/src/locales/tl-PH/onboarding.json index 51871a0f25..c8272361f5 100644 --- a/src/locales/tl-PH/onboarding.json +++ b/src/locales/tl-PH/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Congregation access code", "tr_congregationMasterKeyLostDesc": "Ilagay ang inyong congregation master key upang ma-access ito", "tr_congregationMasterKeyAsk": "Ilagay ang congregation master key", - "tr_can'tFindCongregation": "Hindi mahanap ang inyong kongregasyon?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Suriin kung may mga pagkakamali (ang minimum na input ay 2 karakter). Kung ang iyong kongregasyon ay wala sa listahan sa jw.org search page, kontakin ang support@organized-app.com para sa tulong", "tr_appFunctionalityDataPrivacy": "Praktikalidad ng app at data privacy", "tr_appIntro": "Ang Organized ay di-opisyal na app para sa mga Saksi ni Jehova na ginawa ng masisigasig na mga kapatid na lalaki at babae. Pinapasimple nito ang iba't ibang responsibilidad sa loob ng kongregasyon. Pakisuyong humingi ng pahintulot mula sa inyong lupon ng matatanda bago i-register ang inyong kongregasyon.", diff --git a/src/locales/tr-TR/dashboard.json b/src/locales/tr-TR/dashboard.json index 9668c4b86e..42838b0ce4 100644 --- a/src/locales/tr-TR/dashboard.json +++ b/src/locales/tr-TR/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "New Organized update", "tr_newOrganizedUpdateDesc": "Organized just got better! See what’s new in this update!", "tr_improvements": "Improvements:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/tr-TR/onboarding.json b/src/locales/tr-TR/onboarding.json index c0b7b3acf5..53203b6662 100644 --- a/src/locales/tr-TR/onboarding.json +++ b/src/locales/tr-TR/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Cemaat erişim kodu", "tr_congregationMasterKeyLostDesc": "Lütfen cemaatinize erişmek için cemaatinizin ana anahtarını girin", "tr_congregationMasterKeyAsk": "Cemaat ana anahtarını girin", - "tr_can'tFindCongregation": "Cemaatinizi bulamıyor musunuz?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Hataları kontrol edin (minimum giriş 2 karakterdir). Eğer cemaatiniz jw.org arama sayfasında listelenmemişse, yardım için support@organized-app.com ile iletişime geçin.", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/tw-TW/dashboard.json b/src/locales/tw-TW/dashboard.json index 9408e69094..8212b48f3e 100644 --- a/src/locales/tw-TW/dashboard.json +++ b/src/locales/tw-TW/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "New Organized update", "tr_newOrganizedUpdateDesc": "Organized just got better! See what’s new in this update!", "tr_improvements": "Improvements:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/tw-TW/onboarding.json b/src/locales/tw-TW/onboarding.json index 17a2713b2a..5f9af18dd0 100644 --- a/src/locales/tw-TW/onboarding.json +++ b/src/locales/tw-TW/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Congregation access code", "tr_congregationMasterKeyLostDesc": "Enter your congregation’s master key to access it", "tr_congregationMasterKeyAsk": "Enter congregation master key", - "tr_can'tFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Check for mistakes (minimum input is 2 characters). If your congregation isn’t listed on the jw.org search page, contact support@organized-app.com for help.", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", diff --git a/src/locales/uk-UA/dashboard.json b/src/locales/uk-UA/dashboard.json index db8992d2a5..00ea8a4c2e 100644 --- a/src/locales/uk-UA/dashboard.json +++ b/src/locales/uk-UA/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "Нова версія Organized", "tr_newOrganizedUpdateDesc": "Organized став кращим! Подивися, що покращилося в цьому оновленні!", "tr_improvements": "Покращення:", - "tr_ok": "Добре" + "tr_ok": "Добре", + "tr_migrationTitle": "Міграція на Organized успішна", + "tr_migrationDesc": "

Вітання! Дані твого збору були перенесені в Organized, новий, дуже покращений додаток для зборів Свідків Єгови!

Якщо в тебе є будь-які технічні труднощі з перенесенням даних, напиши нам на support@organized-app.com і ми допоможемо тобі.

" } diff --git a/src/locales/uk-UA/onboarding.json b/src/locales/uk-UA/onboarding.json index e10a0400e1..0dfe632966 100644 --- a/src/locales/uk-UA/onboarding.json +++ b/src/locales/uk-UA/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Код доступу збору", "tr_congregationMasterKeyLostDesc": "Введи головний ключ твого збору для доступу до нього", "tr_congregationMasterKeyAsk": "Введи головний ключ збору", - "tr_can'tFindCongregation": "Не можеш знайти свого збору?", + "tr_cantFindCongregation": "Не можеш знайти свого збору?", "tr_cantFindCongregationDesc": "Перевір наявність помилок (мінімальна довжина вводу - 2 символи). Якщо твій збір не вказаний на сторінці пошуку jw.org, звернися за допомогою до support@organized-app.com.", "tr_appFunctionalityDataPrivacy": "Функціональність програми та конфіденційність даних", "tr_appIntro": "Organized — це неофіційний додаток, для Свідків Єгови створений братами та сестрами з великим ентузіазмом. Він спрощує різні обов’язки в зборі. Будь ласка, отримай схвалення від своєї ради старійшин перед реєстрацією твого збору.", @@ -117,6 +117,6 @@ "tr_illustrationTerritoriesDescription": "Переглядай та редагуй території, слідкуй за простроченими та втраченими картками. Відслідковуй записи “Не відвідувати”, історію призначень і друкуй нові картки. Призначай територію віснику, і вона з'явиться в його списку територій. Відстежуй статистику опрацювання та експортуй документ S-13.", "tr_illustrationOtherSchedulesHeader": "Багато інших корисних розкладів", "tr_illustrationOtherSchedulesDescription": "Organized дуже спрощує планування прибирання Залу, візиту районного наглядача, робіт з обслуговування Залу, свідчення в громадських місцях, обов'язків у зборі та інших аспектів життя збору для призначених братів. Вісникам також стає легше відстежувати та брати участь у цих завданнях.", - "tr_howAreTheCodesDifferent": "How are the codes different?", - "tr_howAreTheCodesDifferentDesc": "Access code: For all users to join your congregation; Master key: Higher-level access for responsible brothers." + "tr_howAreTheCodesDifferent": "Чим відрізняються ці коди?", + "tr_howAreTheCodesDifferentDesc": "Код доступу: для всіх користувачів для приєднання до збору; Головний ключ: Вищий рівень доступу для відповідальних братів." } diff --git a/src/locales/vi-VN/dashboard.json b/src/locales/vi-VN/dashboard.json index 56c2641231..5cff475e16 100644 --- a/src/locales/vi-VN/dashboard.json +++ b/src/locales/vi-VN/dashboard.json @@ -105,5 +105,7 @@ "tr_newOrganizedUpdate": "New Organized update", "tr_newOrganizedUpdateDesc": "Organized just got better! See what’s new in this update!", "tr_improvements": "Improvements:", - "tr_ok": "OK" + "tr_ok": "OK", + "tr_migrationTitle": "Migration to Organized succeeded", + "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" } diff --git a/src/locales/vi-VN/onboarding.json b/src/locales/vi-VN/onboarding.json index 071af696ba..8a5d46159f 100644 --- a/src/locales/vi-VN/onboarding.json +++ b/src/locales/vi-VN/onboarding.json @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Congregation access code", "tr_congregationMasterKeyLostDesc": "Enter your congregation’s master key to access it", "tr_congregationMasterKeyAsk": "Enter congregation master key", - "tr_can'tFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Can't find your congregation?", "tr_cantFindCongregationDesc": "Check for mistakes (minimum input is 2 characters). If your congregation isn’t listed on the jw.org search page, contact support@organized-app.com for help.", "tr_appFunctionalityDataPrivacy": "App functionality and data privacy", "tr_appIntro": "Organized is an unofficial app for Jehovah's Witnesses created by enthusiastic brothers and sisters. It simplifies various responsibilities in congregation. Please get approval from your body of elders before registering your congregation.", From c823bbbda04db63585256dfd1afe30ab9d44fb8e Mon Sep 17 00:00:00 2001 From: "Rasamoelina, Haja Onjatiana" <26148770+rhahao@users.noreply.github.com> Date: Sun, 10 Nov 2024 12:56:43 +0300 Subject: [PATCH 02/27] feat(features): use stepper for congregation creation workflow --- converter/svg/convert.js | 7 +- .../svg/sources/name=congregation-access.svg | 9 + src/RootWrap.tsx | 3 + .../icons/IconCongregationAccess.tsx | 56 ++++++ src/components/icons/index.ts | 3 +- .../account_chooser/useAccountChooser.tsx | 12 +- .../criteria/index.tsx | 0 .../congregation_access_code/index.tsx | 185 ++++++++++++++++++ .../useCongregationAccessCode.tsx | 101 ++++++++++ .../index.tsx | 20 +- .../useCongregationDetails.tsx} | 14 +- .../criteria/index.tsx | 0 .../congregation_master_key/index.tsx | 180 +++++++++++++++++ .../useCongregationMasterKey.tsx | 105 ++++++++++ .../vip/congregation_create/index.tsx | 71 +++++-- .../useCongregationCreate.tsx | 37 +++- .../congregation_access_code/index.tsx | 110 +---------- .../useCongregationAccessCode.tsx | 79 +------- .../congregation_master_key/index.tsx | 111 +---------- .../useCongregationMasterKey.tsx | 79 +------- .../vip/oauth/button_base/useButtonBase.tsx | 10 +- src/features/app_start/vip/startup/index.tsx | 12 +- .../app_start/vip/startup/useStartup.tsx | 114 +++++++++-- .../app_start/vip/terms_use/useTermsUse.tsx | 2 +- .../index.tsx | 15 +- .../useUserAccountCreated.tsx | 19 ++ .../app_start/vip/vip_info_tip/index.tsx | 52 ++--- .../language_switcher/useLanguage.tsx | 10 +- src/hooks/useUserAutoLogin.tsx | 14 +- src/locales/en/onboarding.json | 8 +- src/services/i18n/index.ts | 2 +- src/states/app.ts | 12 +- 32 files changed, 978 insertions(+), 474 deletions(-) create mode 100644 converter/svg/sources/name=congregation-access.svg create mode 100644 src/components/icons/IconCongregationAccess.tsx rename src/features/app_start/vip/{congregation_encryption => congregation_create}/congregation_access_code/criteria/index.tsx (100%) create mode 100644 src/features/app_start/vip/congregation_create/congregation_access_code/index.tsx create mode 100644 src/features/app_start/vip/congregation_create/congregation_access_code/useCongregationAccessCode.tsx rename src/features/app_start/vip/congregation_create/{congregation_info => congregation_details}/index.tsx (89%) rename src/features/app_start/vip/congregation_create/{congregation_info/useCongregationInfo.tsx => congregation_details/useCongregationDetails.tsx} (94%) rename src/features/app_start/vip/{congregation_encryption => congregation_create}/congregation_master_key/criteria/index.tsx (100%) create mode 100644 src/features/app_start/vip/congregation_create/congregation_master_key/index.tsx create mode 100644 src/features/app_start/vip/congregation_create/congregation_master_key/useCongregationMasterKey.tsx rename src/features/app_start/vip/{congregation_create/account_created => user_account_created}/index.tsx (81%) create mode 100644 src/features/app_start/vip/user_account_created/useUserAccountCreated.tsx diff --git a/converter/svg/convert.js b/converter/svg/convert.js index 23acba71f2..f1f20bcedb 100644 --- a/converter/svg/convert.js +++ b/converter/svg/convert.js @@ -63,9 +63,12 @@ for await (const svgFile of svgFiles) { ); if (componentName === 'IconLoading') { - data.replace(' animation,', ' animation: rotate 2s linear infinite,'); + data = data.replace( + ' animation,', + ' animation: "rotate 2s linear infinite",' + ); } else { - data.replace(' animation,', ''); + data = data.replace(' animation,', ''); } data = data.replace('${iconName}', originalName); diff --git a/converter/svg/sources/name=congregation-access.svg b/converter/svg/sources/name=congregation-access.svg new file mode 100644 index 0000000000..01ef3ab154 --- /dev/null +++ b/converter/svg/sources/name=congregation-access.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/RootWrap.tsx b/src/RootWrap.tsx index fcbdaab2ab..2d80078baa 100644 --- a/src/RootWrap.tsx +++ b/src/RootWrap.tsx @@ -54,6 +54,9 @@ const theme = createTheme({ span: { fontFamily: `${font} !important`, }, + text: { + fontFamily: `${font} !important`, + }, }, }, }, diff --git a/src/components/icons/IconCongregationAccess.tsx b/src/components/icons/IconCongregationAccess.tsx new file mode 100644 index 0000000000..afad858544 --- /dev/null +++ b/src/components/icons/IconCongregationAccess.tsx @@ -0,0 +1,56 @@ +import { SvgIcon, SxProps, Theme } from '@mui/material'; + +type IconProps = { + color?: string; + width?: number; + height?: number; + sx?: SxProps; + className?: string; +}; + +const IconCongregationAccess = ({ + color = '#222222', + width = 24, + height = 24, + sx = {}, + className, +}: IconProps) => { + return ( + + + + + + + + + + + + ); +}; + +export default IconCongregationAccess; diff --git a/src/components/icons/index.ts b/src/components/icons/index.ts index e1445f9929..3e72214d20 100644 --- a/src/components/icons/index.ts +++ b/src/components/icons/index.ts @@ -59,6 +59,7 @@ export { default as IconCompassOn } from './IconCompassOn'; export { default as IconComputerVideo } from './IconComputerVideo'; export { default as IconComputer } from './IconComputer'; export { default as IconConference } from './IconConference'; +export { default as IconCongregationAccess } from './IconCongregationAccess'; export { default as IconCongregation } from './IconCongregation'; export { default as IconContactUs } from './IconContactUs'; export { default as IconContact } from './IconContact'; @@ -186,8 +187,8 @@ export { default as IconPause } from './IconPause'; export { default as IconPermissionsPending } from './IconPermissionsPending'; export { default as IconPersonSearch } from './IconPersonSearch'; export { default as IconPerson } from './IconPerson'; -export { default as IconPersonPlaceholder } from './IconPersonPlaceholder'; export { default as IconPersonalDay } from './IconPersonalDay'; +export { default as IconPersonPlaceholder } from './IconPersonPlaceholder'; export { default as IconPhone } from './IconPhone'; export { default as IconPinCode } from './IconPinCode'; export { default as IconPin } from './IconPin'; diff --git a/src/features/app_start/shared/account_chooser/useAccountChooser.tsx b/src/features/app_start/shared/account_chooser/useAccountChooser.tsx index 57bf36e23e..696e474a4f 100644 --- a/src/features/app_start/shared/account_chooser/useAccountChooser.tsx +++ b/src/features/app_start/shared/account_chooser/useAccountChooser.tsx @@ -1,15 +1,21 @@ -import { setIsAccountChoose } from '@services/recoil/app'; import { dbAppSettingsUpdate } from '@services/dexie/settings'; +import { useSetRecoilState } from 'recoil'; +import { isAccountChooseState, isUserAccountCreatedState } from '@states/app'; const useAccountChooser = () => { + const setIsAccountChoose = useSetRecoilState(isAccountChooseState); + const setIsUserAccountCreated = useSetRecoilState(isUserAccountCreatedState); + const handleChoosePocket = async () => { await dbAppSettingsUpdate({ 'user_settings.account_type': 'pocket' }); - await setIsAccountChoose(false); + setIsUserAccountCreated(false); + setIsAccountChoose(false); }; const handleChooseVIP = async () => { await dbAppSettingsUpdate({ 'user_settings.account_type': 'vip' }); - await setIsAccountChoose(false); + setIsUserAccountCreated(false); + setIsAccountChoose(false); }; return { handleChoosePocket, handleChooseVIP }; diff --git a/src/features/app_start/vip/congregation_encryption/congregation_access_code/criteria/index.tsx b/src/features/app_start/vip/congregation_create/congregation_access_code/criteria/index.tsx similarity index 100% rename from src/features/app_start/vip/congregation_encryption/congregation_access_code/criteria/index.tsx rename to src/features/app_start/vip/congregation_create/congregation_access_code/criteria/index.tsx diff --git a/src/features/app_start/vip/congregation_create/congregation_access_code/index.tsx b/src/features/app_start/vip/congregation_create/congregation_access_code/index.tsx new file mode 100644 index 0000000000..d78ba09110 --- /dev/null +++ b/src/features/app_start/vip/congregation_create/congregation_access_code/index.tsx @@ -0,0 +1,185 @@ +import { Box } from '@mui/material'; +import { IconCongregationAccess, IconError, IconLoading } from '@icons/index'; +import { useAppTranslation } from '@hooks/index'; +import useCongregationAccessCode from './useCongregationAccessCode'; +import Button from '@components/button'; +import Criteria from './criteria'; +import InfoMessage from '@components/info-message'; +import Markup from '@components/text_markup'; +import TextField from '@components/textfield'; +import Typography from '@components/typography'; +import VipInfoTip from '@features/app_start/vip/vip_info_tip'; + +const CongregationAccessCode = () => { + const { t } = useAppTranslation(); + + const { + isLengthPassed, + isNumberPassed, + isLowerCasePassed, + isUpperCasePassed, + isSpecialSymbolPassed, + isProcessing, + hideMessage, + message, + title, + variant, + isMatch, + setTmpAccessCode, + setTmpAccessCodeVerify, + tmpAccessCode, + tmpAccessCodeVerify, + btnActionDisabled, + handleSetAccessCode, + } = useCongregationAccessCode(); + + return ( + + + + + + + + {t('tr_congregationAccessCodeNotice')} + + + + + + setTmpAccessCode(e.target.value)} + startIcon={} + resetHelperPadding={true} + /> + setTmpAccessCodeVerify(e.target.value)} + startIcon={} + resetHelperPadding={true} + helperText={ + + + + + + + + + } + /> + + + + + + + + + + + } + messageHeader={title} + message={message} + onClose={hideMessage} + /> + + + + ); +}; + +export default CongregationAccessCode; diff --git a/src/features/app_start/vip/congregation_create/congregation_access_code/useCongregationAccessCode.tsx b/src/features/app_start/vip/congregation_create/congregation_access_code/useCongregationAccessCode.tsx new file mode 100644 index 0000000000..28309fbb5f --- /dev/null +++ b/src/features/app_start/vip/congregation_create/congregation_access_code/useCongregationAccessCode.tsx @@ -0,0 +1,101 @@ +import { useEffect, useState } from 'react'; +import { useAppTranslation } from '@hooks/index'; +import { encryptData, generateKey } from '@services/encryption/index'; +import { displayOnboardingFeedback } from '@services/recoil/app'; +import { getMessageByCode } from '@services/i18n/translation'; +import { apiSetCongregationAccessCode } from '@services/api/congregation'; +import { dbAppSettingsUpdate } from '@services/dexie/settings'; +import useFeedback from '@features/app_start/shared/hooks/useFeedback'; + +const useCongregationAccessCode = () => { + const { t } = useAppTranslation(); + + const { hideMessage, message, showMessage, title, variant } = useFeedback(); + + const [tmpAccessCode, setTmpAccessCode] = useState(''); + const [tmpAccessCodeVerify, setTmpAccessCodeVerify] = useState(''); + const [isLengthPassed, setIsLengthPassed] = useState(false); + const [isNumberPassed, setIsNumberPassed] = useState(false); + const [isLowerCasePassed, setIsLowerCasePassed] = useState(false); + const [isUpperCasePassed, setIsUpperCasePassed] = useState(false); + const [isSpecialSymbolPassed, setIsSpecialSymbolPassed] = useState(false); + const [isMatch, setIsMatch] = useState(false); + const [isProcessing, setIsProcessing] = useState(false); + + const btnActionDisabled = + !isLengthPassed || + !isNumberPassed || + !isLowerCasePassed || + !isUpperCasePassed || + !isSpecialSymbolPassed || + !isMatch; + + const handleSetAccessCode = async () => { + if (isProcessing) return; + hideMessage(); + setIsProcessing(true); + + try { + const encryptionKey = generateKey(); + const encryptedKey = encryptData(encryptionKey, tmpAccessCode); + + const { status, data } = await apiSetCongregationAccessCode(encryptedKey); + + if (status !== 200) { + await displayOnboardingFeedback({ + title: t('tr_errorGeneric'), + message: getMessageByCode(data.message), + }); + showMessage(); + + setIsProcessing(false); + return; + } + + await dbAppSettingsUpdate({ + 'cong_settings.cong_access_code': tmpAccessCode, + }); + } catch (err) { + await displayOnboardingFeedback({ + title: t('tr_errorGeneric'), + message: getMessageByCode(err.message), + }); + showMessage(); + + setIsProcessing(false); + } + }; + + useEffect(() => { + setIsLengthPassed(tmpAccessCode.length >= 8); + setIsNumberPassed(/\d/.test(tmpAccessCode)); + setIsLowerCasePassed(/[a-z]/.test(tmpAccessCode)); + setIsUpperCasePassed(/[A-Z]/.test(tmpAccessCode)); + setIsSpecialSymbolPassed(/[!@#$%^&*(),.?"’:{}|<>]/.test(tmpAccessCode)); + setIsMatch( + tmpAccessCode.length > 0 && tmpAccessCode === tmpAccessCodeVerify + ); + }, [tmpAccessCode, tmpAccessCodeVerify]); + + return { + tmpAccessCode, + setTmpAccessCode, + isLengthPassed, + isNumberPassed, + isLowerCasePassed, + isUpperCasePassed, + isSpecialSymbolPassed, + isProcessing, + message, + title, + hideMessage, + variant, + isMatch, + setTmpAccessCodeVerify, + tmpAccessCodeVerify, + btnActionDisabled, + handleSetAccessCode, + }; +}; + +export default useCongregationAccessCode; diff --git a/src/features/app_start/vip/congregation_create/congregation_info/index.tsx b/src/features/app_start/vip/congregation_create/congregation_details/index.tsx similarity index 89% rename from src/features/app_start/vip/congregation_create/congregation_info/index.tsx rename to src/features/app_start/vip/congregation_create/congregation_details/index.tsx index 8fd365cecd..4265673e04 100644 --- a/src/features/app_start/vip/congregation_create/congregation_info/index.tsx +++ b/src/features/app_start/vip/congregation_create/congregation_details/index.tsx @@ -1,21 +1,16 @@ import { Box } from '@mui/material'; import { IconAccount, IconError, IconLoading } from '@icons/index'; import { useAppTranslation } from '@hooks/index'; -import useCongregationInfo from './useCongregationInfo'; +import useCongregationDetails from './useCongregationDetails'; import Button from '@components/button'; import Checkbox from '@components/checkbox'; import CongregationSelector from '@components/congregation_selector'; import CountrySelector from '@components/country_selector'; import InfoMessage from '@components/info-message'; import TextField from '@components/textfield'; -import PageHeader from '@features/app_start/shared/page_header'; import VipInfoTip from '@features/app_start/vip/vip_info_tip'; -const CongregationInfo = ({ - setIsCreate, -}: { - setIsCreate: (value: boolean) => void; -}) => { +const CongregationDetails = () => { const { t } = useAppTranslation(); const { @@ -35,7 +30,7 @@ const CongregationInfo = ({ handleToggleApproval, isElderApproved, congregation, - } = useCongregationInfo(); + } = useCongregationDetails(); return ( - setIsCreate(false)} - /> - { +const useCongregationDetails = () => { const { t } = useAppTranslation(); const { hideMessage, message, showMessage, title, variant } = useFeedback(); + const setCurrentStep = useSetRecoilState(congregationCreateStepState); + const settings = useRecoilValue(settingsState); const [isProcessing, setIsProcessing] = useState(false); @@ -141,8 +142,7 @@ const useCongregationInfo = () => { setUserID(result.user_id); - setIsCongAccountCreate(false); - setIsEncryptionCodeOpen(true); + setCurrentStep(1); } catch (err) { setIsProcessing(false); @@ -176,4 +176,4 @@ const useCongregationInfo = () => { }; }; -export default useCongregationInfo; +export default useCongregationDetails; diff --git a/src/features/app_start/vip/congregation_encryption/congregation_master_key/criteria/index.tsx b/src/features/app_start/vip/congregation_create/congregation_master_key/criteria/index.tsx similarity index 100% rename from src/features/app_start/vip/congregation_encryption/congregation_master_key/criteria/index.tsx rename to src/features/app_start/vip/congregation_create/congregation_master_key/criteria/index.tsx diff --git a/src/features/app_start/vip/congregation_create/congregation_master_key/index.tsx b/src/features/app_start/vip/congregation_create/congregation_master_key/index.tsx new file mode 100644 index 0000000000..248816d94c --- /dev/null +++ b/src/features/app_start/vip/congregation_create/congregation_master_key/index.tsx @@ -0,0 +1,180 @@ +import { Box } from '@mui/material'; +import { IconEncryptionKey, IconError, IconLoading } from '@icons/index'; +import { useAppTranslation } from '@hooks/index'; +import useCongregationMasterKey from './useCongregationMasterKey'; +import Button from '@components/button'; +import Criteria from './criteria'; +import InfoMessage from '@components/info-message'; +import TextField from '@components/textfield'; +import Typography from '@components/typography'; +import Markup from '@components/text_markup'; + +const CongregationMasterKey = () => { + const { t } = useAppTranslation(); + + const { + isLengthPassed, + isNumberPassed, + isLowerCasePassed, + isUpperCasePassed, + isSpecialSymbolPassed, + isProcessing, + hideMessage, + message, + title, + variant, + isMatch, + setTmpMasterKey, + setTmpMasterKeyVerify, + tmpMasterKey, + tmpMasterKeyVerify, + btnActionDisabled, + handleSetMasterKey, + } = useCongregationMasterKey(); + + return ( + + + + + + + + {t('tr_encryptionCodeNotice')} + + + + + + setTmpMasterKey(e.target.value)} + startIcon={} + resetHelperPadding={true} + /> + setTmpMasterKeyVerify(e.target.value)} + startIcon={} + resetHelperPadding={true} + helperText={ + + + + + + + + + } + /> + + + + + + + + } + messageHeader={title} + message={message} + onClose={hideMessage} + /> + + + ); +}; + +export default CongregationMasterKey; diff --git a/src/features/app_start/vip/congregation_create/congregation_master_key/useCongregationMasterKey.tsx b/src/features/app_start/vip/congregation_create/congregation_master_key/useCongregationMasterKey.tsx new file mode 100644 index 0000000000..500f2b8e0f --- /dev/null +++ b/src/features/app_start/vip/congregation_create/congregation_master_key/useCongregationMasterKey.tsx @@ -0,0 +1,105 @@ +import { useEffect, useState } from 'react'; +import { useSetRecoilState } from 'recoil'; +import { useAppTranslation } from '@hooks/index'; +import { encryptData, generateKey } from '@services/encryption/index'; +import { displayOnboardingFeedback } from '@services/recoil/app'; +import { getMessageByCode } from '@services/i18n/translation'; +import { apiSetCongregationMasterKey } from '@services/api/congregation'; +import { dbAppSettingsUpdate } from '@services/dexie/settings'; +import { congregationCreateStepState } from '@states/app'; +import useFeedback from '@features/app_start/shared/hooks/useFeedback'; + +const useCongregationMasterKey = () => { + const { t } = useAppTranslation(); + + const { hideMessage, message, showMessage, title, variant } = useFeedback(); + + const setCurrentStep = useSetRecoilState(congregationCreateStepState); + + const [tmpMasterKey, setTmpMasterKey] = useState(''); + const [tmpMasterKeyVerify, setTmpMasterKeyVerify] = useState(''); + const [isLengthPassed, setIsLengthPassed] = useState(false); + const [isNumberPassed, setIsNumberPassed] = useState(false); + const [isLowerCasePassed, setIsLowerCasePassed] = useState(false); + const [isUpperCasePassed, setIsUpperCasePassed] = useState(false); + const [isSpecialSymbolPassed, setIsSpecialSymbolPassed] = useState(false); + const [isMatch, setIsMatch] = useState(false); + const [isProcessing, setIsProcessing] = useState(false); + + const btnActionDisabled = + !isLengthPassed || + !isNumberPassed || + !isLowerCasePassed || + !isUpperCasePassed || + !isSpecialSymbolPassed || + !isMatch; + + const handleSetMasterKey = async () => { + if (isProcessing) return; + hideMessage(); + setIsProcessing(true); + + try { + const encryptionKey = generateKey(); + const encryptedKey = encryptData(encryptionKey, tmpMasterKey); + + const { status, data } = await apiSetCongregationMasterKey(encryptedKey); + + if (status !== 200) { + await displayOnboardingFeedback({ + title: t('tr_errorGeneric'), + message: getMessageByCode(data.message), + }); + showMessage(); + + setIsProcessing(false); + return; + } + + await dbAppSettingsUpdate({ + 'cong_settings.cong_master_key': tmpMasterKey, + }); + + setCurrentStep(2); + } catch (err) { + await displayOnboardingFeedback({ + title: t('tr_errorGeneric'), + message: getMessageByCode(err.message), + }); + showMessage(); + + setIsProcessing(false); + } + }; + + useEffect(() => { + setIsLengthPassed(tmpMasterKey.length >= 16); + setIsNumberPassed(/\d/.test(tmpMasterKey)); + setIsLowerCasePassed(/[a-z]/.test(tmpMasterKey)); + setIsUpperCasePassed(/[A-Z]/.test(tmpMasterKey)); + setIsSpecialSymbolPassed(/[!@#$%^&*(),.?"’:{}|<>]/.test(tmpMasterKey)); + setIsMatch(tmpMasterKey.length > 0 && tmpMasterKey === tmpMasterKeyVerify); + }, [tmpMasterKey, tmpMasterKeyVerify]); + + return { + handleSetMasterKey, + tmpMasterKey, + setTmpMasterKey, + tmpMasterKeyVerify, + setTmpMasterKeyVerify, + isLengthPassed, + isNumberPassed, + isLowerCasePassed, + isUpperCasePassed, + isSpecialSymbolPassed, + isProcessing, + message, + title, + hideMessage, + variant, + isMatch, + btnActionDisabled, + }; +}; + +export default useCongregationMasterKey; diff --git a/src/features/app_start/vip/congregation_create/index.tsx b/src/features/app_start/vip/congregation_create/index.tsx index b72770e2fc..9acd3b76bd 100644 --- a/src/features/app_start/vip/congregation_create/index.tsx +++ b/src/features/app_start/vip/congregation_create/index.tsx @@ -1,19 +1,68 @@ +import { Box, Step, StepLabel, Stepper } from '@mui/material'; +import { useAppTranslation } from '@hooks/index'; import useCongregationCreate from './useCongregationCreate'; -import UserAccountCreated from './account_created'; -import CongregationInfo from './congregation_info'; +import PageHeader from '@features/app_start/shared/page_header'; +import Typography from '@components/typography'; const CongregationCreate = () => { - const { isCreate, setIsCreate } = useCongregationCreate(); + const { t } = useAppTranslation(); + + const { steps, currentStep } = useCongregationCreate(); return ( - <> - {!isCreate && ( - setIsCreate(value)} /> - )} - {isCreate && ( - setIsCreate(value)} /> - )} - + + + + + {steps.map((step, index) => ( + + + + {step.label} + + + + ))} + + + {steps[currentStep].Component} + ); }; diff --git a/src/features/app_start/vip/congregation_create/useCongregationCreate.tsx b/src/features/app_start/vip/congregation_create/useCongregationCreate.tsx index b8a89e067d..f99885a7a2 100644 --- a/src/features/app_start/vip/congregation_create/useCongregationCreate.tsx +++ b/src/features/app_start/vip/congregation_create/useCongregationCreate.tsx @@ -1,9 +1,40 @@ -import { useState } from 'react'; +import { useEffect, useMemo } from 'react'; +import { useRecoilValue } from 'recoil'; +import { useAppTranslation } from '@hooks/index'; +import { congregationCreateStepState } from '@states/app'; +import CongregationAccessCode from './congregation_access_code'; +import CongregationDetails from './congregation_details'; +import CongregationMasterKey from './congregation_master_key'; const useCongregationCreate = () => { - const [isCreate, setIsCreate] = useState(false); + const { t } = useAppTranslation(); - return { isCreate, setIsCreate }; + const currentStep = useRecoilValue(congregationCreateStepState); + + const steps = useMemo(() => { + return [ + { + label: t('tr_congregationDetails'), + Component: , + }, + { label: t('tr_createMasterKey'), Component: }, + { + label: t('tr_createAccessCode'), + Component: , + }, + ]; + }, [t]); + + useEffect(() => { + const stepIconTexts: NodeListOf = + document.querySelectorAll('.MuiStepIcon-text'); + + stepIconTexts.forEach((text) => { + text.classList.add('label-small-medium'); + }); + }, []); + + return { steps, currentStep }; }; export default useCongregationCreate; diff --git a/src/features/app_start/vip/congregation_encryption/congregation_access_code/index.tsx b/src/features/app_start/vip/congregation_encryption/congregation_access_code/index.tsx index 6264a6f448..60fb189a58 100644 --- a/src/features/app_start/vip/congregation_encryption/congregation_access_code/index.tsx +++ b/src/features/app_start/vip/congregation_encryption/congregation_access_code/index.tsx @@ -1,39 +1,27 @@ import { Box } from '@mui/material'; -import { IconEncryptionKey, IconError, IconLoading } from '@icons/index'; +import { IconCongregationAccess, IconError, IconLoading } from '@icons/index'; import { useAppTranslation } from '@hooks/index'; import useCongregationAccessCode from './useCongregationAccessCode'; import PageHeader from '@features/app_start/shared/page_header'; import Button from '@components/button'; import InfoMessage from '@components/info-message'; import TextField from '@components/textfield'; -import Typography from '@components/typography'; import WaitingLoader from '@components/waiting_loader'; -import Criteria from './criteria'; -import VipInfoTip from '@features/app_start/vip/vip_info_tip'; const CongregationAccessCode = () => { const { t } = useAppTranslation(); const { isLoading, - isLengthPassed, - isNumberPassed, - isLowerCasePassed, - isUpperCasePassed, - isSpecialSymbolPassed, isProcessing, hideMessage, message, title, variant, - handleAction, - isSetupCode, - isMatch, setTmpAccessCode, - setTmpAccessCodeVerify, tmpAccessCode, - tmpAccessCodeVerify, btnActionDisabled, + handleValidateAccessCode, } = useCongregationAccessCode(); return ( @@ -60,32 +48,9 @@ const CongregationAccessCode = () => { > - {isSetupCode && ( - - - - {t('tr_congregationAccessCodeNotice')} - - - )} - { > setTmpAccessCode(e.target.value)} - startIcon={} + startIcon={} resetHelperPadding={true} /> - {isSetupCode && ( - setTmpAccessCodeVerify(e.target.value)} - startIcon={} - resetHelperPadding={true} - helperText={ - isSetupCode ? ( - - - - - - - - - ) : null - } - /> - )} - - { const congNumber = useRecoilValue(congNumberState); const [isLoading, setIsLoading] = useState(true); - const [isSetupCode, setIsSetupCode] = useState(true); const [tmpAccessCode, setTmpAccessCode] = useState(''); const [tmpAccessCodeVerify, setTmpAccessCodeVerify] = useState(''); const [isLengthPassed, setIsLengthPassed] = useState(false); - const [isNumberPassed, setIsNumberPassed] = useState(false); - const [isLowerCasePassed, setIsLowerCasePassed] = useState(false); - const [isUpperCasePassed, setIsUpperCasePassed] = useState(false); - const [isSpecialSymbolPassed, setIsSpecialSymbolPassed] = useState(false); - const [isMatch, setIsMatch] = useState(false); const [isProcessing, setIsProcessing] = useState(false); const [congAccessCode, setCongAccessCode] = useState(''); - const btnActionDisabled = - !isLengthPassed || - !isNumberPassed || - !isLowerCasePassed || - !isUpperCasePassed || - !isSpecialSymbolPassed || - (isSetupCode && !isMatch); - - const handleAction = () => { - if (isSetupCode) handleSetAccessCode(); - if (!isSetupCode) handleValidateAccessCode(); - }; - - const handleSetAccessCode = async () => { - if (isProcessing) return; - hideMessage(); - setIsProcessing(true); - - try { - const encryptionKey = generateKey(); - const encryptedKey = encryptData(encryptionKey, tmpAccessCode); - - const { status, data } = await apiSetCongregationAccessCode(encryptedKey); - - if (status !== 200) { - await displayOnboardingFeedback({ - title: t('tr_errorGeneric'), - message: getMessageByCode(data.message), - }); - showMessage(); - - setIsProcessing(false); - return; - } - - await dbAppSettingsUpdate({ - 'cong_settings.cong_access_code': tmpAccessCode, - }); - } catch (err) { - await displayOnboardingFeedback({ - title: t('tr_errorGeneric'), - message: getMessageByCode(err.message), - }); - showMessage(); - - setIsProcessing(false); - } - }; + const btnActionDisabled = !isLengthPassed; const handleValidateAccessCode = async () => { if (isProcessing) return; @@ -137,7 +78,6 @@ const useCongregationAccessCode = () => { await setCongID(result.cong_id); setCongAccessCode(result.cong_access_code); - setIsSetupCode(result.cong_access_code.length === 0); setIsLoading(false); }; @@ -147,32 +87,19 @@ const useCongregationAccessCode = () => { useEffect(() => { setIsLengthPassed(tmpAccessCode.length >= 8); - setIsNumberPassed(/\d/.test(tmpAccessCode)); - setIsLowerCasePassed(/[a-z]/.test(tmpAccessCode)); - setIsUpperCasePassed(/[A-Z]/.test(tmpAccessCode)); - setIsSpecialSymbolPassed(/[!@#$%^&*(),.?"’:{}|<>]/.test(tmpAccessCode)); - setIsMatch( - tmpAccessCode.length > 0 && tmpAccessCode === tmpAccessCodeVerify - ); }, [tmpAccessCode, tmpAccessCodeVerify]); return { isLoading, - isSetupCode, tmpAccessCode, setTmpAccessCode, isLengthPassed, - isNumberPassed, - isLowerCasePassed, - isUpperCasePassed, - isSpecialSymbolPassed, isProcessing, - handleAction, + handleValidateAccessCode, message, title, hideMessage, variant, - isMatch, setTmpAccessCodeVerify, tmpAccessCodeVerify, btnActionDisabled, diff --git a/src/features/app_start/vip/congregation_encryption/congregation_master_key/index.tsx b/src/features/app_start/vip/congregation_encryption/congregation_master_key/index.tsx index 7a0bbcb213..2b2c5f7a9f 100644 --- a/src/features/app_start/vip/congregation_encryption/congregation_master_key/index.tsx +++ b/src/features/app_start/vip/congregation_encryption/congregation_master_key/index.tsx @@ -1,38 +1,27 @@ import { Box } from '@mui/material'; -import PageHeader from '@features/app_start/shared/page_header'; +import { IconEncryptionKey, IconError, IconLoading } from '@icons/index'; +import { useAppTranslation } from '@hooks/index'; +import useCongregationMasterKey from './useCongregationMasterKey'; import Button from '@components/button'; import InfoMessage from '@components/info-message'; +import PageHeader from '@features/app_start/shared/page_header'; import TextField from '@components/textfield'; -import Typography from '@components/typography'; import WaitingLoader from '@components/waiting_loader'; -import Criteria from './criteria'; -import { IconEncryptionKey, IconError, IconLoading } from '@icons/index'; -import { useAppTranslation } from '@hooks/index'; -import useCongregationMasterKey from './useCongregationMasterKey'; const CongregationEncryption = () => { const { t } = useAppTranslation(); const { - isLoading, - isLengthPassed, - isNumberPassed, - isLowerCasePassed, - isUpperCasePassed, - isSpecialSymbolPassed, isProcessing, hideMessage, message, title, variant, - handleAction, - isSetupCode, - isMatch, setTmpMasterKey, - setTmpMasterKeyVerify, tmpMasterKey, - tmpMasterKeyVerify, btnActionDisabled, + isLoading, + handleValidateMasterKey, } = useCongregationMasterKey(); return ( @@ -59,32 +48,9 @@ const CongregationEncryption = () => { > - {isSetupCode && ( - - - - {t('tr_encryptionCodeNotice')} - - - )} - { > { startIcon={} resetHelperPadding={true} /> - {isSetupCode && ( - setTmpMasterKeyVerify(e.target.value)} - startIcon={} - resetHelperPadding={true} - helperText={ - isSetupCode ? ( - - - - - - - - - ) : null - } - /> - )} diff --git a/src/features/app_start/vip/congregation_encryption/congregation_master_key/useCongregationMasterKey.tsx b/src/features/app_start/vip/congregation_encryption/congregation_master_key/useCongregationMasterKey.tsx index 9a24a8e88c..94e73986de 100644 --- a/src/features/app_start/vip/congregation_encryption/congregation_master_key/useCongregationMasterKey.tsx +++ b/src/features/app_start/vip/congregation_encryption/congregation_master_key/useCongregationMasterKey.tsx @@ -4,15 +4,9 @@ import { handleDeleteDatabase } from '@services/app'; import { useAppTranslation, useFirebaseAuth } from '@hooks/index'; import { userSignOut } from '@services/firebase/auth'; import useFeedback from '@features/app_start/shared/hooks/useFeedback'; -import { - decryptData, - encryptData, - generateKey, -} from '@services/encryption/index'; +import { decryptData } from '@services/encryption/index'; import { apiValidateMe } from '@services/api/user'; import { displayOnboardingFeedback, setCongID } from '@services/recoil/app'; -import { getMessageByCode } from '@services/i18n/translation'; -import { apiSetCongregationMasterKey } from '@services/api/congregation'; import { dbAppSettingsUpdate } from '@services/dexie/settings'; import { congNumberState } from '@states/settings'; @@ -26,66 +20,13 @@ const useCongregationMasterKey = () => { const congNumber = useRecoilValue(congNumberState); const [isLoading, setIsLoading] = useState(true); - const [isSetupCode, setIsSetupCode] = useState(true); const [tmpMasterKey, setTmpMasterKey] = useState(''); const [tmpMasterKeyVerify, setTmpMasterKeyVerify] = useState(''); const [isLengthPassed, setIsLengthPassed] = useState(false); - const [isNumberPassed, setIsNumberPassed] = useState(false); - const [isLowerCasePassed, setIsLowerCasePassed] = useState(false); - const [isUpperCasePassed, setIsUpperCasePassed] = useState(false); - const [isSpecialSymbolPassed, setIsSpecialSymbolPassed] = useState(false); - const [isMatch, setIsMatch] = useState(false); const [isProcessing, setIsProcessing] = useState(false); const [congMasterKey, setCongMasterKey] = useState(''); - const btnActionDisabled = - !isLengthPassed || - !isNumberPassed || - !isLowerCasePassed || - !isUpperCasePassed || - !isSpecialSymbolPassed || - (isSetupCode && !isMatch); - - const handleAction = () => { - if (isSetupCode) handleSetMasterKey(); - if (!isSetupCode) handleValidateMasterKey(); - }; - - const handleSetMasterKey = async () => { - if (isProcessing) return; - hideMessage(); - setIsProcessing(true); - - try { - const encryptionKey = generateKey(); - const encryptedKey = encryptData(encryptionKey, tmpMasterKey); - - const { status, data } = await apiSetCongregationMasterKey(encryptedKey); - - if (status !== 200) { - await displayOnboardingFeedback({ - title: t('tr_errorGeneric'), - message: getMessageByCode(data.message), - }); - showMessage(); - - setIsProcessing(false); - return; - } - - await dbAppSettingsUpdate({ - 'cong_settings.cong_master_key': tmpMasterKey, - }); - } catch (err) { - await displayOnboardingFeedback({ - title: t('tr_errorGeneric'), - message: getMessageByCode(err.message), - }); - showMessage(); - - setIsProcessing(false); - } - }; + const btnActionDisabled = !isLengthPassed; const handleValidateMasterKey = async () => { if (isProcessing) return; @@ -135,10 +76,7 @@ const useCongregationMasterKey = () => { } await setCongID(result.cong_id); - setCongMasterKey(result.cong_master_key); - setIsSetupCode(result.cong_master_key.length === 0); - setIsLoading(false); }; @@ -147,32 +85,21 @@ const useCongregationMasterKey = () => { useEffect(() => { setIsLengthPassed(tmpMasterKey.length >= 16); - setIsNumberPassed(/\d/.test(tmpMasterKey)); - setIsLowerCasePassed(/[a-z]/.test(tmpMasterKey)); - setIsUpperCasePassed(/[A-Z]/.test(tmpMasterKey)); - setIsSpecialSymbolPassed(/[!@#$%^&*(),.?"’:{}|<>]/.test(tmpMasterKey)); - setIsMatch(tmpMasterKey.length > 0 && tmpMasterKey === tmpMasterKeyVerify); }, [tmpMasterKey, tmpMasterKeyVerify]); return { isLoading, - isSetupCode, tmpMasterKey, setTmpMasterKey, tmpMasterKeyVerify, setTmpMasterKeyVerify, isLengthPassed, - isNumberPassed, - isLowerCasePassed, - isUpperCasePassed, - isSpecialSymbolPassed, isProcessing, - handleAction, + handleValidateMasterKey, message, title, hideMessage, variant, - isMatch, btnActionDisabled, }; }; diff --git a/src/features/app_start/vip/oauth/button_base/useButtonBase.tsx b/src/features/app_start/vip/oauth/button_base/useButtonBase.tsx index ee209cf6ec..145a71cdb7 100644 --- a/src/features/app_start/vip/oauth/button_base/useButtonBase.tsx +++ b/src/features/app_start/vip/oauth/button_base/useButtonBase.tsx @@ -2,10 +2,10 @@ import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil'; import { currentProviderState, isAuthProcessingState, - isCongAccountCreateState, isEmailAuthState, isEncryptionCodeOpenState, isUnauthorizedRoleState, + isUserAccountCreatedState, isUserMfaVerifyState, isUserSignInState, tokenDevState, @@ -33,7 +33,7 @@ const useButtonBase = ({ provider, isEmail }) => { const [isUserSignIn, setIsUserSignIn] = useRecoilState(isUserSignInState); const setUserMfaVerify = useSetRecoilState(isUserMfaVerifyState); - const setIsCongAccountCreate = useSetRecoilState(isCongAccountCreateState); + const setIsUserAccountCreated = useSetRecoilState(isUserAccountCreatedState); const setIsUnauthorizedRole = useSetRecoilState(isUnauthorizedRoleState); const setIsEncryptionCodeOpen = useSetRecoilState(isEncryptionCodeOpenState); const setIsEmailAuth = useSetRecoilState(isEmailAuthState); @@ -107,14 +107,14 @@ const useButtonBase = ({ provider, isEmail }) => { if (nextStep.isVerifyMFA) { setTokenDev(code); setIsUserSignIn(false); - setIsCongAccountCreate(false); + setIsUserAccountCreated(false); setIsUnauthorizedRole(false); setUserMfaVerify(true); } if (nextStep.createCongregation) { setIsUserSignIn(false); - setIsCongAccountCreate(true); + setIsUserAccountCreated(true); } if (nextStep.encryption) { @@ -162,7 +162,7 @@ const useButtonBase = ({ provider, isEmail }) => { const handleUnauthorizedUser = () => { setUserMfaVerify(true); - setIsCongAccountCreate(false); + setIsUserAccountCreated(false); setIsUnauthorizedRole(true); }; diff --git a/src/features/app_start/vip/startup/index.tsx b/src/features/app_start/vip/startup/index.tsx index be2e296e83..49aca4382b 100644 --- a/src/features/app_start/vip/startup/index.tsx +++ b/src/features/app_start/vip/startup/index.tsx @@ -1,28 +1,34 @@ +import useStartup from './useStartup'; import CongregationCreate from '../congregation_create'; import CongregationEncryption from '../congregation_encryption'; import EmailAuth from '../email_auth'; import EmailLinkAuthentication from '../email_link_authentication'; import Signin from '../signin'; import TermsUse from '../terms_use'; +import UserAccountCreated from '../user_account_created'; import VerifyMFA from '../verify_mfa'; -import useStartup from './useStartup'; +import WaitingLoader from '@components/waiting_loader'; const VipStartup = () => { const { isUserSignIn, isUserMfaVerify, - isCongAccountCreate, isEmailAuth, isEmailLinkAuth, isEncryptionCodeOpen, + isUserAccountCreated, + isCongCreate, + isLoading, } = useStartup(); return ( <> + {!isCongCreate && !isEncryptionCodeOpen && isLoading && } {isUserSignIn && } {isUserMfaVerify && } - {isCongAccountCreate && } + {isUserAccountCreated && } + {isCongCreate && } {isEmailAuth && } {isEmailLinkAuth && } {isEncryptionCodeOpen && } diff --git a/src/features/app_start/vip/startup/useStartup.tsx b/src/features/app_start/vip/startup/useStartup.tsx index 39e42dbc3f..fba292ec0e 100644 --- a/src/features/app_start/vip/startup/useStartup.tsx +++ b/src/features/app_start/vip/startup/useStartup.tsx @@ -1,13 +1,15 @@ -import { useCallback, useEffect } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { useSearchParams } from 'react-router-dom'; import { useRecoilValue, useSetRecoilState } from 'recoil'; -import { useFirebaseAuth } from '@hooks/index'; import { + congIDState, + congregationCreateStepState, cookiesConsentState, isCongAccountCreateState, isEmailAuthState, isEmailLinkAuthenticateState, isEncryptionCodeOpenState, + isUserAccountCreatedState, isUserMfaVerifyState, isUserSignInState, offlineOverrideState, @@ -26,27 +28,37 @@ import { congNameState, congAccessCodeState, congRoleState, + congMasterKeyState, + congNumberState, } from '@states/settings'; -import { APP_ROLES } from '@constants/index'; -import { loadApp, runUpdater } from '@services/app'; +import { APP_ROLES, VIP_ROLES } from '@constants/index'; +import { handleDeleteDatabase, loadApp, runUpdater } from '@services/app'; +import { apiValidateMe } from '@services/api/user'; +import { userSignOut } from '@services/firebase/auth'; const useStartup = () => { - const { isAuthenticated } = useFirebaseAuth(); - const [searchParams] = useSearchParams(); const setCookiesConsent = useSetRecoilState(cookiesConsentState); + const setCongCreate = useSetRecoilState(isCongAccountCreateState); + const setCurrentStep = useSetRecoilState(congregationCreateStepState); + const setCongID = useSetRecoilState(congIDState); const isEmailLinkAuth = useRecoilValue(isEmailLinkAuthenticateState); const isEmailAuth = useRecoilValue(isEmailAuthState); const isUserSignIn = useRecoilValue(isUserSignInState); const isUserMfaVerify = useRecoilValue(isUserMfaVerifyState); - const isCongAccountCreate = useRecoilValue(isCongAccountCreateState); + const isUserAccountCreated = useRecoilValue(isUserAccountCreatedState); const isOfflineOverride = useRecoilValue(offlineOverrideState); const congName = useRecoilValue(congNameState); const congRole = useRecoilValue(congRoleState); const isEncryptionCodeOpen = useRecoilValue(isEncryptionCodeOpenState); const congAccessCode = useRecoilValue(congAccessCodeState); + const isCongCreate = useRecoilValue(isCongAccountCreateState); + const congMasterKey = useRecoilValue(congMasterKeyState); + const congNumber = useRecoilValue(congNumberState); + + const [isLoading, setIsLoading] = useState(true); const showSignin = useCallback(() => { setIsUserSignIn(true); @@ -55,30 +67,37 @@ const useStartup = () => { setUserMfaSetup(false); }, []); - const runNotAuthenticatedStep = useCallback(async () => { + const runStartupCheck = useCallback(async () => { + setIsLoading(true); + if (isOfflineOverride) { + setIsLoading(false); showSignin(); return; } if (congName.length === 0) { + setIsLoading(false); showSignin(); return; } const approvedRole = congRole.some((role) => APP_ROLES.includes(role)); + const masterKeyNeeded = congRole.some((role) => VIP_ROLES.includes(role)); if (!approvedRole) { + setIsLoading(false); showSignin(); return; } - if (congAccessCode.length === 0) { - setIsEncryptionCodeOpen(true); - return; - } + const allowOpen = + (masterKeyNeeded && + congMasterKey.length > 0 && + congAccessCode.length > 0) || + (!masterKeyNeeded && congAccessCode.length > 0); - if (congAccessCode.length > 0) { + if (allowOpen) { setIsSetup(false); await loadApp(); await runUpdater(); @@ -86,8 +105,67 @@ const useStartup = () => { setIsSetup(false); setIsAppLoad(false); }, 1000); + + return; + } + + const { status, result } = await apiValidateMe(); + + if (status === 403) { + await userSignOut(); + return; + } + + // congregation not found -> user not authorized and delete local data + if (status === 404) { + await handleDeleteDatabase(); + return; + } + + if (status === 200) { + if (congNumber.length > 0 && result.cong_number !== congNumber) { + await handleDeleteDatabase(); + return; + } } - }, [isOfflineOverride, congName, congRole, showSignin, congAccessCode]); + + const remoteMasterKey = result.cong_master_key; + const remoteAccessCode = result.cong_access_code; + + if (remoteMasterKey.length === 0 || remoteAccessCode.length === 0) { + setCongID(result.cong_id); + + if (masterKeyNeeded && remoteMasterKey.length === 0) { + setCurrentStep(1); + } + + if ( + masterKeyNeeded && + remoteMasterKey.length > 0 && + remoteAccessCode.length === 0 + ) { + setCurrentStep(2); + } + + setIsLoading(false); + setCongCreate(true); + return; + } + + if (congAccessCode.length === 0) { + setIsEncryptionCodeOpen(true); + } + + setIsLoading(false); + }, [ + isOfflineOverride, + congName, + congRole, + showSignin, + congAccessCode, + congMasterKey, + congNumber, + ]); useEffect(() => { const checkLink = async () => { @@ -99,8 +177,8 @@ const useStartup = () => { }, [searchParams]); useEffect(() => { - if (!isAuthenticated) runNotAuthenticatedStep(); - }, [isAuthenticated, runNotAuthenticatedStep]); + runStartupCheck(); + }, [runStartupCheck]); useEffect(() => { const checkCookiesConsent = async () => { @@ -115,9 +193,11 @@ const useStartup = () => { isEmailAuth, isUserSignIn, isUserMfaVerify, - isCongAccountCreate, + isUserAccountCreated, isEmailLinkAuth, isEncryptionCodeOpen, + isCongCreate, + isLoading, }; }; diff --git a/src/features/app_start/vip/terms_use/useTermsUse.tsx b/src/features/app_start/vip/terms_use/useTermsUse.tsx index b9c711c38f..ac7b729275 100644 --- a/src/features/app_start/vip/terms_use/useTermsUse.tsx +++ b/src/features/app_start/vip/terms_use/useTermsUse.tsx @@ -19,7 +19,7 @@ const useTermsUse = () => { const font = params.get('font') || 'Inter'; localStorage.setItem('userConsent', 'accept'); - localStorage.setItem('app_lang', lang); + localStorage.setItem('ui_lang', lang); localStorage.setItem('app_font', font); setCookiesConsent(true); diff --git a/src/features/app_start/vip/congregation_create/account_created/index.tsx b/src/features/app_start/vip/user_account_created/index.tsx similarity index 81% rename from src/features/app_start/vip/congregation_create/account_created/index.tsx rename to src/features/app_start/vip/user_account_created/index.tsx index 537219369a..f883bfbe96 100644 --- a/src/features/app_start/vip/congregation_create/account_created/index.tsx +++ b/src/features/app_start/vip/user_account_created/index.tsx @@ -1,16 +1,15 @@ import { Box } from '@mui/material'; +import { useAppTranslation } from '@hooks/index'; +import useUserAccountCreated from './useUserAccountCreated'; import Button from '@components/button'; -import Typography from '@components/typography'; import PageHeader from '@features/app_start/shared/page_header'; -import { useAppTranslation } from '@hooks/index'; +import Typography from '@components/typography'; -const UserAccountCreated = ({ - setIsCreate, -}: { - setIsCreate: (value: boolean) => void; -}) => { +const UserAccountCreated = () => { const { t } = useAppTranslation(); + const { handleCreateCongregation } = useUserAccountCreated(); + return ( {t('tr_congregationCreateLabel')} - diff --git a/src/features/app_start/vip/user_account_created/useUserAccountCreated.tsx b/src/features/app_start/vip/user_account_created/useUserAccountCreated.tsx new file mode 100644 index 0000000000..9cc1bdef88 --- /dev/null +++ b/src/features/app_start/vip/user_account_created/useUserAccountCreated.tsx @@ -0,0 +1,19 @@ +import { useSetRecoilState } from 'recoil'; +import { + isCongAccountCreateState, + isUserAccountCreatedState, +} from '@states/app'; + +const useUserAccountCreated = () => { + const setCongCreate = useSetRecoilState(isCongAccountCreateState); + const setUserCreated = useSetRecoilState(isUserAccountCreatedState); + + const handleCreateCongregation = () => { + setUserCreated(false); + setCongCreate(true); + }; + + return { handleCreateCongregation }; +}; + +export default useUserAccountCreated; diff --git a/src/features/app_start/vip/vip_info_tip/index.tsx b/src/features/app_start/vip/vip_info_tip/index.tsx index b32f04efab..c89a4f0454 100644 --- a/src/features/app_start/vip/vip_info_tip/index.tsx +++ b/src/features/app_start/vip/vip_info_tip/index.tsx @@ -12,32 +12,34 @@ const VipInfoTip = (props: VipInfoTipProps) => { return ( <> - - + {messageShown && ( + + + + + + + + )} - - - - - + ); }; diff --git a/src/features/congregation/settings/congregation_basic/hour_format/index.tsx b/src/features/congregation/settings/congregation_basic/hour_format/index.tsx new file mode 100644 index 0000000000..81e0e01b90 --- /dev/null +++ b/src/features/congregation/settings/congregation_basic/hour_format/index.tsx @@ -0,0 +1,22 @@ +import { useAppTranslation, useCurrentUser } from '@hooks/index'; +import useHourFormat from './useHourFormat'; +import SwitchWithLabel from '@components/switch_with_label'; + +const HourFormat = () => { + const { t } = useAppTranslation(); + + const { isAdmin } = useCurrentUser(); + + const { handleHour24Toggle, hour24 } = useHourFormat(); + + return ( + + ); +}; + +export default HourFormat; diff --git a/src/features/congregation/settings/congregation_basic/hour_format/useHourFormat.tsx b/src/features/congregation/settings/congregation_basic/hour_format/useHourFormat.tsx new file mode 100644 index 0000000000..99ba03b1dd --- /dev/null +++ b/src/features/congregation/settings/congregation_basic/hour_format/useHourFormat.tsx @@ -0,0 +1,36 @@ +import { useEffect, useState } from 'react'; +import { useRecoilValue } from 'recoil'; +import { settingsState, userDataViewState } from '@states/settings'; +import { dbAppSettingsUpdate } from '@services/dexie/settings'; + +const useHourFormat = () => { + const settings = useRecoilValue(settingsState); + const dataView = useRecoilValue(userDataViewState); + + const [hour24, setHour24] = useState(false); + + const handleHour24Toggle = async () => { + const hourFormat = structuredClone( + settings.cong_settings.format_24h_enabled + ); + const current = hourFormat.find((record) => record.type === dataView); + + current.value = !hour24; + current.updatedAt = new Date().toISOString(); + + await dbAppSettingsUpdate({ + 'cong_settings.format_24h_enabled': hourFormat, + }); + }; + + useEffect(() => { + const hourFormat = settings.cong_settings.format_24h_enabled.find( + (record) => record.type === dataView + ); + setHour24(hourFormat?.value ?? false); + }, [settings, dataView]); + + return { hour24, handleHour24Toggle }; +}; + +export default useHourFormat; diff --git a/src/features/congregation/settings/congregation_basic/index.tsx b/src/features/congregation/settings/congregation_basic/index.tsx index 7d33fbf6b8..80562e4ed8 100644 --- a/src/features/congregation/settings/congregation_basic/index.tsx +++ b/src/features/congregation/settings/congregation_basic/index.tsx @@ -10,9 +10,9 @@ import { CardSectionHeader, } from '../shared_styles'; import useCongregationBasic from './useCongregationBasic'; +import HourFormat from './hour_format'; import MeetingSettings from '../meeting_settings'; import MeetingAttendance from './meeting_attendance'; -import SwitchWithLabel from '@components/switch_with_label'; import TextField from '@components/textfield'; const CongregationBasic = () => { @@ -30,8 +30,6 @@ const CongregationBasic = () => { address, handleAddressChange, handleAddressSave, - hour24, - handleHour24Toggle, } = useCongregationBasic(); return ( @@ -85,12 +83,7 @@ const CongregationBasic = () => { gap: '16px', }} > - + diff --git a/src/features/congregation/settings/congregation_basic/useCongregationBasic.tsx b/src/features/congregation/settings/congregation_basic/useCongregationBasic.tsx index a7814c7d73..5141342788 100644 --- a/src/features/congregation/settings/congregation_basic/useCongregationBasic.tsx +++ b/src/features/congregation/settings/congregation_basic/useCongregationBasic.tsx @@ -16,7 +16,6 @@ const useCongregationBasic = () => { const [circuitNumber, setCircuitNumber] = useState(''); const [address, setAddress] = useState(''); - const [hour24, setHour24] = useState(false); const handleCircuitChange = (value: string) => setCircuitNumber(value); @@ -58,20 +57,6 @@ const useCongregationBasic = () => { }); }; - const handleHour24Toggle = async () => { - const hourFormat = structuredClone( - settings.cong_settings.format_24h_enabled - ); - const current = hourFormat.find((record) => record.type === dataView); - - current.value = !hour24; - current.updatedAt = new Date().toISOString(); - - await dbAppSettingsUpdate({ - 'cong_settings.format_24h_enabled': hourFormat, - }); - }; - useEffect(() => { const currentCircuit = settings.cong_settings.cong_circuit.find( (record) => record.type === dataView @@ -79,11 +64,6 @@ const useCongregationBasic = () => { setCircuitNumber(currentCircuit?.value || ''); setAddress(settings.cong_settings.cong_location.address); - - const hourFormat = settings.cong_settings.format_24h_enabled.find( - (record) => record.type === dataView - ); - setHour24(hourFormat?.value ?? false); }, [settings, dataView]); return { @@ -94,8 +74,6 @@ const useCongregationBasic = () => { address, handleAddressChange, handleAddressSave, - handleHour24Toggle, - hour24, }; }; diff --git a/src/features/congregation/settings/meeting_forms/date_format/index.tsx b/src/features/congregation/settings/meeting_forms/date_format/index.tsx new file mode 100644 index 0000000000..2a25f5e16e --- /dev/null +++ b/src/features/congregation/settings/meeting_forms/date_format/index.tsx @@ -0,0 +1,38 @@ +import { formatDate } from '@services/dateformat'; +import { useAppTranslation, useCurrentUser } from '@hooks/index'; +import useDateFormat from './useDateFormat'; +import MenuItem from '@components/menuitem'; +import Select from '@components/select'; +import Typography from '@components/typography'; + +const DateFormat = () => { + const { t } = useAppTranslation(); + + const { isMidweekEditor, isWeekendEditor, isPublicTalkCoordinator } = + useCurrentUser(); + + const { + handleShortDateFormatChange, + shortDateFormat, + shortDateFormatOptions, + } = useDateFormat(); + + return ( + + ); +}; + +export default DateFormat; diff --git a/src/features/congregation/settings/meeting_forms/date_format/useDateFormat.tsx b/src/features/congregation/settings/meeting_forms/date_format/useDateFormat.tsx new file mode 100644 index 0000000000..1c2331de2c --- /dev/null +++ b/src/features/congregation/settings/meeting_forms/date_format/useDateFormat.tsx @@ -0,0 +1,61 @@ +import { useEffect, useMemo, useState } from 'react'; +import { useRecoilValue, useSetRecoilState } from 'recoil'; +import { settingsState, userDataViewState } from '@states/settings'; +import { dbAppSettingsUpdate } from '@services/dexie/settings'; +import { schedulesBuildHistoryList } from '@services/app/schedules'; +import { assignmentsHistoryState } from '@states/schedules'; + +const useDateFormat = () => { + const setAssignmentsHistory = useSetRecoilState(assignmentsHistoryState); + + const settings = useRecoilValue(settingsState); + const dataView = useRecoilValue(userDataViewState); + + const [shortDateFormat, setShortDateFormat] = useState('MM/dd/yyyy'); + + const shortDateFormatOptions = useMemo(() => { + return [ + 'MM/dd/yyyy', + 'dd/MM/yyyy', + 'MM.dd.yyyy', + 'dd.MM.yyyy', + 'yyyy-MM-dd', + 'yyyy-dd-MM', + ]; + }, []); + + const handleShortDateFormatChange = async (value: string) => { + const shortDateFormat = structuredClone( + settings.cong_settings.short_date_format + ); + + const current = shortDateFormat.find((record) => record.type === dataView); + + current.value = value; + current.updatedAt = new Date().toISOString(); + + await dbAppSettingsUpdate({ + 'cong_settings.short_date_format': shortDateFormat, + }); + + // reload assignments history because of date format change + const history = await schedulesBuildHistoryList(); + setAssignmentsHistory(history); + }; + + useEffect(() => { + const dateFormat = settings.cong_settings.short_date_format.find( + (record) => record.type === dataView + ); + + setShortDateFormat(dateFormat.value); + }, [settings, dataView]); + + return { + shortDateFormat, + handleShortDateFormatChange, + shortDateFormatOptions, + }; +}; + +export default useDateFormat; diff --git a/src/features/congregation/settings/meeting_forms/index.tsx b/src/features/congregation/settings/meeting_forms/index.tsx index d90efc18ab..e62ab33e2e 100644 --- a/src/features/congregation/settings/meeting_forms/index.tsx +++ b/src/features/congregation/settings/meeting_forms/index.tsx @@ -1,16 +1,17 @@ import { Stack } from '@mui/material'; -import { formatDate } from '@services/dateformat'; import { useAppTranslation, useCurrentUser } from '@hooks/index'; import { CardSection, CardSectionContent, CardSectionHeader, } from '../shared_styles'; -import { FullnameOption, SourceFrequency } from '@definition/settings'; +import { SourceFrequency } from '@definition/settings'; import useMeetingForms from './useMeetingForms'; +import DateFormat from './date_format'; import DisplayName from './display_name'; import MenuItem from '@components/menuitem'; import MidweekExactDate from './midweek_exact_date'; +import NameFormat from './name_format'; import Select from '@components/select'; import SwitchWithLabel from '@components/switch_with_label'; import Typography from '@components/typography'; @@ -26,11 +27,6 @@ const MeetingForms = () => { handleSourceAutoUpdateToggle, handleSourceUpdateFrequencyChange, sourceUpdateFrequency, - fullnameOption, - handleFullnameOptionChange, - handleShortDateFormatChange, - shortDateFormat, - shortDateFormatOptions, } = useMeetingForms(); return ( @@ -76,40 +72,9 @@ const MeetingForms = () => { - + - + diff --git a/src/features/congregation/settings/meeting_forms/name_format/index.tsx b/src/features/congregation/settings/meeting_forms/name_format/index.tsx new file mode 100644 index 0000000000..de766cc7b1 --- /dev/null +++ b/src/features/congregation/settings/meeting_forms/name_format/index.tsx @@ -0,0 +1,35 @@ +import { useAppTranslation, useCurrentUser } from '@hooks/index'; +import { FullnameOption } from '@definition/settings'; +import useNameFormat from './useNameFormat'; +import MenuItem from '@components/menuitem'; +import Select from '@components/select'; +import Typography from '@components/typography'; + +const NameFormat = () => { + const { t } = useAppTranslation(); + + const { isMidweekEditor, isWeekendEditor, isPublicTalkCoordinator } = + useCurrentUser(); + + const { fullnameOption, handleFullnameOptionChange } = useNameFormat(); + + return ( + + ); +}; + +export default NameFormat; diff --git a/src/features/congregation/settings/meeting_forms/name_format/useNameFormat.tsx b/src/features/congregation/settings/meeting_forms/name_format/useNameFormat.tsx new file mode 100644 index 0000000000..9f473da768 --- /dev/null +++ b/src/features/congregation/settings/meeting_forms/name_format/useNameFormat.tsx @@ -0,0 +1,43 @@ +import { useEffect, useState } from 'react'; +import { useRecoilValue } from 'recoil'; +import { settingsState, userDataViewState } from '@states/settings'; +import { dbAppSettingsUpdate } from '@services/dexie/settings'; +import { FullnameOption } from '@definition/settings'; + +const useNameFormat = () => { + const settings = useRecoilValue(settingsState); + const dataView = useRecoilValue(userDataViewState); + const [fullnameOption, setFullnameOption] = useState( + FullnameOption.FIRST_BEFORE_LAST + ); + + const handleFullnameOptionChange = async (value: FullnameOption) => { + const fullnameOption = structuredClone( + settings.cong_settings.fullname_option + ); + + const current = fullnameOption.find((record) => record.type === dataView); + + current.value = value; + current.updatedAt = new Date().toISOString(); + + await dbAppSettingsUpdate({ + 'cong_settings.fullname_option': fullnameOption, + }); + }; + + useEffect(() => { + const fullname = settings.cong_settings.fullname_option.find( + (record) => record.type === dataView + ); + + setFullnameOption(fullname.value); + }, [settings, dataView]); + + return { + fullnameOption, + handleFullnameOptionChange, + }; +}; + +export default useNameFormat; diff --git a/src/features/congregation/settings/meeting_forms/useMeetingForms.tsx b/src/features/congregation/settings/meeting_forms/useMeetingForms.tsx index 29e600de8e..45736b9371 100644 --- a/src/features/congregation/settings/meeting_forms/useMeetingForms.tsx +++ b/src/features/congregation/settings/meeting_forms/useMeetingForms.tsx @@ -1,14 +1,10 @@ import { useEffect, useState } from 'react'; -import { useRecoilValue, useSetRecoilState } from 'recoil'; +import { useRecoilValue } from 'recoil'; import { settingsState, userDataViewState } from '@states/settings'; import { dbAppSettingsUpdate } from '@services/dexie/settings'; -import { FullnameOption, SourceFrequency } from '@definition/settings'; -import { schedulesBuildHistoryList } from '@services/app/schedules'; -import { assignmentsHistoryState } from '@states/schedules'; +import { SourceFrequency } from '@definition/settings'; const useMeetingForms = () => { - const setAssignmentsHistory = useSetRecoilState(assignmentsHistoryState); - const settings = useRecoilValue(settingsState); const dataView = useRecoilValue(userDataViewState); @@ -16,19 +12,6 @@ const useMeetingForms = () => { const [sourceUpdateFrequency, setSourceUpdateFrequency] = useState( SourceFrequency.WEEKLY ); - const [fullnameOption, setFullnameOption] = useState( - FullnameOption.FIRST_BEFORE_LAST - ); - const [shortDateFormat, setShortDateFormat] = useState('MM/dd/yyyy'); - - const shortDateFormatOptions = [ - 'MM/dd/yyyy', - 'dd/MM/yyyy', - 'MM.dd.yyyy', - 'dd.MM.yyyy', - 'yyyy-MM-dd', - 'yyyy-dd-MM', - ]; const handleSourceAutoUpdateToggle = async () => { const sourceAutoUpdateEnable = structuredClone( @@ -57,40 +40,6 @@ const useMeetingForms = () => { }); }; - const handleFullnameOptionChange = async (value: FullnameOption) => { - const fullnameOption = structuredClone( - settings.cong_settings.fullname_option - ); - - const current = fullnameOption.find((record) => record.type === dataView); - - current.value = value; - current.updatedAt = new Date().toISOString(); - - await dbAppSettingsUpdate({ - 'cong_settings.fullname_option': fullnameOption, - }); - }; - - const handleShortDateFormatChange = async (value: string) => { - const shortDateFormat = structuredClone( - settings.cong_settings.short_date_format - ); - - const current = shortDateFormat.find((record) => record.type === dataView); - - current.value = value; - current.updatedAt = new Date().toISOString(); - - await dbAppSettingsUpdate({ - 'cong_settings.short_date_format': shortDateFormat, - }); - - // reload assignments history because of date format change - const history = await schedulesBuildHistoryList(); - setAssignmentsHistory(history); - }; - useEffect(() => { setSourceAutoUpdate( settings.cong_settings.source_material_auto_import.enabled.value @@ -99,18 +48,6 @@ const useMeetingForms = () => { setSourceUpdateFrequency( settings.cong_settings.source_material_auto_import.frequency.value ); - - const fullname = settings.cong_settings.fullname_option.find( - (record) => record.type === dataView - ); - - setFullnameOption(fullname.value); - - const dateFormat = settings.cong_settings.short_date_format.find( - (record) => record.type === dataView - ); - - setShortDateFormat(dateFormat.value); }, [settings, dataView]); return { @@ -118,11 +55,6 @@ const useMeetingForms = () => { handleSourceAutoUpdateToggle, sourceUpdateFrequency, handleSourceUpdateFrequencyChange, - fullnameOption, - handleFullnameOptionChange, - shortDateFormat, - handleShortDateFormatChange, - shortDateFormatOptions, }; }; diff --git a/src/features/dashboard/initial_setup/basic_settings/index.tsx b/src/features/dashboard/initial_setup/basic_settings/index.tsx new file mode 100644 index 0000000000..b3ae8da80e --- /dev/null +++ b/src/features/dashboard/initial_setup/basic_settings/index.tsx @@ -0,0 +1,45 @@ +import { Box, Stack } from '@mui/material'; +import { useAppTranslation } from '@hooks/index'; +import { BasicSettingsProps } from './index.types'; +import useBasicSettings from './useBasicSettings'; +import Button from '@components/button'; +import DateFormat from '@features/congregation/settings/meeting_forms/date_format'; +import DataSharing from '@features/congregation/settings/congregation_privacy/data_sharing'; +import HourFormat from '@features/congregation/settings/congregation_basic/hour_format'; +import NameFormat from '@features/congregation/settings/meeting_forms/name_format'; +import Typography from '@components/typography'; + +const BasicSettings = (props: BasicSettingsProps) => { + const { t } = useAppTranslation(); + + const { handleSave } = useBasicSettings(props); + + return ( + + + {t('tr_initialOrganizedSetupDescStep_1')} + + + + + + + + + + + + + + + + + + ); +}; + +export default BasicSettings; diff --git a/src/features/dashboard/initial_setup/basic_settings/index.types.ts b/src/features/dashboard/initial_setup/basic_settings/index.types.ts new file mode 100644 index 0000000000..ee928584c6 --- /dev/null +++ b/src/features/dashboard/initial_setup/basic_settings/index.types.ts @@ -0,0 +1,3 @@ +export type BasicSettingsProps = { + onMove: VoidFunction; +}; diff --git a/src/features/dashboard/initial_setup/basic_settings/useBasicSettings.tsx b/src/features/dashboard/initial_setup/basic_settings/useBasicSettings.tsx new file mode 100644 index 0000000000..75ca12af83 --- /dev/null +++ b/src/features/dashboard/initial_setup/basic_settings/useBasicSettings.tsx @@ -0,0 +1,11 @@ +import { BasicSettingsProps } from './index.types'; + +const useBasicSettings = ({ onMove }: BasicSettingsProps) => { + const handleSave = () => { + onMove(); + }; + + return { handleSave }; +}; + +export default useBasicSettings; diff --git a/src/features/dashboard/initial_setup/index.tsx b/src/features/dashboard/initial_setup/index.tsx new file mode 100644 index 0000000000..4fdf158e91 --- /dev/null +++ b/src/features/dashboard/initial_setup/index.tsx @@ -0,0 +1,26 @@ +import { useAppTranslation } from '@hooks/index'; +import useInitialSetup from './useInitialSetup'; +import BasicSettings from './basic_settings'; +import Dialog from '@components/dialog'; +import PersonRecord from './person_record'; +import Typography from '@components/typography'; + +const InitialSetup = () => { + const { t } = useAppTranslation(); + + const { handleClose, open, currentStep, handleMoveStep, handleBackStep } = + useInitialSetup(); + + return ( + + + {t('tr_initialOrganizedSetupTitle')} + + + {currentStep === 1 && } + {currentStep === 2 && } + + ); +}; + +export default InitialSetup; diff --git a/src/features/dashboard/initial_setup/person_record/index.tsx b/src/features/dashboard/initial_setup/person_record/index.tsx new file mode 100644 index 0000000000..c083a63e54 --- /dev/null +++ b/src/features/dashboard/initial_setup/person_record/index.tsx @@ -0,0 +1,63 @@ +import { Box, Stack } from '@mui/material'; +import { useAppTranslation, useBreakpoints } from '@hooks/index'; +import { PersonRecordProps } from './index.types'; +import usePersonRecord from './usePersonRecord'; +import Button from '@components/button'; +import TextField from '@components/textfield'; +import Typography from '@components/typography'; + +const PersonRecord = ({ onPrevious }: PersonRecordProps) => { + const { t } = useAppTranslation(); + + const { tabletDown } = useBreakpoints(); + + const { + handleSavePerson, + firstname, + handleFirstnameChange, + handleLastnameChange, + lastname, + } = usePersonRecord(); + + return ( + + + {t('tr_initialOrganizedSetupDescStep_2')} + + + + handleFirstnameChange(e.target.value)} + /> + handleLastnameChange(e.target.value)} + /> + + + + + + + + ); +}; + +export default PersonRecord; diff --git a/src/features/dashboard/initial_setup/person_record/index.types.ts b/src/features/dashboard/initial_setup/person_record/index.types.ts new file mode 100644 index 0000000000..050561fe55 --- /dev/null +++ b/src/features/dashboard/initial_setup/person_record/index.types.ts @@ -0,0 +1,3 @@ +export type PersonRecordProps = { + onPrevious: VoidFunction; +}; diff --git a/src/features/dashboard/initial_setup/person_record/usePersonRecord.tsx b/src/features/dashboard/initial_setup/person_record/usePersonRecord.tsx new file mode 100644 index 0000000000..bfa9e7368a --- /dev/null +++ b/src/features/dashboard/initial_setup/person_record/usePersonRecord.tsx @@ -0,0 +1,64 @@ +import { useState } from 'react'; +import { useRecoilValue } from 'recoil'; +import { personSchema } from '@services/dexie/schema'; +import { generateDisplayName } from '@utils/common'; +import { dbAppSettingsUpdate } from '@services/dexie/settings'; +import { settingsState } from '@states/settings'; +import { dbPersonsSave } from '@services/dexie/persons'; + +const usePersonRecord = () => { + const settings = useRecoilValue(settingsState); + + const [firstname, setFirstname] = useState( + settings.user_settings.firstname.value + ); + const [lastname, setLastname] = useState( + settings.user_settings.lastname.value + ); + + const handleFirstnameChange = (value: string) => setFirstname(value); + + const handleLastnameChange = (value: string) => setLastname(value); + + const handleSavePerson = async () => { + if (firstname.length === 0 && lastname.length === 0) return; + + const dispname = generateDisplayName(lastname, firstname); + + const person = structuredClone(personSchema); + + person.person_uid = crypto.randomUUID(); + + person.person_data.person_firstname = { + value: firstname, + updatedAt: new Date().toISOString(), + }; + + person.person_data.person_lastname = { + value: lastname, + updatedAt: new Date().toISOString(), + }; + + person.person_data.person_display_name = { + value: dispname, + updatedAt: new Date().toISOString(), + }; + + await dbPersonsSave(person, true); + + await dbAppSettingsUpdate({ + 'cong_settings.cong_new': false, + 'user_settings.user_local_uid': person.person_uid, + }); + }; + + return { + handleSavePerson, + firstname, + lastname, + handleFirstnameChange, + handleLastnameChange, + }; +}; + +export default usePersonRecord; diff --git a/src/features/dashboard/initial_setup/useInitialSetup.tsx b/src/features/dashboard/initial_setup/useInitialSetup.tsx new file mode 100644 index 0000000000..deefbf983d --- /dev/null +++ b/src/features/dashboard/initial_setup/useInitialSetup.tsx @@ -0,0 +1,26 @@ +import { useMemo, useState } from 'react'; +import { useRecoilValue } from 'recoil'; +import { settingsState } from '@states/settings'; +import { dbAppSettingsUpdate } from '@services/dexie/settings'; + +const useInitialSetup = () => { + const settings = useRecoilValue(settingsState); + + const [currentStep, setCurrentStep] = useState(1); + + const open = useMemo(() => { + return settings.cong_settings.cong_new ?? false; + }, [settings]); + + const handleClose = async () => { + await dbAppSettingsUpdate({ 'cong_settings.cong_new': false }); + }; + + const handleBackStep = () => setCurrentStep(1); + + const handleMoveStep = () => setCurrentStep(2); + + return { open, handleClose, handleMoveStep, currentStep, handleBackStep }; +}; + +export default useInitialSetup; diff --git a/src/features/dashboard/initial_setup_modal_window/index.tsx b/src/features/dashboard/initial_setup_modal_window/index.tsx deleted file mode 100644 index b01f53c87b..0000000000 --- a/src/features/dashboard/initial_setup_modal_window/index.tsx +++ /dev/null @@ -1,290 +0,0 @@ -import Dialog from '@components/dialog'; -import { InitialSetupModalWindowProps } from './initial_setup_modal_window.types'; -import Typography from '@components/typography'; -import useAppTranslation from '@hooks/useAppTranslation'; -import { useState } from 'react'; -import { - Gapped16Box, - Gapped4Column, -} from './initial_setup_modal_window.styled'; -import Switch from '@components/switch'; -import Select from '@components/select'; -import { MenuItem } from '@mui/material'; -import { formatDate } from '@services/dateformat'; -import Button from '@components/button'; -import TextField from '@components/textfield'; -import Radio from '@components/radio'; - -const InitialSetupModalWindow = (props: InitialSetupModalWindowProps) => { - const { t } = useAppTranslation(); - - const [currentInitialSetupStep, setCurrentInitialSetupStep] = useState(1); - - const [autoSync, setAutoSync] = useState(true); - const [receivePushNotifications, setReceivePushNotifications] = - useState(true); - const [use24hFormat, setUse24hFormat] = useState(true); - - const Step1Switches = () => { - return ( - - - { - setAutoSync(checked); - }} - /> - - {t('tr_autoSync')} - - {t('tr_autoSyncDesc')} - - - - - { - setReceivePushNotifications(checked); - }} - /> - - - {t('tr_receivePushNotifications')} - - - {t('tr_receivePushNotificationsDesc')} - - - - - { - setUse24hFormat(checked); - }} - /> - - - {t('tr_24hFormat')} - - - - - ); - }; - - const [weekStartDay, setWeekStartDay] = useState(''); - const [dateFormat, setDateFormat] = useState(''); - const [nameFormat, setNameFormat] = useState(''); - - const handleWeekStartDaySelectChange = (event) => { - setWeekStartDay(event.target.value); - }; - - const handleDateFormatSelectChange = (event) => { - setDateFormat(event.target.value); - }; - - const handleNameFormatSelectChange = (event) => { - setNameFormat(event.target.value); - }; - - const todayDate = new Date(); - - const Step1SelectFields = () => { - return ( - - - - - - - - ); - }; - - const [gender, setGender] = useState('male'); - - const Step2SelectFields = () => { - return ( - - - - - - - - setGender('male')} - /> - - {t('tr_male')} - - - - setGender('female')} - /> - - {t('tr_female')} - - - - - ); - }; - - return ( - - - - {t('tr_initialOrganizedSetupTitle')} - - - {t('tr_initialOrganizedSetupDescStep_' + currentInitialSetupStep)} - - - - {currentInitialSetupStep === 1 ? ( - <> - - - - ) : ( - - )} - - - - - - ); -}; - -export default InitialSetupModalWindow; diff --git a/src/features/dashboard/initial_setup_modal_window/initial_setup_modal_window.styled.tsx b/src/features/dashboard/initial_setup_modal_window/initial_setup_modal_window.styled.tsx deleted file mode 100644 index be7c1a4a70..0000000000 --- a/src/features/dashboard/initial_setup_modal_window/initial_setup_modal_window.styled.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import styled from '@emotion/styled'; -import { Box } from '@mui/material'; - -export const Gapped16Box = styled(Box)({ - display: 'flex', - gap: '16px', -}); - -export const Gapped4Column = styled(Box)({ - display: 'flex', - flexDirection: 'column', - gap: '4px', -}); diff --git a/src/features/dashboard/initial_setup_modal_window/initial_setup_modal_window.types.tsx b/src/features/dashboard/initial_setup_modal_window/initial_setup_modal_window.types.tsx deleted file mode 100644 index 20529092b0..0000000000 --- a/src/features/dashboard/initial_setup_modal_window/initial_setup_modal_window.types.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export type InitialSetupModalWindowProps = { - isOpen: boolean; -}; diff --git a/src/features/index.ts b/src/features/index.ts index 0fed7abef4..58f8eae482 100644 --- a/src/features/index.ts +++ b/src/features/index.ts @@ -24,7 +24,6 @@ export { default as Contact } from './contact'; export { default as DashboardCard } from './dashboard/card'; export { default as DashboardMenu } from './dashboard/menu'; export { default as DashboardSkeletonLoader } from './dashboard/skeleton_loader'; -export { default as InitialSetupModalWindow } from './dashboard/initial_setup_modal_window'; /* -------------------------------- Demo ------------------------------- */ export { default as DemoBanner } from './demo/banner'; diff --git a/src/features/migration/useMigration.tsx b/src/features/migration/useMigration.tsx index 15e68c2ce3..6136ff2d75 100644 --- a/src/features/migration/useMigration.tsx +++ b/src/features/migration/useMigration.tsx @@ -7,7 +7,7 @@ const useMigration = () => { const settings = useRecoilValue(settingsState); const open = useMemo(() => { - return settings.cong_settings.cong_migrated || false; + return settings.cong_settings.cong_migrated ?? false; }, [settings]); const handleClose = async () => { diff --git a/src/layouts/root_layout/index.tsx b/src/layouts/root_layout/index.tsx index a407601e85..57f5d217cd 100644 --- a/src/layouts/root_layout/index.tsx +++ b/src/layouts/root_layout/index.tsx @@ -21,6 +21,7 @@ import { isDemo } from '@constants/index'; import useGlobal from '@hooks/useGlobal'; import useRootLayout from './useRootLayout'; import DashboardSkeletonLoader from '@features/dashboard/skeleton_loader'; +import InitialSetup from '@features/dashboard/initial_setup'; import JWAutoImport from '@features/meeting_materials/jw_auto_import'; import MigrationNotice from '@features/migration'; import NavBar from '@layouts/navbar'; @@ -40,6 +41,7 @@ const RootLayout = ({ updatePwa }: { updatePwa: VoidFunction }) => { isDashboard, isDemoNoticeOpen, migrationOpen, + initialSetupOpen, } = useRootLayout(); return ( @@ -89,10 +91,13 @@ const RootLayout = ({ updatePwa }: { updatePwa: VoidFunction }) => { > {isDemo && } - {(!isDemo || (isDemo && !isDemoNoticeOpen)) && } + {!initialSetupOpen && + (!isDemo || (isDemo && !isDemoNoticeOpen)) && } {migrationOpen && } + {!isDemo && initialSetupOpen && } + diff --git a/src/layouts/root_layout/useRootLayout.tsx b/src/layouts/root_layout/useRootLayout.tsx index 5ed9a92422..1e17ed72f4 100644 --- a/src/layouts/root_layout/useRootLayout.tsx +++ b/src/layouts/root_layout/useRootLayout.tsx @@ -42,7 +42,11 @@ const useRootLayout = () => { const isDashboard = location.pathname === '/'; const migrationOpen = useMemo(() => { - return settings.cong_settings.cong_migrated || false; + return settings.cong_settings.cong_migrated ?? false; + }, [settings]); + + const initialSetupOpen = useMemo(() => { + return settings.cong_settings.cong_new ?? false; }, [settings]); useEffect(() => { @@ -70,6 +74,7 @@ const useRootLayout = () => { isDashboard, isDemoNoticeOpen, migrationOpen, + initialSetupOpen, }; }; diff --git a/src/pages/dashboard/index.tsx b/src/pages/dashboard/index.tsx index 40a239b547..105de9c705 100644 --- a/src/pages/dashboard/index.tsx +++ b/src/pages/dashboard/index.tsx @@ -1,8 +1,7 @@ import { Box } from '@mui/material'; -import { SnackBar, TextMarkup, Typography } from '@components/index'; +import { TextMarkup, Typography } from '@components/index'; import { IconCheckCircle } from '@icons/index'; import { useAppTranslation, useCurrentUser } from '@hooks/index'; -import { isDemo } from '@constants/index'; import CongregationCard from './congregation'; import MinistryCard from './ministry'; import MeetingsCard from './meetings'; @@ -10,6 +9,7 @@ import MeetingsMaterialsCard from './meeting_materials'; import PersonsCard from './persons'; import ReportsCard from './reports'; import useDashboard from './useDashboard'; +import Snackbar from '@components/snackbar'; const Dashboard = () => { const { t } = useAppTranslation(); @@ -24,11 +24,10 @@ const Dashboard = () => { const { firstName, - isCongNew, - handleCloseNewCongNotice, handleOpenMyAssignments, countFutureAssignments, - isMigrated, + handleCloseNewCongNotice, + newCongSnack, } = useDashboard(); return ( @@ -71,9 +70,9 @@ const Dashboard = () => { - {!isMigrated && isCongNew && !isDemo && ( - } messageHeader={t('tr_welcomeCongregationTitle')} diff --git a/src/pages/dashboard/useDashboard.tsx b/src/pages/dashboard/useDashboard.tsx index fdce72104d..e73117b26f 100644 --- a/src/pages/dashboard/useDashboard.tsx +++ b/src/pages/dashboard/useDashboard.tsx @@ -1,6 +1,5 @@ -import { useMemo } from 'react'; +import { useMemo, useState } from 'react'; import { useRecoilValue, useSetRecoilState } from 'recoil'; -import { dbAppSettingsUpdate } from '@services/dexie/settings'; import { congNewState, firstnameState, @@ -10,6 +9,7 @@ import { import { isMyAssignmentOpenState } from '@states/app'; import { assignmentsHistoryState } from '@states/schedules'; import { getWeekDate } from '@utils/date'; +import { isDemo } from '@constants/index'; const useDashboard = () => { const setIsMyAssignmentOpen = useSetRecoilState(isMyAssignmentOpenState); @@ -20,6 +20,16 @@ const useDashboard = () => { const assignmentsHistory = useRecoilValue(assignmentsHistoryState); const settings = useRecoilValue(settingsState); + const isMigrated = useMemo(() => { + return settings.cong_settings.cong_migrated ?? false; + }, [settings]); + + const initialSnackValue = useMemo(() => { + return !isMigrated && isCongNew && !isDemo; + }, []); + + const [newCongSnack, setNewCongSnack] = useState(initialSnackValue); + const countFutureAssignments = useMemo(() => { const now = getWeekDate().toISOString(); @@ -32,12 +42,8 @@ const useDashboard = () => { return personAssignments.length; }, [assignmentsHistory, userUID]); - const isMigrated = useMemo(() => { - return settings.cong_settings.cong_migrated || false; - }, [settings]); - const handleCloseNewCongNotice = async () => { - await dbAppSettingsUpdate({ 'cong_settings.cong_new': false }); + setNewCongSnack(false); }; const handleOpenMyAssignments = async () => { @@ -51,6 +57,7 @@ const useDashboard = () => { handleOpenMyAssignments, countFutureAssignments, isMigrated, + newCongSnack, }; }; From 5d3feff1579f9d9e30fdd1b0e232a2dfc0e95485 Mon Sep 17 00:00:00 2001 From: rhahao <26148770+rhahao@users.noreply.github.com> Date: Sun, 10 Nov 2024 16:47:06 +0300 Subject: [PATCH 09/27] feat(app): connect initial setup window --- src/App.tsx | 2 +- .../initial_setup/person_record/index.tsx | 14 +++- .../person_record/usePersonRecord.tsx | 69 +++++++++++++------ .../button_actions/useButtonActions.tsx | 8 +-- src/services/api/congregation.ts | 32 +++++++++ src/services/dexie/schema.ts | 2 +- 6 files changed, 99 insertions(+), 28 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index b498549b84..af1fe0922e 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -84,7 +84,7 @@ const App = ({ updatePwa }: { updatePwa: VoidFunction }) => { // publisher routes { - element: , + element: , children: [ { path: '/ministry-report', element: }, { path: '/service-year', element: }, diff --git a/src/features/dashboard/initial_setup/person_record/index.tsx b/src/features/dashboard/initial_setup/person_record/index.tsx index c083a63e54..30302364e3 100644 --- a/src/features/dashboard/initial_setup/person_record/index.tsx +++ b/src/features/dashboard/initial_setup/person_record/index.tsx @@ -5,6 +5,7 @@ import usePersonRecord from './usePersonRecord'; import Button from '@components/button'; import TextField from '@components/textfield'; import Typography from '@components/typography'; +import { IconLoading } from '@components/icons'; const PersonRecord = ({ onPrevious }: PersonRecordProps) => { const { t } = useAppTranslation(); @@ -17,6 +18,7 @@ const PersonRecord = ({ onPrevious }: PersonRecordProps) => { handleFirstnameChange, handleLastnameChange, lastname, + isProcessing, } = usePersonRecord(); return ( @@ -49,10 +51,18 @@ const PersonRecord = ({ onPrevious }: PersonRecordProps) => { - - diff --git a/src/features/dashboard/initial_setup/person_record/usePersonRecord.tsx b/src/features/dashboard/initial_setup/person_record/usePersonRecord.tsx index bfa9e7368a..77b7f2f413 100644 --- a/src/features/dashboard/initial_setup/person_record/usePersonRecord.tsx +++ b/src/features/dashboard/initial_setup/person_record/usePersonRecord.tsx @@ -1,14 +1,22 @@ import { useState } from 'react'; import { useRecoilValue } from 'recoil'; +import { useAppTranslation } from '@hooks/index'; import { personSchema } from '@services/dexie/schema'; import { generateDisplayName } from '@utils/common'; import { dbAppSettingsUpdate } from '@services/dexie/settings'; import { settingsState } from '@states/settings'; import { dbPersonsSave } from '@services/dexie/persons'; +import { displaySnackNotification } from '@services/recoil/app'; +import { getMessageByCode } from '@services/i18n/translation'; +import { apiSetUserUid } from '@services/api/congregation'; const usePersonRecord = () => { + const { t } = useAppTranslation(); + const settings = useRecoilValue(settingsState); + const [isProcessing, setIsProcessing] = useState(false); + const [firstname, setFirstname] = useState( settings.user_settings.firstname.value ); @@ -23,33 +31,53 @@ const usePersonRecord = () => { const handleSavePerson = async () => { if (firstname.length === 0 && lastname.length === 0) return; - const dispname = generateDisplayName(lastname, firstname); + if (isProcessing) return; + + try { + setIsProcessing(true); + + const dispname = generateDisplayName(lastname, firstname); + + const person = structuredClone(personSchema); + + person.person_uid = crypto.randomUUID(); + + person.person_data.person_firstname = { + value: firstname, + updatedAt: new Date().toISOString(), + }; + + person.person_data.person_lastname = { + value: lastname, + updatedAt: new Date().toISOString(), + }; - const person = structuredClone(personSchema); + person.person_data.person_display_name = { + value: dispname, + updatedAt: new Date().toISOString(), + }; - person.person_uid = crypto.randomUUID(); + await apiSetUserUid(person.person_uid); - person.person_data.person_firstname = { - value: firstname, - updatedAt: new Date().toISOString(), - }; + await dbPersonsSave(person, true); - person.person_data.person_lastname = { - value: lastname, - updatedAt: new Date().toISOString(), - }; + await dbAppSettingsUpdate({ + 'cong_settings.cong_new': false, + 'user_settings.user_local_uid': person.person_uid, + }); - person.person_data.person_display_name = { - value: dispname, - updatedAt: new Date().toISOString(), - }; + setIsProcessing(false); + } catch (err) { + setIsProcessing(false); - await dbPersonsSave(person, true); + console.error(err); - await dbAppSettingsUpdate({ - 'cong_settings.cong_new': false, - 'user_settings.user_local_uid': person.person_uid, - }); + await displaySnackNotification({ + header: t('tr_errorTitle'), + message: getMessageByCode(err.message), + severity: 'error', + }); + } }; return { @@ -58,6 +86,7 @@ const usePersonRecord = () => { lastname, handleFirstnameChange, handleLastnameChange, + isProcessing, }; }; diff --git a/src/features/persons/button_actions/useButtonActions.tsx b/src/features/persons/button_actions/useButtonActions.tsx index 4f1ae76e22..bc86d6134b 100644 --- a/src/features/persons/button_actions/useButtonActions.tsx +++ b/src/features/persons/button_actions/useButtonActions.tsx @@ -38,10 +38,8 @@ const useButtonActions = () => { await dbPersonsSave(person, isNewPerson); resetPersonNew(); - navigate('/persons'); - if (isNewPerson) { - await displaySnackNotification({ + displaySnackNotification({ header: t('tr_personAdded'), message: t('tr_personAddedDesc'), severity: 'success', @@ -50,13 +48,15 @@ const useButtonActions = () => { } if (!isNewPerson) { - await displaySnackNotification({ + displaySnackNotification({ header: t('tr_personSaved'), message: t('tr_personSavedDesc'), severity: 'success', icon: , }); } + + navigate(-1); } catch (error) { await displaySnackNotification({ header: t('tr_errorTitle'), diff --git a/src/services/api/congregation.ts b/src/services/api/congregation.ts index 716e454eb0..b40f1ff8cb 100644 --- a/src/services/api/congregation.ts +++ b/src/services/api/congregation.ts @@ -615,3 +615,35 @@ export const apiCongregationDeleteApplication = async (request_id: string) => { throw new Error(data.message); } }; + +export const apiSetUserUid = async (user_uid: string) => { + const { + apiHost, + appVersion: appversion, + congID, + idToken, + } = await apiDefault(); + + const res = await fetch( + `${apiHost}api/v3/congregations/admin/${congID}/local-uid`, + { + method: 'POST', + credentials: 'include', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${idToken}`, + appclient: 'organized', + appversion, + }, + body: JSON.stringify({ user_uid }), + } + ); + + const data = await res.json(); + + if (res.status !== 200) { + throw new Error(data.message); + } + + return data; +}; diff --git a/src/services/dexie/schema.ts b/src/services/dexie/schema.ts index f47906bce5..1f73584939 100644 --- a/src/services/dexie/schema.ts +++ b/src/services/dexie/schema.ts @@ -221,7 +221,7 @@ export const personSchema: PersonType = { _deleted: false, updatedAt: new Date().toISOString(), start_date: new Date().toISOString(), - end_date: new Date().toISOString(), + end_date: null, }, ], }, From 65aea64a3690bd88c15ecf3795688126f8d4bb43 Mon Sep 17 00:00:00 2001 From: rhahao <26148770+rhahao@users.noreply.github.com> Date: Sun, 10 Nov 2024 16:51:05 +0300 Subject: [PATCH 10/27] fix(dashboard): enforce admin role for initial setup --- src/features/dashboard/initial_setup/useInitialSetup.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/features/dashboard/initial_setup/useInitialSetup.tsx b/src/features/dashboard/initial_setup/useInitialSetup.tsx index deefbf983d..b411edcea2 100644 --- a/src/features/dashboard/initial_setup/useInitialSetup.tsx +++ b/src/features/dashboard/initial_setup/useInitialSetup.tsx @@ -2,15 +2,20 @@ import { useMemo, useState } from 'react'; import { useRecoilValue } from 'recoil'; import { settingsState } from '@states/settings'; import { dbAppSettingsUpdate } from '@services/dexie/settings'; +import useCurrentUser from '@hooks/useCurrentUser'; const useInitialSetup = () => { + const { isAdmin } = useCurrentUser(); + const settings = useRecoilValue(settingsState); const [currentStep, setCurrentStep] = useState(1); const open = useMemo(() => { - return settings.cong_settings.cong_new ?? false; - }, [settings]); + const isNew = settings.cong_settings.cong_new ?? false; + + return isNew && isAdmin; + }, [settings, isAdmin]); const handleClose = async () => { await dbAppSettingsUpdate({ 'cong_settings.cong_new': false }); From 49116a6524f82f76920659d65fe12f782c23ed7d Mon Sep 17 00:00:00 2001 From: rhahao <26148770+rhahao@users.noreply.github.com> Date: Sun, 10 Nov 2024 16:58:06 +0300 Subject: [PATCH 11/27] chore(dashboard): update import path --- src/pages/dashboard/index.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/pages/dashboard/index.tsx b/src/pages/dashboard/index.tsx index 105de9c705..d3f5dd275b 100644 --- a/src/pages/dashboard/index.tsx +++ b/src/pages/dashboard/index.tsx @@ -1,15 +1,16 @@ import { Box } from '@mui/material'; -import { TextMarkup, Typography } from '@components/index'; import { IconCheckCircle } from '@icons/index'; import { useAppTranslation, useCurrentUser } from '@hooks/index'; +import useDashboard from './useDashboard'; import CongregationCard from './congregation'; +import Markup from '@components/text_markup'; import MinistryCard from './ministry'; import MeetingsCard from './meetings'; import MeetingsMaterialsCard from './meeting_materials'; import PersonsCard from './persons'; import ReportsCard from './reports'; -import useDashboard from './useDashboard'; import Snackbar from '@components/snackbar'; +import Typography from '@components/typography'; const Dashboard = () => { const { t } = useAppTranslation(); @@ -36,7 +37,7 @@ const Dashboard = () => { {t('tr_greeting', { firstName })} 👋 - Date: Sun, 10 Nov 2024 17:44:41 +0300 Subject: [PATCH 12/27] feat(congregation): ability to change sync status when adding new users --- .../app_access/enable_sync/index.tsx | 34 +++++++++++++++++++ .../app_access/enable_sync/index.types.ts | 5 +++ src/locales/en/congregation.json | 4 ++- .../manage_access/all_users/index.tsx | 18 +++++++--- .../manage_access/all_users/useAllUsers.tsx | 33 ++++++++++++++---- 5 files changed, 83 insertions(+), 11 deletions(-) create mode 100644 src/features/congregation/app_access/enable_sync/index.tsx create mode 100644 src/features/congregation/app_access/enable_sync/index.types.ts diff --git a/src/features/congregation/app_access/enable_sync/index.tsx b/src/features/congregation/app_access/enable_sync/index.tsx new file mode 100644 index 0000000000..ea51c3ad79 --- /dev/null +++ b/src/features/congregation/app_access/enable_sync/index.tsx @@ -0,0 +1,34 @@ +import { Stack } from '@mui/material'; +import { useAppTranslation } from '@hooks/index'; +import { EnableSyncProps } from './index.types'; +import Button from '@components/button'; +import DataSharing from '@features/congregation/settings/congregation_privacy/data_sharing'; +import Dialog from '@components/dialog'; +import Typography from '@components/typography'; + +const EnableSync = ({ onClose, open, onContinue }: EnableSyncProps) => { + const { t } = useAppTranslation(); + + return ( + + {t('tr_addUserSyncNeeded')} + + + {t('tr_addUserSyncNeededDesc')} + + + + + + + + + + ); +}; + +export default EnableSync; diff --git a/src/features/congregation/app_access/enable_sync/index.types.ts b/src/features/congregation/app_access/enable_sync/index.types.ts new file mode 100644 index 0000000000..f5e5613de4 --- /dev/null +++ b/src/features/congregation/app_access/enable_sync/index.types.ts @@ -0,0 +1,5 @@ +export type EnableSyncProps = { + open: boolean; + onClose: VoidFunction; + onContinue: VoidFunction; +}; diff --git a/src/locales/en/congregation.json b/src/locales/en/congregation.json index f5cc0ce9a7..09e30e7336 100644 --- a/src/locales/en/congregation.json +++ b/src/locales/en/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add multiple users and devices for easier collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/pages/congregation/manage_access/all_users/index.tsx b/src/pages/congregation/manage_access/all_users/index.tsx index fb06a8fd7b..2e8fdaee05 100644 --- a/src/pages/congregation/manage_access/all_users/index.tsx +++ b/src/pages/congregation/manage_access/all_users/index.tsx @@ -5,6 +5,7 @@ import useAllUsers from './useAllUsers'; import Button from '@components/button'; import CongregationPersons from '@features/congregation/app_access/congregation_persons'; import CongregationVIP from '@features/congregation/app_access/congregation_vip'; +import EnableSync from '@features/congregation/app_access/enable_sync'; import PageTitle from '@components/page_title'; import UserAdd from '@features/congregation/app_access/user_add'; @@ -16,11 +17,13 @@ const UsersAll = () => { const { userAddOpen, handleCloseUserAdd, - handleOpenUserAdd, congregationsPersons, appAdmin, baptizedPersons, - sync_disabled, + enableSyncOpen, + handleAction, + handleContinue, + handleCloseEnableSync, } = useAllUsers(); return ( @@ -31,8 +34,7 @@ const UsersAll = () => { @@ -43,6 +45,14 @@ const UsersAll = () => { )} + {enableSyncOpen && ( + + )} + { const baptizedPersons = useRecoilValue(congregationsBaptizedPersonsState); const settings = useRecoilValue(settingsState); - const sync_disabled = useMemo(() => { - return !settings.cong_settings.data_sync.value; + const sync_enabled = useMemo(() => { + return settings.cong_settings.data_sync.value; }, [settings.cong_settings.data_sync.value]); const [userAddOpen, setUserAddOpen] = useState(false); - - const handleOpenUserAdd = () => setUserAddOpen(true); + const [enableSyncOpen, setEnableSyncOpen] = useState(false); const handleCloseUserAdd = () => setUserAddOpen(false); + const handleCloseEnableSync = () => setEnableSyncOpen(false); + + const handleAction = () => { + if (sync_enabled) { + setUserAddOpen(true); + } + + if (!sync_enabled) { + setEnableSyncOpen(true); + } + }; + + const handleContinue = () => { + setEnableSyncOpen(false); + + if (sync_enabled) { + setUserAddOpen(true); + } + }; + useEffect(() => { if (Array.isArray(data?.users)) { setUsers(data.users); @@ -42,12 +61,14 @@ const useAllUsers = () => { return { userAddOpen, - handleOpenUserAdd, handleCloseUserAdd, congregationsPersons, baptizedPersons, appAdmin, - sync_disabled, + handleAction, + handleContinue, + enableSyncOpen, + handleCloseEnableSync, }; }; From 4b7d58e420f2fb0882d726f5c66eb7dea434b76e Mon Sep 17 00:00:00 2001 From: rhahao <26148770+rhahao@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:04:29 +0300 Subject: [PATCH 13/27] fix(congregation): prevent simulataneous edit for user access --- .../app_access/user_details/index.tsx | 2 +- .../user_details/profile_settings/index.tsx | 15 +++++++++++--- .../user_details/useUserDetails.tsx | 20 +++++++++++++++++-- .../user_additional_rights/index.tsx | 7 +++++++ .../user_details/user_main_roles/index.tsx | 7 +++++++ .../user_details/user_rights/index.tsx | 14 ++++++++----- src/states/congregation.ts | 5 +++++ 7 files changed, 59 insertions(+), 11 deletions(-) diff --git a/src/features/congregation/app_access/user_details/index.tsx b/src/features/congregation/app_access/user_details/index.tsx index 238b511adc..ce64a2348d 100644 --- a/src/features/congregation/app_access/user_details/index.tsx +++ b/src/features/congregation/app_access/user_details/index.tsx @@ -1,10 +1,10 @@ import { Box } from '@mui/material'; import { useBreakpoints } from '@hooks/index'; +import useUserDetails from './useUserDetails'; import InvitationCode from './invitation_code'; import ProfileSettings from './profile_settings'; import UserRights from './user_rights'; import UserSessions from './user_sessions'; -import useUserDetails from './useUserDetails'; const UserMemberDetails = () => { const { desktopUp } = useBreakpoints(); diff --git a/src/features/congregation/app_access/user_details/profile_settings/index.tsx b/src/features/congregation/app_access/user_details/profile_settings/index.tsx index 20f68ed111..79d9d2c63b 100644 --- a/src/features/congregation/app_access/user_details/profile_settings/index.tsx +++ b/src/features/congregation/app_access/user_details/profile_settings/index.tsx @@ -1,7 +1,9 @@ import { Box } from '@mui/material'; +import { IconLoading } from '@components/icons'; import { DetailsContainer } from '../shared_styles'; import { UsersOption } from './index.types'; import { useAppTranslation } from '@hooks/index'; +import useUserDetails from '../useUserDetails'; import useProfileSettings from './useProfileSettings'; import Autocomplete from '@components/autocomplete'; import Divider from '@components/divider'; @@ -12,6 +14,8 @@ import MiniChip from '@components/mini_chip'; const ProfileSettings = () => { const { t } = useAppTranslation(); + const { isProcessing } = useUserDetails(); + const { persons, handleSelectPerson, @@ -31,11 +35,15 @@ const ProfileSettings = () => { gap: '16px', }} > - - {t('tr_profileSettings')} - + + + {t('tr_profileSettings')} + + {isProcessing && } + { { const queryClient = useQueryClient(); const [user, setUser] = useRecoilState(currentCongregationUserState); + const [isProcessing, setIsProcessing] = useRecoilState(isProcessingUserState); const userID = useRecoilValue(userIDState); const settings = useRecoilValue(settingsState); @@ -41,7 +45,11 @@ const useUserDetails = () => { user: CongregationUserType, code?: string ) => { + if (isProcessing) return; + try { + setIsProcessing(true); + const { status, message } = await apiCongregationUserUpdate({ user_id: user.id, cong_person_uid: user.profile.user_local_uid || '', @@ -132,6 +140,8 @@ const useUserDetails = () => { severity: 'success', }); + setIsProcessing(false); + refetchUser(); } catch (error) { throw new Error((error as Error).message); @@ -157,7 +167,13 @@ const useUserDetails = () => { } }; - return { handleSaveDetails, user, handleTerminateSession, refetchUser }; + return { + handleSaveDetails, + user, + handleTerminateSession, + refetchUser, + isProcessing, + }; }; export default useUserDetails; diff --git a/src/features/congregation/app_access/user_details/user_additional_rights/index.tsx b/src/features/congregation/app_access/user_details/user_additional_rights/index.tsx index 026d7d2a4e..37ff86a60a 100644 --- a/src/features/congregation/app_access/user_details/user_additional_rights/index.tsx +++ b/src/features/congregation/app_access/user_details/user_additional_rights/index.tsx @@ -1,12 +1,15 @@ import { useAppTranslation } from '@hooks/index'; import { SwitchContainer } from '../shared_styles'; import useUserAdditionalRights from './useUserAdditionalRights'; +import useUserDetails from '../useUserDetails'; import SwitchWithLabel from '@components/switch_with_label'; import Typography from '@components/typography'; const UserAdditionalRights = () => { const { t } = useAppTranslation(); + const { isProcessing } = useUserDetails(); + const { isMidweek, handleToggleMidweek, @@ -31,24 +34,28 @@ const UserAdditionalRights = () => { diff --git a/src/features/congregation/app_access/user_details/user_main_roles/index.tsx b/src/features/congregation/app_access/user_details/user_main_roles/index.tsx index a430cc1541..3e903823a2 100644 --- a/src/features/congregation/app_access/user_details/user_main_roles/index.tsx +++ b/src/features/congregation/app_access/user_details/user_main_roles/index.tsx @@ -1,4 +1,5 @@ import { useAppTranslation } from '@hooks/index'; +import useUserDetails from '../useUserDetails'; import useUserMainRoles from './useUserMainRoles'; import Checkbox from '@components/checkbox'; import Divider from '@components/divider'; @@ -7,6 +8,8 @@ import Typography from '@components/typography'; const UserMainRoles = () => { const { t } = useAppTranslation(); + const { isProcessing } = useUserDetails(); + const { isAdmin, handleToggleAdmin, @@ -28,6 +31,7 @@ const UserMainRoles = () => { label={t('tr_coordinator')} labelDescription={t('tr_coordinatorRoleDesc')} sx={{ paddingLeft: '7px' }} + readOnly={isProcessing} checked={isCoordinator} onChange={(e) => handleToggleCoordinator(e.target.checked)} /> @@ -36,6 +40,7 @@ const UserMainRoles = () => { label={t('tr_secretary')} labelDescription={t('tr_secretaryRoleDesc')} sx={{ paddingLeft: '7px' }} + readOnly={isProcessing} checked={isSecretary} onChange={(e) => handleToggleSecretary(e.target.checked)} /> @@ -44,6 +49,7 @@ const UserMainRoles = () => { label={t('tr_appAdministrator')} labelDescription={t('tr_appAdminRoleDesc')} sx={{ paddingLeft: '7px' }} + readOnly={isProcessing} checked={isAdmin} onChange={(e) => handleToggleAdmin(e.target.checked)} /> @@ -52,6 +58,7 @@ const UserMainRoles = () => { label={t('tr_serviceOverseer')} labelDescription={t('tr_serviceOverseerRoleDesc')} sx={{ paddingLeft: '7px' }} + readOnly={isProcessing} checked={isServiceOverseer} onChange={(e) => handleToggleServiceOverseer(e.target.checked)} /> diff --git a/src/features/congregation/app_access/user_details/user_rights/index.tsx b/src/features/congregation/app_access/user_details/user_rights/index.tsx index 2c7272c1b0..23bb5f0886 100644 --- a/src/features/congregation/app_access/user_details/user_rights/index.tsx +++ b/src/features/congregation/app_access/user_details/user_rights/index.tsx @@ -1,6 +1,6 @@ import { Box } from '@mui/material'; import { DetailsContainer } from '../shared_styles'; -import { IconInfo } from '@components/icons'; +import { IconInfo, IconLoading } from '@components/icons'; import { useAppTranslation } from '@hooks/index'; import useUserDetails from '../useUserDetails'; import Markup from '@components/text_markup'; @@ -11,7 +11,7 @@ import UserMainRoles from '../user_main_roles'; const UserRights = () => { const { t } = useAppTranslation(); - const { user } = useUserDetails(); + const { user, isProcessing } = useUserDetails(); return ( @@ -22,9 +22,13 @@ const UserRights = () => { gap: '12px', }} > - - {t('tr_userRights')} - + + + {t('tr_userRights')} + + + {isProcessing && } + ({ key: 'currentCongregationUser', default: undefined, }); + +export const isProcessingUserState = atom({ + key: 'isProcessingUser', + default: false, +}); From d8e9d2de38e2fc99b7c001ee50248b4ef4a6e712 Mon Sep 17 00:00:00 2001 From: rhahao <26148770+rhahao@users.noreply.github.com> Date: Sun, 10 Nov 2024 20:32:59 +0300 Subject: [PATCH 14/27] fix(ministry): pioneer application locked for some users --- .../ap_application/main_form/useMainForm.tsx | 76 ++++++++++++++++--- .../useSubmitApplication.tsx | 31 +++++++- .../ministry/application_form/body/index.tsx | 17 ++--- .../application_form/body/useFormBody.tsx | 18 ++++- src/services/api/pocket.ts | 56 ++++++++++++++ 5 files changed, 171 insertions(+), 27 deletions(-) diff --git a/src/features/ministry/ap_application/main_form/useMainForm.tsx b/src/features/ministry/ap_application/main_form/useMainForm.tsx index 3d0afe4952..080641c519 100644 --- a/src/features/ministry/ap_application/main_form/useMainForm.tsx +++ b/src/features/ministry/ap_application/main_form/useMainForm.tsx @@ -4,23 +4,48 @@ import { useQuery } from '@tanstack/react-query'; import { currentAPFormState } from '@states/ministry'; import { APFormType, APRecordType } from '@definition/ministry'; import { buildPersonFullname } from '@utils/common'; -import { congAccessCodeState, fullnameOptionState } from '@states/settings'; +import { + accountTypeState, + congAccessCodeState, + fullnameOptionState, +} from '@states/settings'; import { apiUserGetApplications, apiValidateMe } from '@services/api/user'; import { decryptData, decryptObject } from '@services/encryption'; +import { + apiGetPocketApplications, + apiPocketValidateMe, +} from '@services/api/pocket'; import useCurrentUser from '@hooks/useCurrentUser'; const useMainForm = () => { - const { data } = useQuery({ + const accountType = useRecoilValue(accountTypeState); + + const { data: applicationsVIP } = useQuery({ + enabled: accountType === 'vip', queryKey: ['user_applications'], queryFn: apiUserGetApplications, refetchOnMount: 'always', }); - const { data: whoami } = useQuery({ + const { data: applicationsPocket } = useQuery({ + enabled: accountType === 'pocket', + queryKey: ['user_applications'], + queryFn: apiGetPocketApplications, + refetchOnMount: 'always', + }); + + const { data: whoamiVIP } = useQuery({ + enabled: accountType === 'vip', queryKey: ['application_whoami'], queryFn: apiValidateMe, }); + const { data: whoamiPocket } = useQuery({ + enabled: accountType === 'pocket', + queryKey: ['application_whoami'], + queryFn: apiPocketValidateMe, + }); + const { person } = useCurrentUser(); const resetForm = useResetRecoilState(currentAPFormState); @@ -55,29 +80,58 @@ const useMainForm = () => { useEffect(() => { const loadApplications = () => { - if (Array.isArray(data) && data.length > 0) { - const incoming = structuredClone(data); + let applications: APRecordType[]; + + if (accountType === 'vip') { + applications = applicationsVIP; + } + + if (accountType === 'pocket') { + applications = applicationsPocket; + } + + if (Array.isArray(applications) && applications.length > 0) { + const incoming = structuredClone(applications); let accessCode: string; - const remoteCode = whoami?.result?.cong_access_code; - if (remoteCode) { - accessCode = decryptData(remoteCode, congAccessCode); + if (accountType === 'vip') { + const remoteCode = whoamiVIP?.result?.cong_access_code; + + if (remoteCode) { + accessCode = decryptData(remoteCode, congAccessCode); + } + } + + if (accountType === 'pocket') { + const remoteCode = + whoamiPocket?.result.app_settings.cong_settings.cong_access_code; + + if (remoteCode) { + accessCode = decryptData(remoteCode, congAccessCode); + } } if (!accessCode) return; - const applications = incoming.map((record) => { + const applicationsDecrypted = incoming.map((record) => { decryptObject({ data: record, table: 'applications', accessCode }); return record; }); - setApplications(applications); + setApplications(applicationsDecrypted); } }; loadApplications(); - }, [data, whoami, congAccessCode]); + }, [ + applicationsVIP, + applicationsPocket, + accountType, + whoamiVIP, + whoamiPocket, + congAccessCode, + ]); return { formData, handleFormChange, applications }; }; diff --git a/src/features/ministry/ap_application/submit_application/useSubmitApplication.tsx b/src/features/ministry/ap_application/submit_application/useSubmitApplication.tsx index 93c5522a86..fc5e712457 100644 --- a/src/features/ministry/ap_application/submit_application/useSubmitApplication.tsx +++ b/src/features/ministry/ap_application/submit_application/useSubmitApplication.tsx @@ -5,9 +5,13 @@ import { currentAPFormState } from '@states/ministry'; import { displaySnackNotification } from '@services/recoil/app'; import { useAppTranslation } from '@hooks/index'; import { decryptData, encryptObject } from '@services/encryption'; -import { congAccessCodeState } from '@states/settings'; +import { accountTypeState, congAccessCodeState } from '@states/settings'; import { apiUserSubmitApplication, apiValidateMe } from '@services/api/user'; import { APFormOutgoing } from '@definition/api'; +import { + apiPocketSubmitApplication, + apiPocketValidateMe, +} from '@services/api/pocket'; const useSubmitApplication = () => { const { t } = useAppTranslation(); @@ -16,6 +20,7 @@ const useSubmitApplication = () => { const formData = useRecoilValue(currentAPFormState); const congAccessCode = useRecoilValue(congAccessCodeState); + const accountType = useRecoilValue(accountTypeState); const [isProcessing, setIsProcessing] = useState(false); @@ -39,8 +44,20 @@ const useSubmitApplication = () => { submitted: formData.date.toISOString(), }; - const { result } = await apiValidateMe(); - const accessCode = decryptData(result.cong_access_code, congAccessCode); + let accessCode: string; + + if (accountType === 'vip') { + const { result } = await apiValidateMe(); + accessCode = decryptData(result.cong_access_code, congAccessCode); + } + + if (accountType === 'pocket') { + const { result } = await apiPocketValidateMe(); + accessCode = decryptData( + result.app_settings.cong_settings.cong_access_code, + congAccessCode + ); + } encryptObject({ data: application, @@ -50,7 +67,13 @@ const useSubmitApplication = () => { const payload = application as unknown as APFormOutgoing; - await apiUserSubmitApplication(payload); + if (accountType === 'vip') { + await apiUserSubmitApplication(payload); + } + + if (accountType === 'pocket') { + await apiPocketSubmitApplication(payload); + } setIsProcessing(false); resetForm(); diff --git a/src/features/ministry/application_form/body/index.tsx b/src/features/ministry/application_form/body/index.tsx index 1bcb4188c2..55581911c7 100644 --- a/src/features/ministry/application_form/body/index.tsx +++ b/src/features/ministry/application_form/body/index.tsx @@ -1,9 +1,5 @@ import { Box, Stack } from '@mui/material'; -import { - useAppTranslation, - useBreakpoints, - useCurrentUser, -} from '@hooks/index'; +import { useAppTranslation, useBreakpoints } from '@hooks/index'; import { ApplicationFormProps } from '../index.types'; import useFormBody from './useFormBody'; import Card from '@components/card'; @@ -21,8 +17,6 @@ const FormBody = (props: ApplicationFormProps) => { const { laptopUp, tabletDown } = useBreakpoints(); - const { isServiceCommittee } = useCurrentUser(); - const { moral_text, coordinator, @@ -35,6 +29,7 @@ const FormBody = (props: ApplicationFormProps) => { handleFormatMonths, handleToggleContinuous, application, + form_readOnly, } = useFormBody(props); return ( @@ -59,7 +54,7 @@ const FormBody = (props: ApplicationFormProps) => { renderValue={(values: string[]) => handleFormatMonths(values)} onChange={(e) => handleSetMonths(e.target.value as string[])} sx={{ flex: 1 }} - readOnly={!isServiceCommittee} + readOnly={form_readOnly} > {monthOptions.map((record) => ( @@ -78,7 +73,7 @@ const FormBody = (props: ApplicationFormProps) => { checked={application?.continuous ?? false} onChange={(e) => handleToggleContinuous(e.target.checked)} sx={{ flex: 1 }} - readOnly={!isServiceCommittee} + readOnly={form_readOnly} /> @@ -105,7 +100,7 @@ const FormBody = (props: ApplicationFormProps) => { handleSetDate(value)} - readOnly={!isServiceCommittee} + readOnly={form_readOnly} /> { value={application?.name} onChange={(e) => handleSetName(e.target.value)} sx={{ flex: 1 }} - slotProps={{ input: { readOnly: !isServiceCommittee } }} + slotProps={{ input: { readOnly: form_readOnly } }} /> diff --git a/src/features/ministry/application_form/body/useFormBody.tsx b/src/features/ministry/application_form/body/useFormBody.tsx index 974cca1bb5..3d573ce2f5 100644 --- a/src/features/ministry/application_form/body/useFormBody.tsx +++ b/src/features/ministry/application_form/body/useFormBody.tsx @@ -1,6 +1,7 @@ import { useMemo } from 'react'; +import { useLocation } from 'react-router-dom'; import { useRecoilValue } from 'recoil'; -import { useAppTranslation } from '@hooks/index'; +import { useAppTranslation, useCurrentUser } from '@hooks/index'; import { JWLangState, monthNamesState } from '@states/app'; import { fullnameOptionState, settingsState } from '@states/settings'; import { personsState } from '@states/persons'; @@ -16,12 +17,26 @@ import { ApplicationFormProps } from '../index.types'; const useFormBody = ({ application, onChange }: ApplicationFormProps) => { const { t } = useAppTranslation(); + const location = useLocation(); + + const { isPublisher, isServiceCommittee } = useCurrentUser(); + const lang = useRecoilValue(JWLangState); const settings = useRecoilValue(settingsState); const persons = useRecoilValue(personsState); const fullnameOption = useRecoilValue(fullnameOptionState); const months = useRecoilValue(monthNamesState); + const isPublisherAP = useMemo(() => { + return location.pathname === '/auxiliary-pioneer-application'; + }, [location]); + + const form_readOnly = useMemo(() => { + return ( + (isPublisherAP && !isPublisher) || (!isPublisherAP && !isServiceCommittee) + ); + }, [isPublisherAP, isPublisher, isServiceCommittee]); + const moral_text = useMemo(() => { let text = t('tr_pioneerApplicationMoral'); @@ -150,6 +165,7 @@ const useFormBody = ({ application, onChange }: ApplicationFormProps) => { handleSetMonths, handleFormatMonths, handleToggleContinuous, + form_readOnly, }; }; diff --git a/src/services/api/pocket.ts b/src/services/api/pocket.ts index 8b69ef43a8..2fce51824e 100644 --- a/src/services/api/pocket.ts +++ b/src/services/api/pocket.ts @@ -1,8 +1,10 @@ import { + APFormOutgoing, UserLoginResponseType, UserSessionsResponseType, } from '@definition/api'; import { apiDefault } from './common'; +import { APRecordType } from '@definition/ministry'; export const apiPocketSignup = async (code: string) => { const { apiHost, appVersion: appversion } = await apiDefault(); @@ -111,3 +113,57 @@ export const apiPocketFieldServiceReportPost = async (report: object) => { throw new Error(data.message); } }; + +export const apiGetPocketApplications = async (): Promise => { + const { apiHost, appVersion: appversion } = await apiDefault(); + + const res = await fetch(`${apiHost}api/v3/pockets/applications`, { + method: 'GET', + credentials: 'include', + headers: { + 'Content-Type': 'application/json', + appclient: 'organized', + appversion, + }, + }); + + const data = await res.json(); + + if (res.status !== 200) { + throw new Error(data.message); + } + + return data; +}; + +export const apiPocketSubmitApplication = async ( + application: APFormOutgoing +) => { + const { apiHost, appVersion: appversion } = await apiDefault(); + + const res = await fetch(`${apiHost}api/v3/pockets/applications`, { + method: 'POST', + credentials: 'include', + headers: { + 'Content-Type': 'application/json', + appclient: 'organized', + appversion, + }, + body: JSON.stringify({ application }), + }); + + if (res.ok && res.status === 200) { + const data = await res.json(); + + return { + status: res.status, + message: data.message as string, + }; + } + + if (res.status !== 200) { + const data = await res.json(); + + throw new Error(data.message); + } +}; From 139ac94f8988355f968d5409dd9842c7d525fd4b Mon Sep 17 00:00:00 2001 From: sws2apps-admin Date: Sun, 10 Nov 2024 20:42:51 +0300 Subject: [PATCH 15/27] feat(localize): updated translation from Crowdin --- src/locales/fi-FI/dashboard.json | 4 ++-- src/locales/fi-FI/onboarding.json | 18 +++++++++--------- src/locales/sv-SE/congregation.json | 2 +- src/locales/sv-SE/dashboard.json | 4 ++-- src/locales/sv-SE/onboarding.json | 18 +++++++++--------- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/locales/fi-FI/dashboard.json b/src/locales/fi-FI/dashboard.json index 9348cc890d..532dfd160c 100644 --- a/src/locales/fi-FI/dashboard.json +++ b/src/locales/fi-FI/dashboard.json @@ -106,6 +106,6 @@ "tr_newOrganizedUpdateDesc": "Organized on vielä parempi! Katso, mitä uutta tässä päivityksessä on!", "tr_improvements": "Parannukset:", "tr_ok": "OK", - "tr_migrationTitle": "Migration to Organized succeeded", - "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" + "tr_migrationTitle": "Siirtyminen Organizediin onnistui", + "tr_migrationDesc": "

Onneksi olkoon! Seurakuntatietosi on siirretty Organizediin, uuteen, erittäin parannettuun sovellukseen Jehovan todistajien seurakunnille. Mukavaa tutustumista!

Jos sinulla on teknisiä ongelmia tiedonsiirrossa, lähetä meille sähköpostia osoitteeseen support@organized-app. ja autamme sinua.

" } diff --git a/src/locales/fi-FI/onboarding.json b/src/locales/fi-FI/onboarding.json index a98a0d777d..524cde3150 100644 --- a/src/locales/fi-FI/onboarding.json +++ b/src/locales/fi-FI/onboarding.json @@ -15,7 +15,7 @@ "tr_accountCreated": "Organized tilisi on rekisteröity. Ilmoita seurakunnan ylläpitäjälle, jotta hän voi antaa sinulle tarvittavat oikeudet. Sitten päivitä sivu kirjautuaksesi sisään.", "tr_createCongregationAccount": "Luo seurakunta", "tr_unauthorizedRole": "

Tilisi on valmis! Päästäksesi Organized-sovellukseen, pyydä seurakuntasi sovellushallitsijaa antamaan sinulle käyttöoikeudet ja päivitä sivu 5 minuutin kuluttua.

Vanhimmat voivat ottaa meihin yhteyttä osoitteessa support@organized-app.com, jos he tarvitsevat apua.

", - "tr_oauthAccept": "

Learn more about out Terms of Use and Privacy Policy.

", + "tr_oauthAccept": "

Lisätietoja Käyttöehdot ja Yksityisyyden suoja.

", "tr_signInDesc": "Valitse, miten haluat kirjautua sisään", "tr_emailAuth": "Sähköpostivarmennus", "tr_emailAuthDesc": "Syötä sähköpostisi saadaksesi linkin Organized-varmennusta varten", @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "Vähintään 8 merkkiä", "tr_congregationAccessCodeSet": "Aseta pääsykoodi", "tr_congregationAccessCodeVerify": "Vahvista seurakunnan pääsykoodi", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Käytä aina eri koodia kuin seurakuntasi pääavainta. Varmista, että koodi on yksinkertainen mutta turvallinen.", "tr_congregationAccessCodeLostDesc": "Syötä seurakuntasi pääsykoodi. Tämä ainutlaatuinen koodi on erityinen seurakunnallesi ja on tarpeen yhdistämiseksi ja sen käyttämiseksi.", "tr_setCongregationMasterKey": "Aseta seurakunnan pääavain", "tr_createCongregationMasterKey": "Luo seurakunnan pääavain", @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Seurakunnan pääsykoodi", "tr_congregationMasterKeyLostDesc": "Syötä seurakuntasi pääavain päästäksesi siihen", "tr_congregationMasterKeyAsk": "Syötä seurakunnan pääavain", - "tr_cantFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Etkö löydä seurakuntaasi?", "tr_cantFindCongregationDesc": "Tarkista virheet (vähimmäismerkintä on 2 merkkiä). Jos seurakuntaasi ei ole luettelossa jw.org:in haku sivulla, ota yhteyttä support@organized-app.com saadaksesi apua.", "tr_appFunctionalityDataPrivacy": "Sovellusten toiminnallisuus ja tietosuoja", "tr_appIntro": "Organized on epävirallinen sovellus Jehovan todistajille, innokkaat veljet ja sisaret ovat sen tehneet. Se yksinkertaistaa erilaisia velvollisuuksia seurakunnassa. Pyydämme, että saat hyväksynnän vanhimmistolta ennen kuin rekisteröit seurakuntasi.", @@ -117,10 +117,10 @@ "tr_illustrationTerritoriesDescription": "Tarkastele ja muokkaa alueita, katso myöhässä olevat ja kadonneet kortit. Seuraa “Älä soita” historiaa ja tulosta uusia kortteja. Määritä alue julistajalle, ja he näkevät sen niiden alueiden luettelossa. Seuraa kattavuustilastot ja vienti S-13 tiedostoon.", "tr_illustrationOtherSchedulesHeader": "Monia muita hyödyllisiä aikatauluja", "tr_illustrationOtherSchedulesDescription": "Organized yksinkertaistaa aikataulutuksen siivouksen, kierrosviikon, salin huollon, julkisen todistuksen ja seurakunnan muut velvollisuuksien kohden. Sen avulla julistajat voi helpommin seurata ja osallistua seurakunnan toimintaan.", - "tr_howAreTheCodesDifferent": "How are the codes different?", - "tr_howAreTheCodesDifferentDesc": "Access code: For all users to join your congregation; Master key: Higher-level access for responsible brothers.", - "tr_createMasterKey": "Create master key", - "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", - "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_howAreTheCodesDifferent": "Miten koodit eroavat?", + "tr_howAreTheCodesDifferentDesc": "Pääsykoodi: Kaikkien käyttäjien liittyminen seurakuntaan; Pääavain: Korkeampi pääsy vastuullisille veljille.", + "tr_createMasterKey": "Luo pääavain", + "tr_createMasterKeyDesc": "

Ensiksi luo seurakunnan pääavain. Se salaa turvallisesti seurakuntasi tiedot, mukaan lukien raportit ja henkilöt, ja se on olennaisen tärkeää hallinnollisissa tehtävissä, kuten tietojen viennissä/tuonnissa ja asetuksissa.

", + "tr_createAccessCode": "Luo pääsykoodi", + "tr_createAccessCodeDesc": "

Lopuksi, luo pääsykoodi. Tämä ainutlaatuinen koodi sallii uusien käyttäjien yhteyden ja kirjautua sisään turvallisesti. Se salaa tietoja ja sitä tarvitaan seurakuntasi käyttöön Organized-sovelluksessa.

" } diff --git a/src/locales/sv-SE/congregation.json b/src/locales/sv-SE/congregation.json index 44cc5c15ec..82cff3dbe0 100644 --- a/src/locales/sv-SE/congregation.json +++ b/src/locales/sv-SE/congregation.json @@ -356,7 +356,7 @@ "tr_shortNote": "Kort anteckning", "tr_selectPerson": "Välj person", "tr_selectPersonError": "Du måste välja en person att koppla till användarprofilen", - "tr_congregationSecurityDesc": "I Organized är din integritet och säkerhet högsta prioritet. Appen har flera skyddslager på plats. Två viktiga är 'Församlingsåtkomstkod' och 'Församlingshuvudkod'. Dessa håller församlingsdata säkert krypterad och tillåter endast behöriga användare att komma åt den. Läs mer om dessa och andra säkerhetsfunktioner.", + "tr_congregationSecurityDesc": "I Organized är din integritet och säkerhet högsta prioritet. Appen har flera skyddslager på plats. Två viktiga är 'åtkomstkoden' och 'huvudkoden'. Dessa håller församlingsdata säkert krypterad och tillåter endast behöriga användare att komma åt den. Läs mer om dessa och andra säkerhetsfunktioner.", "tr_congregationMasterKey": "Församlingens huvudkod", "tr_congregationMasterKeyDesc": "Denna kod är viktig för att säkert komma åt församlingsdata, inklusive församlingens och tjänsterapporter, personlistan och annan information som endast är tillgänglig för förordnade bröder. Det är den viktigaste koden – att förlora den kan innebära att all församlingsdata går förlorad.", "tr_congregationAccessCodeDesc": "Detta är din församlings unika kod för att ansluta nya användare eller logga in. Den används för att kryptera församlingsdata för alla användare.", diff --git a/src/locales/sv-SE/dashboard.json b/src/locales/sv-SE/dashboard.json index d595472239..ceb549bcb2 100644 --- a/src/locales/sv-SE/dashboard.json +++ b/src/locales/sv-SE/dashboard.json @@ -106,6 +106,6 @@ "tr_newOrganizedUpdateDesc": "Organized blev bättre! Se vad som är nytt i denna uppdatering!", "tr_improvements": "Förbättringar:", "tr_ok": "OK", - "tr_migrationTitle": "Migration to Organized succeeded", - "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" + "tr_migrationTitle": "Migreringen till Organized lyckades", + "tr_migrationDesc": "

Grattis! Dina församlingsdata har migrerats till Organized, en ny, mycket förbättrad program för Jehovas vittnens församlingar. Gå på upptäcksfärd!

Om du stöter på tekniska problem med dataöverföringen, maila oss på support@organized-app så hjälper vi dig.

" } diff --git a/src/locales/sv-SE/onboarding.json b/src/locales/sv-SE/onboarding.json index bddd8af632..82e0339891 100644 --- a/src/locales/sv-SE/onboarding.json +++ b/src/locales/sv-SE/onboarding.json @@ -15,7 +15,7 @@ "tr_accountCreated": "Ditt Organisezed konto är registrerat. Meddela din församlingsadministratör så att han kan tilldela dig de nödvändiga behörigheterna. Uppdatera sedan sidan för att logga in.", "tr_createCongregationAccount": "Skapa församling", "tr_unauthorizedRole": "

Du har för tillfället inte behörighet att använda denna applikation. Vänligen kontakta dina församlingsäldste för att verifiera din roll och försök igen om 5 minuter. Om de behöver ytterligare assistans kan de kontakta oss via e-post.

", - "tr_oauthAccept": "

Learn more about out Terms of Use and Privacy Policy.

", + "tr_oauthAccept": "

Lär mer om Användarvillkor och sekretesspolicy.

", "tr_signInDesc": "Välj hur du vill logga in", "tr_emailAuth": "E-postautentisering", "tr_emailAuthDesc": "Ange din e-postadress för att få en länk för Organized-autentisering", @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "Minst 8 tecken", "tr_congregationAccessCodeSet": "Ställ in åtkomstkod", "tr_congregationAccessCodeVerify": "Verifiera församlingens åtkomstkod", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Använd alltid en annan kod än församlingens huvudkod. Se till att koden är enkel men säker.", "tr_congregationAccessCodeLostDesc": "Vänligen ange åtkomstkoden till din församling. Denna unika kod är specifik för din församling och är nödvändig för att ansluta och få åtkomst.", "tr_setCongregationMasterKey": "Ställ in församlingens huvudnyckel", "tr_createCongregationMasterKey": "Skapa församlingens huvudnyckel", @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Församlingens åtkomstkod", "tr_congregationMasterKeyLostDesc": "Ange din församlingens huvudkod för att få åtkomst", "tr_congregationMasterKeyAsk": "Ange församlingens huvudkod", - "tr_cantFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Kan du inte hitta din församling?", "tr_cantFindCongregationDesc": "Kontrollera om det finns några fel (minst 2 tecken). Om din församling inte finns med på jw.org söksidan, kontakta support@organized-app.com för hjälp.", "tr_appFunctionalityDataPrivacy": "Appens funktionalitet och dataintegritet", "tr_appIntro": "Organiserad är en inofficiell app för Jehovas vittnen skapade av entusiastiska bröder och systrar. Det förenklar olika ansvarsområden i församlingen. Vänligen få ett godkännande från äldstekretsen innan du registrerar din församling.", @@ -117,10 +117,10 @@ "tr_illustrationTerritoriesDescription": "Visa och redigera distrikt, se försenade och förlorade distriktskort. Spåra ”Ring inte”, uppgiftshistorik och skriv ut nya distriktskort. Tilldela ett område till förkunnare, så ser de det i sin lista över distrikt. Se statistik och exportera S-13 dokument.", "tr_illustrationOtherSchedulesHeader": "Många andra användbara scheman", "tr_illustrationOtherSchedulesDescription": "Organized gör schemaläggning av städning, kretsbesök, underhållsarbete, offentlig tjänst, församlingsuppgifter och andra delar av församlingslivet enklare för förordnade bröder. Den gör det även enklare för förkunnarna att följa och delta i församlingens aktiviteter.", - "tr_howAreTheCodesDifferent": "How are the codes different?", - "tr_howAreTheCodesDifferentDesc": "Access code: For all users to join your congregation; Master key: Higher-level access for responsible brothers.", - "tr_createMasterKey": "Create master key", - "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", - "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_howAreTheCodesDifferent": "Hur skiljer sig koderna?", + "tr_howAreTheCodesDifferentDesc": "Åtkomstkod: För alla användare som är med i din församling; Huvudkod: högre access endast för ansvariga bröder.", + "tr_createMasterKey": "Skapa huvudkod", + "tr_createMasterKeyDesc": "

Skapa först församlingens huvudkod. Det krypterar på ett säkert sätt församlingens data, rapporter och personer, och är viktigt för administrativa uppgifter som dataexport/import och inställningar.

", + "tr_createAccessCode": "Skapa åtkomstkod", + "tr_createAccessCodeDesc": "

Slutligen skapa åtkomstkoden. Denna unika kod tillåter nya användare att ansluta och logga in på ett säkert sätt. Det krypterar data och krävs för att komma åt din församling i Organizedappen.

" } From 0bf6ce66739fbfb893c48d9434d74b52b768bb50 Mon Sep 17 00:00:00 2001 From: sws2apps-admin Date: Mon, 11 Nov 2024 08:21:19 +0300 Subject: [PATCH 16/27] feat(localize): updated translation from Crowdin --- src/locales/ceb-PH/congregation.json | 4 +++- src/locales/ceb-PH/onboarding.json | 4 ++-- src/locales/ch-CHS/congregation.json | 4 +++- src/locales/ch-CHS/onboarding.json | 2 +- src/locales/de-DE/congregation.json | 4 +++- src/locales/de-DE/onboarding.json | 4 ++-- src/locales/en/congregation.json | 2 +- src/locales/en/onboarding.json | 4 ++-- src/locales/es-ES/congregation.json | 4 +++- src/locales/es-ES/onboarding.json | 4 ++-- src/locales/es-SSP/congregation.json | 4 +++- src/locales/es-SSP/onboarding.json | 4 ++-- src/locales/fi-FI/congregation.json | 4 +++- src/locales/fi-FI/onboarding.json | 2 +- src/locales/fr-FR/congregation.json | 4 +++- src/locales/fr-FR/onboarding.json | 4 ++-- src/locales/hu-HU/congregation.json | 4 +++- src/locales/hu-HU/onboarding.json | 4 ++-- src/locales/hy-AM/congregation.json | 4 +++- src/locales/hy-AM/onboarding.json | 4 ++-- src/locales/it-IT/congregation.json | 4 +++- src/locales/it-IT/onboarding.json | 4 ++-- src/locales/ja-JP/congregation.json | 4 +++- src/locales/ja-JP/onboarding.json | 4 ++-- src/locales/ko-KR/congregation.json | 4 +++- src/locales/ko-KR/onboarding.json | 2 +- src/locales/mg-MG/congregation.json | 4 +++- src/locales/mg-MG/onboarding.json | 4 ++-- src/locales/mg-TND/congregation.json | 4 +++- src/locales/mg-TND/onboarding.json | 4 ++-- src/locales/mg-TNK/congregation.json | 4 +++- src/locales/mg-TNK/onboarding.json | 4 ++-- src/locales/mg-TTM/congregation.json | 4 +++- src/locales/mg-TTM/onboarding.json | 4 ++-- src/locales/mg-VZ/congregation.json | 4 +++- src/locales/mg-VZ/onboarding.json | 4 ++-- src/locales/mn-MN/congregation.json | 4 +++- src/locales/mn-MN/onboarding.json | 4 ++-- src/locales/ne-NP/congregation.json | 4 +++- src/locales/ne-NP/onboarding.json | 4 ++-- src/locales/nl-NL/congregation.json | 4 +++- src/locales/nl-NL/onboarding.json | 4 ++-- src/locales/pl-PL/congregation.json | 4 +++- src/locales/pl-PL/onboarding.json | 4 ++-- src/locales/pt-BR/congregation.json | 4 +++- src/locales/pt-BR/onboarding.json | 4 ++-- src/locales/pt-PT/congregation.json | 4 +++- src/locales/pt-PT/onboarding.json | 4 ++-- src/locales/ro-RO/congregation.json | 4 +++- src/locales/ro-RO/onboarding.json | 4 ++-- src/locales/ru-RU/congregation.json | 4 +++- src/locales/ru-RU/onboarding.json | 4 ++-- src/locales/sl-SI/congregation.json | 4 +++- src/locales/sl-SI/onboarding.json | 4 ++-- src/locales/sv-SE/congregation.json | 4 +++- src/locales/sv-SE/onboarding.json | 2 +- src/locales/sw-KE/congregation.json | 4 +++- src/locales/sw-KE/onboarding.json | 4 ++-- src/locales/tl-PH/congregation.json | 4 +++- src/locales/tl-PH/onboarding.json | 4 ++-- src/locales/tr-TR/congregation.json | 4 +++- src/locales/tr-TR/onboarding.json | 4 ++-- src/locales/tw-TW/congregation.json | 4 +++- src/locales/tw-TW/onboarding.json | 4 ++-- src/locales/uk-UA/congregation.json | 4 +++- src/locales/uk-UA/onboarding.json | 6 +++--- src/locales/vi-VN/congregation.json | 4 +++- src/locales/vi-VN/onboarding.json | 4 ++-- 68 files changed, 165 insertions(+), 99 deletions(-) diff --git a/src/locales/ceb-PH/congregation.json b/src/locales/ceb-PH/congregation.json index f0044c493c..b9ae2c65b1 100644 --- a/src/locales/ceb-PH/congregation.json +++ b/src/locales/ceb-PH/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/ceb-PH/onboarding.json b/src/locales/ceb-PH/onboarding.json index fbe655d0fb..fcfa75107b 100644 --- a/src/locales/ceb-PH/onboarding.json +++ b/src/locales/ceb-PH/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "At least 8 characters", "tr_congregationAccessCodeSet": "Set access code", "tr_congregationAccessCodeVerify": "Confirm congregation access code", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Please enter the access code to your congregation. This unique code is specific to your congregation and is necessary to connect and access it.", "tr_setCongregationMasterKey": "Set congregation master key", "tr_createCongregationMasterKey": "Create congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/ch-CHS/congregation.json b/src/locales/ch-CHS/congregation.json index 45f266f731..e319071bec 100644 --- a/src/locales/ch-CHS/congregation.json +++ b/src/locales/ch-CHS/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "还没有传道小组。创建小组后,小组信息将会立即出现在这里。", "tr_serviceYearAlt": "{{ year }}工作年度", "tr_speakersOutgoing": "探访讲者", - "tr_speakersLocal": "本地讲者" + "tr_speakersLocal": "本地讲者", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/ch-CHS/onboarding.json b/src/locales/ch-CHS/onboarding.json index 698cd1e5f4..e63298949e 100644 --- a/src/locales/ch-CHS/onboarding.json +++ b/src/locales/ch-CHS/onboarding.json @@ -122,5 +122,5 @@ "tr_createMasterKey": "创建主密钥", "tr_createMasterKeyDesc": "

首先,创建您的会众主密钥。 它可以安全地加密您的会众数据,包括报告和人员信息,并且是执行管理任务(如数据导入/导出和设置调整)所必需的。

", "tr_createAccessCode": "创建访问代码", - "tr_createAccessCodeDesc": "

最后,创建访问代码。 这个独特的代码允许新用户安全地连接并登录。它加密数据,并且是通过 Organized 应用访问您的会众必需的。

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/de-DE/congregation.json b/src/locales/de-DE/congregation.json index 1c9071239e..2e160d7f3f 100644 --- a/src/locales/de-DE/congregation.json +++ b/src/locales/de-DE/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Auswärtige Redner", - "tr_speakersLocal": "Lokale Redner" + "tr_speakersLocal": "Lokale Redner", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/de-DE/onboarding.json b/src/locales/de-DE/onboarding.json index 840523a2cf..c382c06c2e 100644 --- a/src/locales/de-DE/onboarding.json +++ b/src/locales/de-DE/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "Mindestens 8 Zeichen", "tr_congregationAccessCodeSet": "Zugangscode setzen", "tr_congregationAccessCodeVerify": "Versammlungszugangscode bestätigen", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Bitte gib den Zugriffscode für deine Versammlung ein. Dieser einzigartige Code ist spezifisch für deine Versammlung und notwendig, um dich zu verbinden und darauf zuzugreifen.", "tr_setCongregationMasterKey": "Versammlungs-Hauptschlüssel festlegen", "tr_createCongregationMasterKey": "Versammlungs-Hauptschlüssel erstellen", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/en/congregation.json b/src/locales/en/congregation.json index 09e30e7336..068919490b 100644 --- a/src/locales/en/congregation.json +++ b/src/locales/en/congregation.json @@ -442,5 +442,5 @@ "tr_speakersOutgoing": "Outgoing speakers", "tr_speakersLocal": "Local speakers", "tr_addUserSyncNeeded": "Enable congregation sync to add users", - "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add multiple users and devices for easier collaboration. You can turn this feature on or off anytime in the congregation settings." + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/en/onboarding.json b/src/locales/en/onboarding.json index fbe655d0fb..fcfa75107b 100644 --- a/src/locales/en/onboarding.json +++ b/src/locales/en/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "At least 8 characters", "tr_congregationAccessCodeSet": "Set access code", "tr_congregationAccessCodeVerify": "Confirm congregation access code", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Please enter the access code to your congregation. This unique code is specific to your congregation and is necessary to connect and access it.", "tr_setCongregationMasterKey": "Set congregation master key", "tr_createCongregationMasterKey": "Create congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/es-ES/congregation.json b/src/locales/es-ES/congregation.json index dcf7ede423..2f38f08aec 100644 --- a/src/locales/es-ES/congregation.json +++ b/src/locales/es-ES/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/es-ES/onboarding.json b/src/locales/es-ES/onboarding.json index 856e7b26f6..6669a13512 100644 --- a/src/locales/es-ES/onboarding.json +++ b/src/locales/es-ES/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "At least 8 characters", "tr_congregationAccessCodeSet": "Set access code", "tr_congregationAccessCodeVerify": "Confirm congregation access code", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Please enter the access code to your congregation. This unique code is specific to your congregation and is necessary to connect and access it.", "tr_setCongregationMasterKey": "Set congregation master key", "tr_createCongregationMasterKey": "Create congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/es-SSP/congregation.json b/src/locales/es-SSP/congregation.json index 915deef318..428e973bac 100644 --- a/src/locales/es-SSP/congregation.json +++ b/src/locales/es-SSP/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/es-SSP/onboarding.json b/src/locales/es-SSP/onboarding.json index 856e7b26f6..6669a13512 100644 --- a/src/locales/es-SSP/onboarding.json +++ b/src/locales/es-SSP/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "At least 8 characters", "tr_congregationAccessCodeSet": "Set access code", "tr_congregationAccessCodeVerify": "Confirm congregation access code", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Please enter the access code to your congregation. This unique code is specific to your congregation and is necessary to connect and access it.", "tr_setCongregationMasterKey": "Set congregation master key", "tr_createCongregationMasterKey": "Create congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/fi-FI/congregation.json b/src/locales/fi-FI/congregation.json index e7e1e55a2a..ad4d70585d 100644 --- a/src/locales/fi-FI/congregation.json +++ b/src/locales/fi-FI/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "Ei kenttäryhmiä vielä. Ne ilmestyvät tänne heti kun ne on luotu.", "tr_serviceYearAlt": "Palvelusvuosi {{ year }}", "tr_speakersOutgoing": "Lähtevät puhujat", - "tr_speakersLocal": "Paikalliset puhujat" + "tr_speakersLocal": "Paikalliset puhujat", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/fi-FI/onboarding.json b/src/locales/fi-FI/onboarding.json index 524cde3150..1ec32925bf 100644 --- a/src/locales/fi-FI/onboarding.json +++ b/src/locales/fi-FI/onboarding.json @@ -122,5 +122,5 @@ "tr_createMasterKey": "Luo pääavain", "tr_createMasterKeyDesc": "

Ensiksi luo seurakunnan pääavain. Se salaa turvallisesti seurakuntasi tiedot, mukaan lukien raportit ja henkilöt, ja se on olennaisen tärkeää hallinnollisissa tehtävissä, kuten tietojen viennissä/tuonnissa ja asetuksissa.

", "tr_createAccessCode": "Luo pääsykoodi", - "tr_createAccessCodeDesc": "

Lopuksi, luo pääsykoodi. Tämä ainutlaatuinen koodi sallii uusien käyttäjien yhteyden ja kirjautua sisään turvallisesti. Se salaa tietoja ja sitä tarvitaan seurakuntasi käyttöön Organized-sovelluksessa.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/fr-FR/congregation.json b/src/locales/fr-FR/congregation.json index eb8faee892..5ed743ddea 100644 --- a/src/locales/fr-FR/congregation.json +++ b/src/locales/fr-FR/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "Aucun groupe de prédication pour le moment. Les groupes apparaîtront automatiquement ici dès qu'ils seront créé.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/fr-FR/onboarding.json b/src/locales/fr-FR/onboarding.json index 8b6cf765c3..5dbdd301c8 100644 --- a/src/locales/fr-FR/onboarding.json +++ b/src/locales/fr-FR/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "8 caractères minimum", "tr_congregationAccessCodeSet": "Définir le code d'accès", "tr_congregationAccessCodeVerify": "Vérifier le code d'accès de l'assemblée", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Veuillez entrer le code d'accès de votre assemblée. Ce code unique est spécifique à votre assemblée et est nécessaire pour vous y connecter.", "tr_setCongregationMasterKey": "Définir la clé principale de l'assemblée", "tr_createCongregationMasterKey": "Créer la clé principale de l'assemblée", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/hu-HU/congregation.json b/src/locales/hu-HU/congregation.json index f5cc0ce9a7..068919490b 100644 --- a/src/locales/hu-HU/congregation.json +++ b/src/locales/hu-HU/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/hu-HU/onboarding.json b/src/locales/hu-HU/onboarding.json index fbe655d0fb..fcfa75107b 100644 --- a/src/locales/hu-HU/onboarding.json +++ b/src/locales/hu-HU/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "At least 8 characters", "tr_congregationAccessCodeSet": "Set access code", "tr_congregationAccessCodeVerify": "Confirm congregation access code", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Please enter the access code to your congregation. This unique code is specific to your congregation and is necessary to connect and access it.", "tr_setCongregationMasterKey": "Set congregation master key", "tr_createCongregationMasterKey": "Create congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/hy-AM/congregation.json b/src/locales/hy-AM/congregation.json index 20d2f9edd3..2497160e55 100644 --- a/src/locales/hy-AM/congregation.json +++ b/src/locales/hy-AM/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/hy-AM/onboarding.json b/src/locales/hy-AM/onboarding.json index 0887558abe..0d9050690b 100644 --- a/src/locales/hy-AM/onboarding.json +++ b/src/locales/hy-AM/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "At least 8 characters", "tr_congregationAccessCodeSet": "Set access code", "tr_congregationAccessCodeVerify": "Confirm congregation access code", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Please enter the access code to your congregation. This unique code is specific to your congregation and is necessary to connect and access it.", "tr_setCongregationMasterKey": "Set congregation master key", "tr_createCongregationMasterKey": "Create congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/it-IT/congregation.json b/src/locales/it-IT/congregation.json index 6de99e829f..f3faf3a55f 100644 --- a/src/locales/it-IT/congregation.json +++ b/src/locales/it-IT/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "Ancora nessun gruppo di servizio di campo. I gruppi appariranno qui non appena saranno creati.", "tr_serviceYearAlt": "Anno di servizio {{ year }}", "tr_speakersOutgoing": "Oratori uscenti", - "tr_speakersLocal": "Oratori locali" + "tr_speakersLocal": "Oratori locali", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/it-IT/onboarding.json b/src/locales/it-IT/onboarding.json index fbe655d0fb..fcfa75107b 100644 --- a/src/locales/it-IT/onboarding.json +++ b/src/locales/it-IT/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "At least 8 characters", "tr_congregationAccessCodeSet": "Set access code", "tr_congregationAccessCodeVerify": "Confirm congregation access code", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Please enter the access code to your congregation. This unique code is specific to your congregation and is necessary to connect and access it.", "tr_setCongregationMasterKey": "Set congregation master key", "tr_createCongregationMasterKey": "Create congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/ja-JP/congregation.json b/src/locales/ja-JP/congregation.json index 03f3e59bc0..2b99d4adfe 100644 --- a/src/locales/ja-JP/congregation.json +++ b/src/locales/ja-JP/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/ja-JP/onboarding.json b/src/locales/ja-JP/onboarding.json index b5350bade5..5ad47a6f1d 100644 --- a/src/locales/ja-JP/onboarding.json +++ b/src/locales/ja-JP/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "少なくとも8文字以上", "tr_congregationAccessCodeSet": "アクセスコードの設定", "tr_congregationAccessCodeVerify": "会衆のアクセスコードを確認", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "あなたの会衆のアクセスコードを入力してください。このコードは会衆固有のものであり、Organized上でアクセスするために必要です。", "tr_setCongregationMasterKey": "会衆のマスターキーを設定", "tr_createCongregationMasterKey": "会衆のマスターキーを作成", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/ko-KR/congregation.json b/src/locales/ko-KR/congregation.json index 6df2b49d60..62c87740f6 100644 --- a/src/locales/ko-KR/congregation.json +++ b/src/locales/ko-KR/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "야외봉사 집단이 없습니다. 집단이 만들어지면 여기에 나타납니다.", "tr_serviceYearAlt": "{{ year }} 봉사연도", "tr_speakersOutgoing": "외부 연사", - "tr_speakersLocal": "현지 연사" + "tr_speakersLocal": "현지 연사", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/ko-KR/onboarding.json b/src/locales/ko-KR/onboarding.json index 503636b668..f157a4c8f7 100644 --- a/src/locales/ko-KR/onboarding.json +++ b/src/locales/ko-KR/onboarding.json @@ -122,5 +122,5 @@ "tr_createMasterKey": "마스터 키 생성", "tr_createMasterKeyDesc": "

먼저, 회중 주 마스터키를 생성하세요. 이 키는 보고서와 사람들을 포함한 회중의 데이터를 안전하게 암호화하며, 데이터 내보내기/가져오기 및 설정 조정과 같은 관리 작업에 필수적입니다.

", "tr_createAccessCode": "액세스 코드 생성", - "tr_createAccessCodeDesc": "

마지막으로, 액세스 코드를 생성하세요. 이 고유한 코드는 새 사용자가 안전하게 연결하고 로그인할 수 있도록 해줍니다. 데이터를 암호화하며, Organized 앱에서 귀하의 회중에 접근하는 데 필요합니다.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/mg-MG/congregation.json b/src/locales/mg-MG/congregation.json index 23d3f11dae..d77b9dc273 100644 --- a/src/locales/mg-MG/congregation.json +++ b/src/locales/mg-MG/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "Tsy mbola misy andiam-pitory. Hiseho eto izany rehefa avy amboarina.", "tr_serviceYearAlt": "Taom-panompoana {{ year }}", "tr_speakersOutgoing": "Mpitsidika", - "tr_speakersLocal": "Eo an-toerana" + "tr_speakersLocal": "Eo an-toerana", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/mg-MG/onboarding.json b/src/locales/mg-MG/onboarding.json index 7aae46f4be..7b5c710393 100644 --- a/src/locales/mg-MG/onboarding.json +++ b/src/locales/mg-MG/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "Litera 8 farafahakeliny", "tr_congregationAccessCodeSet": "Hitahiry ny kaody fidirana", "tr_congregationAccessCodeVerify": "Hamarino ny kaody fidirana", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Ampidiro ny kaody fidirana. Ny fiangonanareo ihany no mampiasa an’io kaody io, ary ilaina izy io rehefa hampiasa ity programa ity.", "tr_setCongregationMasterKey": "Hitahiry ny kaody manokana", "tr_createCongregationMasterKey": "Hamorona kaody manokana", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/mg-TND/congregation.json b/src/locales/mg-TND/congregation.json index 23d3f11dae..d77b9dc273 100644 --- a/src/locales/mg-TND/congregation.json +++ b/src/locales/mg-TND/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "Tsy mbola misy andiam-pitory. Hiseho eto izany rehefa avy amboarina.", "tr_serviceYearAlt": "Taom-panompoana {{ year }}", "tr_speakersOutgoing": "Mpitsidika", - "tr_speakersLocal": "Eo an-toerana" + "tr_speakersLocal": "Eo an-toerana", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/mg-TND/onboarding.json b/src/locales/mg-TND/onboarding.json index 7aae46f4be..7b5c710393 100644 --- a/src/locales/mg-TND/onboarding.json +++ b/src/locales/mg-TND/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "Litera 8 farafahakeliny", "tr_congregationAccessCodeSet": "Hitahiry ny kaody fidirana", "tr_congregationAccessCodeVerify": "Hamarino ny kaody fidirana", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Ampidiro ny kaody fidirana. Ny fiangonanareo ihany no mampiasa an’io kaody io, ary ilaina izy io rehefa hampiasa ity programa ity.", "tr_setCongregationMasterKey": "Hitahiry ny kaody manokana", "tr_createCongregationMasterKey": "Hamorona kaody manokana", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/mg-TNK/congregation.json b/src/locales/mg-TNK/congregation.json index 23d3f11dae..d77b9dc273 100644 --- a/src/locales/mg-TNK/congregation.json +++ b/src/locales/mg-TNK/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "Tsy mbola misy andiam-pitory. Hiseho eto izany rehefa avy amboarina.", "tr_serviceYearAlt": "Taom-panompoana {{ year }}", "tr_speakersOutgoing": "Mpitsidika", - "tr_speakersLocal": "Eo an-toerana" + "tr_speakersLocal": "Eo an-toerana", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/mg-TNK/onboarding.json b/src/locales/mg-TNK/onboarding.json index 7aae46f4be..7b5c710393 100644 --- a/src/locales/mg-TNK/onboarding.json +++ b/src/locales/mg-TNK/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "Litera 8 farafahakeliny", "tr_congregationAccessCodeSet": "Hitahiry ny kaody fidirana", "tr_congregationAccessCodeVerify": "Hamarino ny kaody fidirana", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Ampidiro ny kaody fidirana. Ny fiangonanareo ihany no mampiasa an’io kaody io, ary ilaina izy io rehefa hampiasa ity programa ity.", "tr_setCongregationMasterKey": "Hitahiry ny kaody manokana", "tr_createCongregationMasterKey": "Hamorona kaody manokana", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/mg-TTM/congregation.json b/src/locales/mg-TTM/congregation.json index 23d3f11dae..d77b9dc273 100644 --- a/src/locales/mg-TTM/congregation.json +++ b/src/locales/mg-TTM/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "Tsy mbola misy andiam-pitory. Hiseho eto izany rehefa avy amboarina.", "tr_serviceYearAlt": "Taom-panompoana {{ year }}", "tr_speakersOutgoing": "Mpitsidika", - "tr_speakersLocal": "Eo an-toerana" + "tr_speakersLocal": "Eo an-toerana", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/mg-TTM/onboarding.json b/src/locales/mg-TTM/onboarding.json index 7aae46f4be..7b5c710393 100644 --- a/src/locales/mg-TTM/onboarding.json +++ b/src/locales/mg-TTM/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "Litera 8 farafahakeliny", "tr_congregationAccessCodeSet": "Hitahiry ny kaody fidirana", "tr_congregationAccessCodeVerify": "Hamarino ny kaody fidirana", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Ampidiro ny kaody fidirana. Ny fiangonanareo ihany no mampiasa an’io kaody io, ary ilaina izy io rehefa hampiasa ity programa ity.", "tr_setCongregationMasterKey": "Hitahiry ny kaody manokana", "tr_createCongregationMasterKey": "Hamorona kaody manokana", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/mg-VZ/congregation.json b/src/locales/mg-VZ/congregation.json index e9050f6e02..03bdb42250 100644 --- a/src/locales/mg-VZ/congregation.json +++ b/src/locales/mg-VZ/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "Tsy mbola misy andiam-pitory. Hiseho eto izany rehefa avy amboarina.", "tr_serviceYearAlt": "Taom-panompoana {{ year }}", "tr_speakersOutgoing": "Mpitsidika", - "tr_speakersLocal": "Eo an-toerana" + "tr_speakersLocal": "Eo an-toerana", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/mg-VZ/onboarding.json b/src/locales/mg-VZ/onboarding.json index 8835d67580..274c8e6368 100644 --- a/src/locales/mg-VZ/onboarding.json +++ b/src/locales/mg-VZ/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "Litera 8 farafahakeliny", "tr_congregationAccessCodeSet": "Hanajary ty kôdy filira", "tr_congregationAccessCodeVerify": "Hamarino ty kôdy filira", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Ampiliro ty kôdy filira. Ty fiangonanareo avao ro mampiasa an'ny kôdy io, le ilà raha io lafa hampiasa an'ny programa toy.", "tr_setCongregationMasterKey": "Hanajary kôdy manoka", "tr_createCongregationMasterKey": "Hamoro kôdy manoka", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/mn-MN/congregation.json b/src/locales/mn-MN/congregation.json index f5cc0ce9a7..068919490b 100644 --- a/src/locales/mn-MN/congregation.json +++ b/src/locales/mn-MN/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/mn-MN/onboarding.json b/src/locales/mn-MN/onboarding.json index fbe655d0fb..fcfa75107b 100644 --- a/src/locales/mn-MN/onboarding.json +++ b/src/locales/mn-MN/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "At least 8 characters", "tr_congregationAccessCodeSet": "Set access code", "tr_congregationAccessCodeVerify": "Confirm congregation access code", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Please enter the access code to your congregation. This unique code is specific to your congregation and is necessary to connect and access it.", "tr_setCongregationMasterKey": "Set congregation master key", "tr_createCongregationMasterKey": "Create congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/ne-NP/congregation.json b/src/locales/ne-NP/congregation.json index 4ee6837cd9..e2e70a7c1b 100644 --- a/src/locales/ne-NP/congregation.json +++ b/src/locales/ne-NP/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/ne-NP/onboarding.json b/src/locales/ne-NP/onboarding.json index 01ab8df611..9c1bc3e8b5 100644 --- a/src/locales/ne-NP/onboarding.json +++ b/src/locales/ne-NP/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "At least 8 characters", "tr_congregationAccessCodeSet": "Set access code", "tr_congregationAccessCodeVerify": "Confirm congregation access code", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Please enter the access code to your congregation. This unique code is specific to your congregation and is necessary to connect and access it.", "tr_setCongregationMasterKey": "Set congregation master key", "tr_createCongregationMasterKey": "Create congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/nl-NL/congregation.json b/src/locales/nl-NL/congregation.json index f5cc0ce9a7..068919490b 100644 --- a/src/locales/nl-NL/congregation.json +++ b/src/locales/nl-NL/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/nl-NL/onboarding.json b/src/locales/nl-NL/onboarding.json index b9100f3f4a..5876d05564 100644 --- a/src/locales/nl-NL/onboarding.json +++ b/src/locales/nl-NL/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "At least 8 characters", "tr_congregationAccessCodeSet": "Set access code", "tr_congregationAccessCodeVerify": "Confirm congregation access code", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Please enter the access code to your congregation. This unique code is specific to your congregation and is necessary to connect and access it.", "tr_setCongregationMasterKey": "Set congregation master key", "tr_createCongregationMasterKey": "Create congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/pl-PL/congregation.json b/src/locales/pl-PL/congregation.json index 65fd65ba36..10ac6daa92 100644 --- a/src/locales/pl-PL/congregation.json +++ b/src/locales/pl-PL/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/pl-PL/onboarding.json b/src/locales/pl-PL/onboarding.json index e506014459..57ad3871af 100644 --- a/src/locales/pl-PL/onboarding.json +++ b/src/locales/pl-PL/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "At least 8 characters", "tr_congregationAccessCodeSet": "Set access code", "tr_congregationAccessCodeVerify": "Confirm congregation access code", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Please enter the access code to your congregation. This unique code is specific to your congregation and is necessary to connect and access it.", "tr_setCongregationMasterKey": "Set congregation master key", "tr_createCongregationMasterKey": "Create congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/pt-BR/congregation.json b/src/locales/pt-BR/congregation.json index 1c2876ed16..1e2ac45680 100644 --- a/src/locales/pt-BR/congregation.json +++ b/src/locales/pt-BR/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "Nenhum grupo de serviços de campo ainda. Os grupos aparecerão aqui assim que forem criados.", "tr_serviceYearAlt": "Ano de serviço {{ year }}", "tr_speakersOutgoing": "Oradores saindo", - "tr_speakersLocal": "Oradores locais" + "tr_speakersLocal": "Oradores locais", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/pt-BR/onboarding.json b/src/locales/pt-BR/onboarding.json index ab4b31041a..aeaba23ed1 100644 --- a/src/locales/pt-BR/onboarding.json +++ b/src/locales/pt-BR/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "Pelo menos 8 caracteres", "tr_congregationAccessCodeSet": "Definir código de acesso", "tr_congregationAccessCodeVerify": "Verificar código de acesso da congregação", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Por favor, digite o código de acesso à sua congregação. Este código único é específico para a sua congregação e é necessário para se conectar e acessá-la.", "tr_setCongregationMasterKey": "Definir chave mestra da congregação", "tr_createCongregationMasterKey": "Criar chave mestra da congregação", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/pt-PT/congregation.json b/src/locales/pt-PT/congregation.json index 07c9e3b34f..68a4229cd8 100644 --- a/src/locales/pt-PT/congregation.json +++ b/src/locales/pt-PT/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/pt-PT/onboarding.json b/src/locales/pt-PT/onboarding.json index 134bdc9e8c..3757c6df96 100644 --- a/src/locales/pt-PT/onboarding.json +++ b/src/locales/pt-PT/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "Pelo menos 8 caracteres", "tr_congregationAccessCodeSet": "Definir código de acesso", "tr_congregationAccessCodeVerify": "Verificar código de acesso da Congregação", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Por favor, insira o código de acesso da sua congregação. Este código único é específico para a sua congregação e é necessário para conectar e aceder.", "tr_setCongregationMasterKey": "Definir chave mestra de Congregação", "tr_createCongregationMasterKey": "Criar chave mestra de Congregação", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/ro-RO/congregation.json b/src/locales/ro-RO/congregation.json index c5170f1515..f2fb4e1e52 100644 --- a/src/locales/ro-RO/congregation.json +++ b/src/locales/ro-RO/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/ro-RO/onboarding.json b/src/locales/ro-RO/onboarding.json index 6050a22fad..c075e9c9c4 100644 --- a/src/locales/ro-RO/onboarding.json +++ b/src/locales/ro-RO/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "Cel puțin 8 caractere", "tr_congregationAccessCodeSet": "Setați codul de acces", "tr_congregationAccessCodeVerify": "Verificați codul de acces pentru congregație", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Please enter the access code to your congregation. This unique code is specific to your congregation and is necessary to connect and access it.", "tr_setCongregationMasterKey": "Set congregation master key", "tr_createCongregationMasterKey": "Create congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/ru-RU/congregation.json b/src/locales/ru-RU/congregation.json index 82daa8ff0f..8281e04792 100644 --- a/src/locales/ru-RU/congregation.json +++ b/src/locales/ru-RU/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "Групп для проповеднического служения еще нет. Они появятся здесь, как только они будут созданы.", "tr_serviceYearAlt": "{{ year }} служебный год", "tr_speakersOutgoing": "Одобренные докладчики", - "tr_speakersLocal": "Местные докладчики" + "tr_speakersLocal": "Местные докладчики", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/ru-RU/onboarding.json b/src/locales/ru-RU/onboarding.json index 5a850259c8..836398402f 100644 --- a/src/locales/ru-RU/onboarding.json +++ b/src/locales/ru-RU/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "Минимум 8 символов", "tr_congregationAccessCodeSet": "Установить код доступа", "tr_congregationAccessCodeVerify": "Подтвердить код доступа собрания", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Пожалуйста, введи код доступа к твоему собранию. Этот уникальный код специально для твоего собрания и он необходим для подключения и доступа к нему.", "tr_setCongregationMasterKey": "Установить главный ключ собрания", "tr_createCongregationMasterKey": "Создай главный ключ собрания", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/sl-SI/congregation.json b/src/locales/sl-SI/congregation.json index 192c3097da..60f11b35c7 100644 --- a/src/locales/sl-SI/congregation.json +++ b/src/locales/sl-SI/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/sl-SI/onboarding.json b/src/locales/sl-SI/onboarding.json index fbe655d0fb..fcfa75107b 100644 --- a/src/locales/sl-SI/onboarding.json +++ b/src/locales/sl-SI/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "At least 8 characters", "tr_congregationAccessCodeSet": "Set access code", "tr_congregationAccessCodeVerify": "Confirm congregation access code", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Please enter the access code to your congregation. This unique code is specific to your congregation and is necessary to connect and access it.", "tr_setCongregationMasterKey": "Set congregation master key", "tr_createCongregationMasterKey": "Create congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/sv-SE/congregation.json b/src/locales/sv-SE/congregation.json index 82cff3dbe0..549c11cd2b 100644 --- a/src/locales/sv-SE/congregation.json +++ b/src/locales/sv-SE/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "Inga tjänstegrupper än. De kommer att synas här när de skapats.", "tr_serviceYearAlt": "Tjänsteår {{ year }}", "tr_speakersOutgoing": "Dina utresande talare", - "tr_speakersLocal": "Lokala talare" + "tr_speakersLocal": "Lokala talare", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/sv-SE/onboarding.json b/src/locales/sv-SE/onboarding.json index 82e0339891..7301e8eb19 100644 --- a/src/locales/sv-SE/onboarding.json +++ b/src/locales/sv-SE/onboarding.json @@ -122,5 +122,5 @@ "tr_createMasterKey": "Skapa huvudkod", "tr_createMasterKeyDesc": "

Skapa först församlingens huvudkod. Det krypterar på ett säkert sätt församlingens data, rapporter och personer, och är viktigt för administrativa uppgifter som dataexport/import och inställningar.

", "tr_createAccessCode": "Skapa åtkomstkod", - "tr_createAccessCodeDesc": "

Slutligen skapa åtkomstkoden. Denna unika kod tillåter nya användare att ansluta och logga in på ett säkert sätt. Det krypterar data och krävs för att komma åt din församling i Organizedappen.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/sw-KE/congregation.json b/src/locales/sw-KE/congregation.json index f5cc0ce9a7..068919490b 100644 --- a/src/locales/sw-KE/congregation.json +++ b/src/locales/sw-KE/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/sw-KE/onboarding.json b/src/locales/sw-KE/onboarding.json index fbe655d0fb..fcfa75107b 100644 --- a/src/locales/sw-KE/onboarding.json +++ b/src/locales/sw-KE/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "At least 8 characters", "tr_congregationAccessCodeSet": "Set access code", "tr_congregationAccessCodeVerify": "Confirm congregation access code", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Please enter the access code to your congregation. This unique code is specific to your congregation and is necessary to connect and access it.", "tr_setCongregationMasterKey": "Set congregation master key", "tr_createCongregationMasterKey": "Create congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/tl-PH/congregation.json b/src/locales/tl-PH/congregation.json index 9e6cd68221..37a432a3e2 100644 --- a/src/locales/tl-PH/congregation.json +++ b/src/locales/tl-PH/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/tl-PH/onboarding.json b/src/locales/tl-PH/onboarding.json index df4b86a868..155e736537 100644 --- a/src/locales/tl-PH/onboarding.json +++ b/src/locales/tl-PH/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "Hindi bababa sa 8 karakter", "tr_congregationAccessCodeSet": "I-set ang access code", "tr_congregationAccessCodeVerify": "I-verify ang congregation access code", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Pakilagay ang access code ng inyong kongregasyon. Ang natatanging code na ito ay para lamang sa inyong kongregasyon at kailangan para maka-connect at maka-access dito.", "tr_setCongregationMasterKey": "I-set ang congregation master key", "tr_createCongregationMasterKey": "Gumawa ng congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/tr-TR/congregation.json b/src/locales/tr-TR/congregation.json index 65f7e27d79..98e822b3cf 100644 --- a/src/locales/tr-TR/congregation.json +++ b/src/locales/tr-TR/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/tr-TR/onboarding.json b/src/locales/tr-TR/onboarding.json index 5e8f6c0848..6e1e23b20e 100644 --- a/src/locales/tr-TR/onboarding.json +++ b/src/locales/tr-TR/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "En az 8 karakter", "tr_congregationAccessCodeSet": "Erişim kodunu ayarlayın", "tr_congregationAccessCodeVerify": "Cemaat erişim kodunu doğrulayın", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Cemaatinizin erişim kodunu girin. Bu eşsiz kod, cemaatinize özeldir ve bağlantı kurmak ve erişmek için gereklidir.", "tr_setCongregationMasterKey": "Cemaat ana anahtarını ayarlayın", "tr_createCongregationMasterKey": "Cemaat ana anahtarını oluşturun", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/tw-TW/congregation.json b/src/locales/tw-TW/congregation.json index f5cc0ce9a7..068919490b 100644 --- a/src/locales/tw-TW/congregation.json +++ b/src/locales/tw-TW/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/tw-TW/onboarding.json b/src/locales/tw-TW/onboarding.json index 8e69d7f2f7..670b8d316c 100644 --- a/src/locales/tw-TW/onboarding.json +++ b/src/locales/tw-TW/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "At least 8 characters", "tr_congregationAccessCodeSet": "Set access code", "tr_congregationAccessCodeVerify": "Confirm congregation access code", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Please enter the access code to your congregation. This unique code is specific to your congregation and is necessary to connect and access it.", "tr_setCongregationMasterKey": "Set congregation master key", "tr_createCongregationMasterKey": "Create congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } diff --git a/src/locales/uk-UA/congregation.json b/src/locales/uk-UA/congregation.json index 38361c3210..dc67a09737 100644 --- a/src/locales/uk-UA/congregation.json +++ b/src/locales/uk-UA/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "Поки немає груп для поповідницького служіння. Ці групи з'являться тут, щойно вони будуть створені.", "tr_serviceYearAlt": "{{ year }} службовий рік", "tr_speakersOutgoing": "Рекомендовані промовці", - "tr_speakersLocal": "Місцеві промовці" + "tr_speakersLocal": "Місцеві промовці", + "tr_addUserSyncNeeded": "Увімкни синхронізацію для збору, щоб додавати користувачів", + "tr_addUserSyncNeededDesc": "Щоб додати більше користувачів до збору, увімкни функцію синхронізації для твого збору. Це дозволить тобі додати більше користувачів та пристроїв для покращення співпраці. Її можна ввімкнути або вимкнути у будь-який час на сторінці налаштування збору." } diff --git a/src/locales/uk-UA/onboarding.json b/src/locales/uk-UA/onboarding.json index 862c8d0821..cce200fbd8 100644 --- a/src/locales/uk-UA/onboarding.json +++ b/src/locales/uk-UA/onboarding.json @@ -15,7 +15,7 @@ "tr_accountCreated": "Твій обліковий запис Organized зареєстровано. Повідом адміністратора твого збору, щоб він міг надати тобі необхідні дозволи. Потім онови сторінку для входу.", "tr_createCongregationAccount": "Створити збір", "tr_unauthorizedRole": "

Твій акаунт готовий до використання! Щоб отримати доступ до всіх функцій додатку Organized, будь ласка, звернись до адміністратора додатку у твоєму зборі, щоб він надав тобі дозвіл, а потім спробуй ще раз через 5 хвилин.

Старійшини можуть зв’язатися з нами за адресою support@organized-app.com, якщо їм потрібна допомога з цим.

", - "tr_oauthAccept": "

Learn more about out Terms of Use and Privacy Policy.

", + "tr_oauthAccept": "

Дізнайся більше про наші Умови використання та Політику конфіденційності.

", "tr_signInDesc": "Вибери, як ти хочеш увійти", "tr_emailAuth": "Автентифікація через Email", "tr_emailAuthDesc": "Вкажи свою електронну пошту, аби отримати посилання для входу в Oraganized", @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "Мінімум 8 символів", "tr_congregationAccessCodeSet": "Встановити код доступу", "tr_congregationAccessCodeVerify": "Перевірити код доступу збору", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Завжди використовуй інакший код, ніж головний ключ збору. Переконайся, що код відносно простий, але надійний.", "tr_congregationAccessCodeLostDesc": "Введи код доступу до твого збору. Цей унікальний код лише для твого збору і необхідний для підключення та доступу до нього.", "tr_setCongregationMasterKey": "Встановити головний ключ збору", "tr_createCongregationMasterKey": "Створити головний ключ збору", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Створити головний ключ", "tr_createMasterKeyDesc": "

Спочатку створи головний ключ для твого збору. Він надійно зашифровує дані твого збору, включно зі звітами, особами, та є необхідним для адміністративних функцій, наприклад експорт/імпорт та коригування налаштувань.

", "tr_createAccessCode": "Створити код доступу", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Останній крок – створи код доступу. Цей унікальний код дозволяє новим користувачам приєднуватися до твого збору в Organized. Він забезпечує безпеку даних збору, надаючи доступ лише схваленим користувачам.

" } diff --git a/src/locales/vi-VN/congregation.json b/src/locales/vi-VN/congregation.json index ed25a49c27..6c4171105d 100644 --- a/src/locales/vi-VN/congregation.json +++ b/src/locales/vi-VN/congregation.json @@ -440,5 +440,7 @@ "tr_serviceGroupsListNone": "No field service groups yet. The groups will appear here as soon as they are created.", "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", - "tr_speakersLocal": "Local speakers" + "tr_speakersLocal": "Local speakers", + "tr_addUserSyncNeeded": "Enable congregation sync to add users", + "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." } diff --git a/src/locales/vi-VN/onboarding.json b/src/locales/vi-VN/onboarding.json index 0b37e562af..aedebdb932 100644 --- a/src/locales/vi-VN/onboarding.json +++ b/src/locales/vi-VN/onboarding.json @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "At least 8 characters", "tr_congregationAccessCodeSet": "Set access code", "tr_congregationAccessCodeVerify": "Confirm congregation access code", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is simple yet secure.", + "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", "tr_congregationAccessCodeLostDesc": "Please enter the access code to your congregation. This unique code is specific to your congregation and is necessary to connect and access it.", "tr_setCongregationMasterKey": "Set congregation master key", "tr_createCongregationMasterKey": "Create congregation master key", @@ -122,5 +122,5 @@ "tr_createMasterKey": "Create master key", "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect and log in securely. It encrypts data and is required for accessing your congregation in the Organized app.

" + "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" } From 94be6f3a33be5e545f32c87689817f6743b20822 Mon Sep 17 00:00:00 2001 From: sws2apps-admin Date: Tue, 12 Nov 2024 09:24:08 +0300 Subject: [PATCH 17/27] chore(localize): updated translation from Crowdin --- src/locales/sl-SI/congregation.json | 32 ++++----- src/locales/sv-SE/congregation.json | 4 +- src/locales/sv-SE/onboarding.json | 2 +- src/locales/sw-KE/profile.json | 100 ++++++++++++++-------------- 4 files changed, 69 insertions(+), 69 deletions(-) diff --git a/src/locales/sl-SI/congregation.json b/src/locales/sl-SI/congregation.json index 60f11b35c7..5403a3e200 100644 --- a/src/locales/sl-SI/congregation.json +++ b/src/locales/sl-SI/congregation.json @@ -47,7 +47,7 @@ "tr_hallOverseer": "Nadzornik dvorane", "tr_savedDesc": "Spremembe so shranjene", "tr_deletePerson": "Izbriši osebo", - "tr_deletePersonConfirmation": "Ali želiš izbrisati to osebo s seznama vaše občine? Če ima oseba račun v programu Organized, bo izgubila dostop do vseh informacij, povezanih z vašo občino.", + "tr_deletePersonConfirmation": "Ali želiš to osebno evidenco izbrisati s seznama vaše občine? Če ima oseba račun v aplikaciji Organized, bo izgubila dostop do vseh informacij, povezanih z vašo občino.", "tr_noResults": "Ni rezultatov", "tr_noResultsDesc": "Poskusi spremeniti iskalne parametre ali filtre", "tr_addNewPerson": "Dodaj novo osebo", @@ -70,7 +70,7 @@ "tr_manageAccessFullTitle": "Upravljaj dostop do aplikacije Organized", "tr_addUser": "Dodaj uporabnika", "tr_congregationPersons": "Osebe v občini", - "tr_congregationPersonsDesc": "Poveži profile uporabnikov z njihovimi zapisi v aplikaciji Organized, urejaj njihove pravice, poglej njihovo kodo osebnega povabila ali delegiraj osebe tako, da klikneš na profil udeleženca.", + "tr_congregationPersonsDesc": "Poveži profile uporabnikov z njihovo osebno evidenco v aplikaciji Organized, urejaj njihove pravice, poglej njihovo kodo osebnega povabila ali delegiraj osebe tako, da klikneš na profil udeleženca.", "tr_baptizedAndAppointed": "Krščeni in postavljeni bratje", "tr_baptizedAndAppointedDesc": "Vlogo administratorja dodeli le starešinam ali bratom, ki so jih pooblastili starešine.", "tr_appAdministrators": "Administratorji aplikacije", @@ -82,7 +82,7 @@ "tr_midweekStudentStatusDefault": "Temu uporabniku je dodeljen duhovni status Učenec shoda med tednom. Zato lahko privzeto vidi razporede shodov.", "tr_publisherStatusDefault": "Temu uporabniku je dodeljen duhovni status Oznanjevalec. Zato lahko privzeto vidi razporede shodov in odda poročilo o oznanjevanju.", "tr_profileSettings": "Nastavitve profila", - "tr_bindWithRecord": "Poveži z zapisom osebe", + "tr_bindWithRecord": "Poveži z osebno evidenco", "tr_delegatePersons": "Delegate persons", "tr_delegatePersonsDesc": "By delegating a person from the congregation, you enable this user to view their meeting assignments and submit their field service reports.", "tr_delegatedPersons": "Delegated persons", @@ -109,17 +109,17 @@ "tr_midweekMeetingScheduling": "Priprava razporeda za shod med tednom", "tr_weekendMeetingScheduling": "Priprava razporeda za shod ob koncu tedna", "tr_meetingDutiesScheduling": "Priprava razporeda za naloge na shodih", - "tr_attendanceRecordTracking": "Attendance record tracking", - "tr_fieldServiceMeetingsScheduling": "Field service meetings scheduling", - "tr_publicWitnessingScheduling": "Public witnessing scheduling", - "tr_literatureManagement": "Literature management", - "tr_congregationTerritoriesManagement": "Congregation territories management", - "tr_coVisitScheduling": "Circuit overseer visit scheduling", - "tr_informationBoardEditing": "Information board editing", - "tr_congregationActivitiesScheduling": "Congregation activities scheduling", - "tr_hallCleaningScheduling": "Hall cleaning scheduling", - "tr_addNewOrganizedUserTitle": "Add a new Organized user", - "tr_addNewOrganizedUserDesc": "Ask a baptized brother for the email address he used to register in Organized. Use this email to add him to your congregation and bind the user with his person record.", + "tr_attendanceRecordTracking": "Spremljanje evidence prisotnosti", + "tr_fieldServiceMeetingsScheduling": "Priprava razporeda shodov za terensko službo", + "tr_publicWitnessingScheduling": "Priprava razporeda oznanjevanja na javnih krajih", + "tr_literatureManagement": "Upravljanje literature", + "tr_congregationTerritoriesManagement": "Upravljanje občinskih področij", + "tr_coVisitScheduling": "Priprava razporeda za obisk okrajnega nadzornika", + "tr_informationBoardEditing": "Urejanje oglasne deske", + "tr_congregationActivitiesScheduling": "Priprava razporeda občinskih dejavnosti", + "tr_hallCleaningScheduling": "Priprava razporeda za čiščenje dvorane", + "tr_addNewOrganizedUserTitle": "Dodaj novega uporabnika aplikacije Organized", + "tr_addNewOrganizedUserDesc": "Prosi krščenega brata za e-poštni naslov, ki ga je uporabil, ko se je registriral v aplikaciji Organized. Uporabi ta e-poštni naslov, da ga dodaš v občino in da povežeš uporabnika z njegovimo osebno evidenco.", "tr_userEmailAddress": "User’s email address", "tr_searchUser": "Search user", "tr_noUserError": "No user found with this email address", @@ -441,6 +441,6 @@ "tr_serviceYearAlt": "{{ year }} service year", "tr_speakersOutgoing": "Outgoing speakers", "tr_speakersLocal": "Local speakers", - "tr_addUserSyncNeeded": "Enable congregation sync to add users", - "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." + "tr_addUserSyncNeeded": "Če želiš dodati uporabnike, omogoči sinhronizacijo občine", + "tr_addUserSyncNeededDesc": "Če želiš občini dodati več uporabnikov, omogoči sinhronizacijo občine. Tako lahko dodaš več uporabnikov in naprav za boljše sodelovanje. To funkcijo lahko kadar koli vklopiš ali izklopiš v nastavitvah občine." } diff --git a/src/locales/sv-SE/congregation.json b/src/locales/sv-SE/congregation.json index 549c11cd2b..cfff3a9bdc 100644 --- a/src/locales/sv-SE/congregation.json +++ b/src/locales/sv-SE/congregation.json @@ -441,6 +441,6 @@ "tr_serviceYearAlt": "Tjänsteår {{ year }}", "tr_speakersOutgoing": "Dina utresande talare", "tr_speakersLocal": "Lokala talare", - "tr_addUserSyncNeeded": "Enable congregation sync to add users", - "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." + "tr_addUserSyncNeeded": "Aktivera församlingssynkronisering för att lägga till användare", + "tr_addUserSyncNeededDesc": "För att lägga till fler användare till din församling, aktivera funktionen församlingssynkronisering. Detta gör att du kan lägga till fler användare och enheter för bättre samarbete. Du kan aktivera eller stänga av funktionen när som helst i församlingens inställningar." } diff --git a/src/locales/sv-SE/onboarding.json b/src/locales/sv-SE/onboarding.json index 7301e8eb19..82e0339891 100644 --- a/src/locales/sv-SE/onboarding.json +++ b/src/locales/sv-SE/onboarding.json @@ -122,5 +122,5 @@ "tr_createMasterKey": "Skapa huvudkod", "tr_createMasterKeyDesc": "

Skapa först församlingens huvudkod. Det krypterar på ett säkert sätt församlingens data, rapporter och personer, och är viktigt för administrativa uppgifter som dataexport/import och inställningar.

", "tr_createAccessCode": "Skapa åtkomstkod", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" + "tr_createAccessCodeDesc": "

Slutligen skapa åtkomstkoden. Denna unika kod tillåter nya användare att ansluta och logga in på ett säkert sätt. Det krypterar data och krävs för att komma åt din församling i Organizedappen.

" } diff --git a/src/locales/sw-KE/profile.json b/src/locales/sw-KE/profile.json index 6ef0d1b6a4..e899277a9e 100644 --- a/src/locales/sw-KE/profile.json +++ b/src/locales/sw-KE/profile.json @@ -25,56 +25,56 @@ "tr_autoSync": "Sawazisha", "tr_autoSyncDesc": "Sawazisha data moja kwa moja kati ya Kutaniko na vifaa vyako katika Organized", "tr_syncInterval": "Sawazisha baada ya dak.", - "tr_customLinkInMobilePanel": "Custom link in the mobile navigation panel", - "tr_customLinkInMobilePanelDesc": "Replace the ‘Info board’ button with another feature for quick access from Home page", - "tr_selectFeature": "Select feature", - "tr_autoThemeChange": "Automatic app theme change", - "tr_autoThemeChangeDesc": "Follow your device’s system setting when choosing between light and dark mode", - "tr_colorScheme": "Color scheme", - "tr_blue": "Blue", - "tr_green": "Green", - "tr_purple": "Purple", - "tr_orange": "Orange", - "tr_security": "Security", + "tr_customLinkInMobilePanel": "Kiunganishi maalum kwenye mobile navigation panel", + "tr_customLinkInMobilePanelDesc": "Badilisha kitufe cha 'Info board' na kipengele kingine kwa upatikanaji wa haraka kwenye Home page", + "tr_selectFeature": "Chagua kipengele", + "tr_autoThemeChange": "Badilisha mwonekano wa programu kiotomatiki", + "tr_autoThemeChangeDesc": "Fuata mipangilio ya mfumo wa kifaa chako unapochagua kati ya mwonekano wa mwangaza au giza", + "tr_colorScheme": "Mpangilio wa rangi", + "tr_blue": "Bluu", + "tr_green": "Kijani", + "tr_purple": "Zambarau", + "tr_orange": "Machungwa", + "tr_security": "Usalama", "tr_2FA": "Two-factor authentication", - "tr_2FADesc": "2FA makes your account more secure by requesting a security code generated by your mobile authenticator app.", - "tr_lockAppWithPIN": "Lock the app with a PIN", - "tr_lockAppWithPINDesc": "After inactivity, the app locks automatically for added security", - "tr_sessions": "Sessions", - "tr_sessionsDesc": "A list of devices that have logged into your account. Terminate any sessions that you do not recognize.", - "tr_terminate": "Terminate", - "tr_currentSession": "Current session", - "tr_logoutClearData": "Log out and clear the local data?", - "tr_logoutClearDataDesc": "Make sure that all your recently created data is synced, otherwise it will be deleted.", - "tr_2FAEnable": "Enable two-factor authentication", - "tr_2FAEnableDesc": "Use the Google Authenticator or Microsoft Authenticator app on your mobile device to scan the QR code and complete the setup.", - "tr_codeCopied": "The code has been copied", - "tr_codeCopiedDesc": "Paste it into your authenticator app", - "tr_2FAEnabled": "Two-factor authentication is enabled", - "tr_2FAEnabledDesc": "You can disable 2FA in settings", - "tr_2FADisable": "Disable two-factor authentication?", - "tr_2FADisableDesc": "2FA enhances your security, so it’s a good idea to leave it enabled. Confirm if you want to disable it.", - "tr_disable": "Disable", - "tr_2FADisabled": "Two-factor authentication is disabled", - "tr_2FADisabledDesc": "You can enable it back in settings", - "tr_PINCreate": "Create a PIN", - "tr_PINCreateDesc": "Create a strong PIN for better protection. Avoid using simple codes.", - "tr_continue": "Continue", - "tr_PINConfirm": "Confirm your PIN", - "tr_PINConfirmDesc": "Confirm your PIN to complete the setup.", - "tr_PINSet": "Set PIN", - "tr_PINNewSet": "New PIN set", - "tr_PINNewSetDesc": "You can now use it to unlock the Organized app", - "tr_lastSeen": "Last seen: {{ date }}", - "tr_2FAStep1": "Step 1: Set up 2FA on your device", - "tr_2FAStep1Desc": "Use one of the methods below to link your authentication app. We suggest using the Google Authenticator or Microsoft Authenticator.", - "tr_2FAQuickSetup": "Quick setup", - "tr_2FAQuickSetupDesc": "If you have any of the mentioned authenticator apps above, use this button to quickly set it up on your device.", + "tr_2FADesc": "2FA huongeza usalama wa akaunti yako kwa kuomba nenosiri inayoundwa na mobile authenticator app.", + "tr_lockAppWithPIN": "Funga programu na PIN", + "tr_lockAppWithPINDesc": "Baada ya kutokuwa na shughuli, app inafungwa moja kwa moja kwa usalama zaidi", + "tr_sessions": "Vikao", + "tr_sessionsDesc": "Orodha ya vifaa ambavyo vimeingia kwenye akaunti yako. Futa vikao vyovyote ambazo hujui.", + "tr_terminate": "Futa", + "tr_currentSession": "Kikao cha sasa", + "tr_logoutClearData": "Toka na futa data yako?", + "tr_logoutClearDataDesc": "Hakikisha kwamba data zako zote zilizoundwa hivi karibuni zime-sawazishwa, ikiwa sivyo zitafutwa.", + "tr_2FAEnable": "Washa two-factor authentication", + "tr_2FAEnableDesc": "Tumia programu ya Google Authenticator au Microsoft Authenticator kwenye kifaa chako cha mkononi ku-scan QR code na kukamilisha upangaji.", + "tr_codeCopied": "Msimbo ume nakiliwa", + "tr_codeCopiedDesc": "Weka kwenye programu ya uthibitishaji(authenticator app)", + "tr_2FAEnabled": "Two-factor authentication imewashwa", + "tr_2FAEnabledDesc": "Unaweza kuzima 2FA katika mipangilio", + "tr_2FADisable": "Zima Two-factor authentication?", + "tr_2FADisableDesc": "2FA huongeza usalama wako, hivyo ni wazo zuri kuendelea kuuweka umewashwa. Hakikisha ikiwa ungependa kuizima.", + "tr_disable": "Zima", + "tr_2FADisabled": "Two-factor authentication imezimwa", + "tr_2FADisabledDesc": "Unaweza kuiweka tena katika mipangilio", + "tr_PINCreate": "Unda PIN", + "tr_PINCreateDesc": "Unda PIN imara kwa ulinzi bora. Epuka kutumia misimbo rahisi.", + "tr_continue": "Endelea", + "tr_PINConfirm": "Thibitisha PIN yako", + "tr_PINConfirmDesc": "Thibitisha PIN yako kukamilisha usanidi.", + "tr_PINSet": "Weka kama PIN", + "tr_PINNewSet": "PIN mpya imewekwa", + "tr_PINNewSetDesc": "Sasa unaweza kuitumia kufungua programu ya Organized", + "tr_lastSeen": "Imeonekana mwisho: {{ date }}", + "tr_2FAStep1": "Hatua ya 1: Sanidi 2FA kwenye kifaa chako", + "tr_2FAStep1Desc": "Tumia mojawapo ya mbinu zilizotajwa hapa chini kuunganisha programu yako ya uthibitishaji. Tunashauri kutumia Google Authenticator au Microsoft Authenticator.", + "tr_2FAQuickSetup": "Upangaji wa haraka", + "tr_2FAQuickSetupDesc": "Ikiwa una programu zozote za uthibitishaji zilizotajwa hapo juu, tumia kitufe hiki kuipanga kwa haraka kwenye kifaa chako.", "tr_2FAQRCode": "QR code", - "tr_2FAQRCodeDesc": "Scan the QR code with your authenticator app to set up Two-Factor Authentication.", - "tr_2FASetupKey": "Setup key", - "tr_2FASetupKeyDesc": "Copy the setup key and paste it into your authenticator app to set up Two-Factor Authentication.", - "tr_2FAStep2": "Step 2: Enter the 2FA code", - "tr_timeAwayDesc": "No time away added yet. Keep your time away up-to-date so that the brothers can take it into account when scheduling future meetings.", - "tr_terminatedDesc": "The session on that device is terminated" + "tr_2FAQRCodeDesc": "Scan QR code na programu yako ya uthibitishaji ili usanidi Two-Factor Authentication.", + "tr_2FASetupKey": "Msimbo wa upangaji", + "tr_2FASetupKeyDesc": "Nakili msimbo wa upangaji na uweke kwenye programu yako ya uthibitishaji ili usanidi Two-Factor Authentication.", + "tr_2FAStep2": "Hatua ya 2: Weka msimbo wa 2FA", + "tr_timeAwayDesc": "Hakuna muda ambao hapatikani umewekwa. Weka muda wako ambao hupatikani ili ndugu waweze kuuzingatia wakati wa kupanga ratiba za mikutano zijazo.", + "tr_terminatedDesc": "Kikao kwenye kifaa hicho imesitishwa" } From 97ab6c66d778698e04234e6cb4b9486adc9daa6d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 23:53:26 +0000 Subject: [PATCH 18/27] chore(actions): bump ajinabraham/njsscan-action from 8 to 9 Bumps [ajinabraham/njsscan-action](https://github.com/ajinabraham/njsscan-action) from 8 to 9. - [Release notes](https://github.com/ajinabraham/njsscan-action/releases) - [Commits](https://github.com/ajinabraham/njsscan-action/compare/2caddc3c5e6c3b2374fbe3bb67fc733bf80d8078...231750a435d85095d33be7d192d52ec650625146) --- updated-dependencies: - dependency-name: ajinabraham/njsscan-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/njsscan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/njsscan.yml b/.github/workflows/njsscan.yml index 48cce4e8c0..6e2f742b63 100644 --- a/.github/workflows/njsscan.yml +++ b/.github/workflows/njsscan.yml @@ -26,7 +26,7 @@ jobs: - name: nodejsscan scan id: njsscan - uses: ajinabraham/njsscan-action@2caddc3c5e6c3b2374fbe3bb67fc733bf80d8078 + uses: ajinabraham/njsscan-action@231750a435d85095d33be7d192d52ec650625146 with: args: '. --sarif --output results.sarif || true' From 0bca08d0869982be602d925dc3864357d0acbde1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 06:25:49 +0000 Subject: [PATCH 19/27] feat(deps): bump @mui/x-date-pickers from 7.22.1 to 7.22.2 Bumps [@mui/x-date-pickers](https://github.com/mui/mui-x/tree/HEAD/packages/x-date-pickers) from 7.22.1 to 7.22.2. - [Release notes](https://github.com/mui/mui-x/releases) - [Changelog](https://github.com/mui/mui-x/blob/v7.22.2/CHANGELOG.md) - [Commits](https://github.com/mui/mui-x/commits/v7.22.2/packages/x-date-pickers) --- updated-dependencies: - dependency-name: "@mui/x-date-pickers" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 10 +++++----- package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2daac13162..e0c50d3fbf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@mui/icons-material": "^6.1.6", "@mui/lab": "^6.0.0-beta.14", "@mui/material": "^6.1.4", - "@mui/x-date-pickers": "^7.22.1", + "@mui/x-date-pickers": "^7.22.2", "@mui/x-tree-view": "^7.22.1", "@react-pdf/renderer": "^4.0.0", "@smakss/random-string": "^2.0.2", @@ -3381,9 +3381,9 @@ } }, "node_modules/@mui/x-date-pickers": { - "version": "7.22.1", - "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-7.22.1.tgz", - "integrity": "sha512-VBgicE+7PvJrdHSL6HyieHT6a/0dENH8RaMIM2VwUFrGoZzvik50WNwY5U+Hip1BwZLIEvlqtNRQIIj6kgBR6Q==", + "version": "7.22.2", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-7.22.2.tgz", + "integrity": "sha512-1KHSlIlnSoY3oHm820By8X344pIdGYqPvCCvfVHrEeeIQ/pHdxDD8tjZFWkFl4Jgm9oVFK90fMcqNZAzc+WaCw==", "dependencies": { "@babel/runtime": "^7.25.7", "@mui/utils": "^5.16.6 || ^6.0.0", @@ -3410,7 +3410,7 @@ "dayjs": "^1.10.7", "luxon": "^3.0.2", "moment": "^2.29.4", - "moment-hijri": "^2.1.2", + "moment-hijri": "^2.1.2 || ^3.0.0", "moment-jalaali": "^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" diff --git a/package.json b/package.json index a4bd6546eb..982f16aff9 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "@mui/icons-material": "^6.1.6", "@mui/lab": "^6.0.0-beta.14", "@mui/material": "^6.1.4", - "@mui/x-date-pickers": "^7.22.1", + "@mui/x-date-pickers": "^7.22.2", "@mui/x-tree-view": "^7.22.1", "@react-pdf/renderer": "^4.0.0", "@smakss/random-string": "^2.0.2", From dbf98a5db42c9c1273ad1b950af8db11515c39e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 06:25:52 +0000 Subject: [PATCH 20/27] feat(deps): bump mui-one-time-password-input from 2.0.3 to 3.0.1 Bumps [mui-one-time-password-input](https://github.com/viclafouch/mui-otp-input) from 2.0.3 to 3.0.1. - [Release notes](https://github.com/viclafouch/mui-otp-input/releases) - [Commits](https://github.com/viclafouch/mui-otp-input/compare/v2.0.3...v3.0.1) --- updated-dependencies: - dependency-name: mui-one-time-password-input dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 200 +++------------------------------------------- package.json | 2 +- 2 files changed, 12 insertions(+), 190 deletions(-) diff --git a/package-lock.json b/package-lock.json index e0c50d3fbf..f0d593fe37 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ "interweave": "^13.1.0", "jszip": "^3.10.1", "jw-epub-parser": "^3.27.0", - "mui-one-time-password-input": "^2.0.3", + "mui-one-time-password-input": "^3.0.1", "node-html-parser": "^6.1.13", "qrcode": "^1.5.4", "react": "^18.3.0", @@ -14080,21 +14080,21 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/mui-one-time-password-input": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/mui-one-time-password-input/-/mui-one-time-password-input-2.0.3.tgz", - "integrity": "sha512-L8TVUo44S+NNevPjEpjHFhSn6GGYwkBdYTnYXZr4Hy6aSJjrBYa62pCzNt03gIC03+Gs3ycRyeWu2PobudzAtw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mui-one-time-password-input/-/mui-one-time-password-input-3.0.1.tgz", + "integrity": "sha512-pG70F8FZ2qKvN47BB1ijWezne0RxX/IciiH/kK7RLnKYfZqCw7gZ59g8lr2vzNzUesxzssaDnOwyuP+PJCB5nA==", "dependencies": { - "@emotion/react": "^11.11.4", - "@emotion/styled": "^11.11.5", - "@mui/material": "^5.16.0", - "@types/react": "^18.3.3", + "@emotion/react": "^11.13.3", + "@emotion/styled": "^11.13.0", + "@mui/material": "^6.1.6", + "@types/react": "^18.3.12", "react": "^18.3.1", "react-dom": "^18.3.1" }, "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@mui/material": "^5.0.0", + "@emotion/react": "^11.13.0", + "@emotion/styled": "^11.13.0", + "@mui/material": "^6.0.0", "@types/react": "^18.0.0", "react": "^18.0.0", "react-dom": "^18.0.0" @@ -14105,184 +14105,6 @@ } } }, - "node_modules/mui-one-time-password-input/node_modules/@mui/core-downloads-tracker": { - "version": "5.16.7", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.7.tgz", - "integrity": "sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - } - }, - "node_modules/mui-one-time-password-input/node_modules/@mui/material": { - "version": "5.16.7", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.7.tgz", - "integrity": "sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg==", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/core-downloads-tracker": "^5.16.7", - "@mui/system": "^5.16.7", - "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.6", - "@popperjs/core": "^2.11.8", - "@types/react-transition-group": "^4.4.10", - "clsx": "^2.1.0", - "csstype": "^3.1.3", - "prop-types": "^15.8.1", - "react-is": "^18.3.1", - "react-transition-group": "^4.4.5" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/mui-one-time-password-input/node_modules/@mui/private-theming": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.6.tgz", - "integrity": "sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.16.6", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/mui-one-time-password-input/node_modules/@mui/styled-engine": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.6.tgz", - "integrity": "sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@emotion/cache": "^11.11.0", - "csstype": "^3.1.3", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - } - } - }, - "node_modules/mui-one-time-password-input/node_modules/@mui/system": { - "version": "5.16.7", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.7.tgz", - "integrity": "sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.16.6", - "@mui/styled-engine": "^5.16.6", - "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.6", - "clsx": "^2.1.0", - "csstype": "^3.1.3", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/mui-one-time-password-input/node_modules/@mui/utils": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", - "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/types": "^7.2.15", - "@types/prop-types": "^15.7.12", - "clsx": "^2.1.1", - "prop-types": "^15.8.1", - "react-is": "^18.3.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", diff --git a/package.json b/package.json index 982f16aff9..e754875bb9 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "interweave": "^13.1.0", "jszip": "^3.10.1", "jw-epub-parser": "^3.27.0", - "mui-one-time-password-input": "^2.0.3", + "mui-one-time-password-input": "^3.0.1", "node-html-parser": "^6.1.13", "qrcode": "^1.5.4", "react": "^18.3.0", From 8e6fa0535e434d0e5b2accf857125231981515bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 06:25:59 +0000 Subject: [PATCH 21/27] build(deps): bump typescript-eslint from 8.13.0 to 8.14.0 Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.13.0 to 8.14.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.14.0/packages/typescript-eslint) --- updated-dependencies: - dependency-name: typescript-eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 98 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 50 insertions(+), 50 deletions(-) diff --git a/package-lock.json b/package-lock.json index f0d593fe37..3a9ea7c890 100644 --- a/package-lock.json +++ b/package-lock.json @@ -90,7 +90,7 @@ "serve": "^14.2.4", "tsx": "^4.19.2", "typescript": "^5.6.3", - "typescript-eslint": "^8.13.0", + "typescript-eslint": "^8.14.0", "vite-plugin-eslint": "^1.8.1", "vite-plugin-package-version": "^1.1.0", "workbox-cli": "^7.3.0" @@ -5908,16 +5908,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.13.0.tgz", - "integrity": "sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.14.0.tgz", + "integrity": "sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.13.0", - "@typescript-eslint/type-utils": "8.13.0", - "@typescript-eslint/utils": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0", + "@typescript-eslint/scope-manager": "8.14.0", + "@typescript-eslint/type-utils": "8.14.0", + "@typescript-eslint/utils": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -5941,15 +5941,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.13.0.tgz", - "integrity": "sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.14.0.tgz", + "integrity": "sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.13.0", - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/typescript-estree": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0", + "@typescript-eslint/scope-manager": "8.14.0", + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/typescript-estree": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0", "debug": "^4.3.4" }, "engines": { @@ -5969,13 +5969,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.13.0.tgz", - "integrity": "sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.14.0.tgz", + "integrity": "sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0" + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5986,13 +5986,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.13.0.tgz", - "integrity": "sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.14.0.tgz", + "integrity": "sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "8.13.0", - "@typescript-eslint/utils": "8.13.0", + "@typescript-eslint/typescript-estree": "8.14.0", + "@typescript-eslint/utils": "8.14.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -6010,9 +6010,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.13.0.tgz", - "integrity": "sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.14.0.tgz", + "integrity": "sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6023,13 +6023,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.13.0.tgz", - "integrity": "sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.14.0.tgz", + "integrity": "sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0", + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -6087,15 +6087,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.13.0.tgz", - "integrity": "sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.14.0.tgz", + "integrity": "sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.13.0", - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/typescript-estree": "8.13.0" + "@typescript-eslint/scope-manager": "8.14.0", + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/typescript-estree": "8.14.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6109,12 +6109,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.13.0.tgz", - "integrity": "sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.14.0.tgz", + "integrity": "sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.13.0", + "@typescript-eslint/types": "8.14.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -21474,14 +21474,14 @@ } }, "node_modules/typescript-eslint": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.13.0.tgz", - "integrity": "sha512-vIMpDRJrQd70au2G8w34mPps0ezFSPMEX4pXkTzUkrNbRX+36ais2ksGWN0esZL+ZMaFJEneOBHzCgSqle7DHw==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.14.0.tgz", + "integrity": "sha512-K8fBJHxVL3kxMmwByvz8hNdBJ8a0YqKzKDX6jRlrjMuNXyd5T2V02HIq37+OiWXvUUOXgOOGiSSOh26Mh8pC3w==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "8.13.0", - "@typescript-eslint/parser": "8.13.0", - "@typescript-eslint/utils": "8.13.0" + "@typescript-eslint/eslint-plugin": "8.14.0", + "@typescript-eslint/parser": "8.14.0", + "@typescript-eslint/utils": "8.14.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" diff --git a/package.json b/package.json index e754875bb9..4951854fde 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "serve": "^14.2.4", "tsx": "^4.19.2", "typescript": "^5.6.3", - "typescript-eslint": "^8.13.0", + "typescript-eslint": "^8.14.0", "vite-plugin-eslint": "^1.8.1", "vite-plugin-package-version": "^1.1.0", "workbox-cli": "^7.3.0" From 13d763eb654d2e12e91d4c03cb33a3b233055243 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 06:25:53 +0000 Subject: [PATCH 22/27] feat(deps): bump vite from 5.4.10 to 5.4.11 Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.10 to 5.4.11. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v5.4.11/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.4.11/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3a9ea7c890..4dced8b94c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,7 +50,7 @@ "swiper": "^11.1.14", "use-pwa2": "^0.2.0", "validator": "^13.12.0", - "vite": "^5.4.10", + "vite": "^5.4.11", "vite-plugin-comlink": "^5.1.0" }, "devDependencies": { @@ -22180,9 +22180,9 @@ } }, "node_modules/vite": { - "version": "5.4.10", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", - "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", + "version": "5.4.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", + "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", diff --git a/package.json b/package.json index 4951854fde..014b33cd7c 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "swiper": "^11.1.14", "use-pwa2": "^0.2.0", "validator": "^13.12.0", - "vite": "^5.4.10", + "vite": "^5.4.11", "vite-plugin-comlink": "^5.1.0" }, "devDependencies": { From 34b387e382169d2bd10695681b81757431879c0b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 06:25:53 +0000 Subject: [PATCH 23/27] build(deps): bump rollup from 4.24.4 to 4.25.0 Bumps [rollup](https://github.com/rollup/rollup) from 4.24.4 to 4.25.0. - [Release notes](https://github.com/rollup/rollup/releases) - [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md) - [Commits](https://github.com/rollup/rollup/compare/v4.24.4...v4.25.0) --- updated-dependencies: - dependency-name: rollup dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 152 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 77 insertions(+), 77 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4dced8b94c..94961805c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -86,7 +86,7 @@ "prettier": "^3.3.3", "prop-types": "^15.8.1", "react-refresh": "^0.14.2", - "rollup": "^4.24.4", + "rollup": "^4.25.0", "serve": "^14.2.4", "tsx": "^4.19.2", "typescript": "^5.6.3", @@ -4069,9 +4069,9 @@ "dev": true }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.4.tgz", - "integrity": "sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.25.0.tgz", + "integrity": "sha512-CC/ZqFZwlAIbU1wUPisHyV/XRc5RydFrNLtgl3dGYskdwPZdt4HERtKm50a/+DtTlKeCq9IXFEWR+P6blwjqBA==", "cpu": [ "arm" ], @@ -4081,9 +4081,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.4.tgz", - "integrity": "sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.25.0.tgz", + "integrity": "sha512-/Y76tmLGUJqVBXXCfVS8Q8FJqYGhgH4wl4qTA24E9v/IJM0XvJCGQVSW1QZ4J+VURO9h8YCa28sTFacZXwK7Rg==", "cpu": [ "arm64" ], @@ -4093,9 +4093,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.4.tgz", - "integrity": "sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.25.0.tgz", + "integrity": "sha512-YVT6L3UrKTlC0FpCZd0MGA7NVdp7YNaEqkENbWQ7AOVOqd/7VzyHpgIpc1mIaxRAo1ZsJRH45fq8j4N63I/vvg==", "cpu": [ "arm64" ], @@ -4105,9 +4105,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.4.tgz", - "integrity": "sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.25.0.tgz", + "integrity": "sha512-ZRL+gexs3+ZmmWmGKEU43Bdn67kWnMeWXLFhcVv5Un8FQcx38yulHBA7XR2+KQdYIOtD0yZDWBCudmfj6lQJoA==", "cpu": [ "x64" ], @@ -4117,9 +4117,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.4.tgz", - "integrity": "sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.25.0.tgz", + "integrity": "sha512-xpEIXhiP27EAylEpreCozozsxWQ2TJbOLSivGfXhU4G1TBVEYtUPi2pOZBnvGXHyOdLAUUhPnJzH3ah5cqF01g==", "cpu": [ "arm64" ], @@ -4129,9 +4129,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.4.tgz", - "integrity": "sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.25.0.tgz", + "integrity": "sha512-sC5FsmZGlJv5dOcURrsnIK7ngc3Kirnx3as2XU9uER+zjfyqIjdcMVgzy4cOawhsssqzoAX19qmxgJ8a14Qrqw==", "cpu": [ "x64" ], @@ -4141,9 +4141,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.4.tgz", - "integrity": "sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.25.0.tgz", + "integrity": "sha512-uD/dbLSs1BEPzg564TpRAQ/YvTnCds2XxyOndAO8nJhaQcqQGFgv/DAVko/ZHap3boCvxnzYMa3mTkV/B/3SWA==", "cpu": [ "arm" ], @@ -4153,9 +4153,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.4.tgz", - "integrity": "sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.25.0.tgz", + "integrity": "sha512-ZVt/XkrDlQWegDWrwyC3l0OfAF7yeJUF4fq5RMS07YM72BlSfn2fQQ6lPyBNjt+YbczMguPiJoCfaQC2dnflpQ==", "cpu": [ "arm" ], @@ -4165,9 +4165,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.4.tgz", - "integrity": "sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.25.0.tgz", + "integrity": "sha512-qboZ+T0gHAW2kkSDPHxu7quaFaaBlynODXpBVnPxUgvWYaE84xgCKAPEYE+fSMd3Zv5PyFZR+L0tCdYCMAtG0A==", "cpu": [ "arm64" ], @@ -4177,9 +4177,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.4.tgz", - "integrity": "sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.25.0.tgz", + "integrity": "sha512-ndWTSEmAaKr88dBuogGH2NZaxe7u2rDoArsejNslugHZ+r44NfWiwjzizVS1nUOHo+n1Z6qV3X60rqE/HlISgw==", "cpu": [ "arm64" ], @@ -4189,9 +4189,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.4.tgz", - "integrity": "sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.25.0.tgz", + "integrity": "sha512-BVSQvVa2v5hKwJSy6X7W1fjDex6yZnNKy3Kx1JGimccHft6HV0THTwNtC2zawtNXKUu+S5CjXslilYdKBAadzA==", "cpu": [ "ppc64" ], @@ -4201,9 +4201,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.4.tgz", - "integrity": "sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.25.0.tgz", + "integrity": "sha512-G4hTREQrIdeV0PE2JruzI+vXdRnaK1pg64hemHq2v5fhv8C7WjVaeXc9P5i4Q5UC06d/L+zA0mszYIKl+wY8oA==", "cpu": [ "riscv64" ], @@ -4213,9 +4213,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.4.tgz", - "integrity": "sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.25.0.tgz", + "integrity": "sha512-9T/w0kQ+upxdkFL9zPVB6zy9vWW1deA3g8IauJxojN4bnz5FwSsUAD034KpXIVX5j5p/rn6XqumBMxfRkcHapQ==", "cpu": [ "s390x" ], @@ -4225,9 +4225,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.4.tgz", - "integrity": "sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.25.0.tgz", + "integrity": "sha512-ThcnU0EcMDn+J4B9LD++OgBYxZusuA7iemIIiz5yzEcFg04VZFzdFjuwPdlURmYPZw+fgVrFzj4CA64jSTG4Ig==", "cpu": [ "x64" ], @@ -4237,9 +4237,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.4.tgz", - "integrity": "sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.25.0.tgz", + "integrity": "sha512-zx71aY2oQxGxAT1JShfhNG79PnjYhMC6voAjzpu/xmMjDnKNf6Nl/xv7YaB/9SIa9jDYf8RBPWEnjcdlhlv1rQ==", "cpu": [ "x64" ], @@ -4249,9 +4249,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.4.tgz", - "integrity": "sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.25.0.tgz", + "integrity": "sha512-JT8tcjNocMs4CylWY/CxVLnv8e1lE7ff1fi6kbGocWwxDq9pj30IJ28Peb+Y8yiPNSF28oad42ApJB8oUkwGww==", "cpu": [ "arm64" ], @@ -4261,9 +4261,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.4.tgz", - "integrity": "sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.25.0.tgz", + "integrity": "sha512-dRLjLsO3dNOfSN6tjyVlG+Msm4IiZnGkuZ7G5NmpzwF9oOc582FZG05+UdfTbz5Jd4buK/wMb6UeHFhG18+OEg==", "cpu": [ "ia32" ], @@ -4273,9 +4273,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.4.tgz", - "integrity": "sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.25.0.tgz", + "integrity": "sha512-/RqrIFtLB926frMhZD0a5oDa4eFIbyNEwLLloMTEjmqfwZWXywwVVOVmwTsuyhC9HKkVEZcOOi+KV4U9wmOdlg==", "cpu": [ "x64" ], @@ -19579,9 +19579,9 @@ "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" }, "node_modules/rollup": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.4.tgz", - "integrity": "sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.25.0.tgz", + "integrity": "sha512-uVbClXmR6wvx5R1M3Od4utyLUxrmOcEm3pAtMphn73Apq19PDtHpgZoEvqH2YnnaNUuvKmg2DgRd2Sqv+odyqg==", "dependencies": { "@types/estree": "1.0.6" }, @@ -19593,24 +19593,24 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.24.4", - "@rollup/rollup-android-arm64": "4.24.4", - "@rollup/rollup-darwin-arm64": "4.24.4", - "@rollup/rollup-darwin-x64": "4.24.4", - "@rollup/rollup-freebsd-arm64": "4.24.4", - "@rollup/rollup-freebsd-x64": "4.24.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.24.4", - "@rollup/rollup-linux-arm-musleabihf": "4.24.4", - "@rollup/rollup-linux-arm64-gnu": "4.24.4", - "@rollup/rollup-linux-arm64-musl": "4.24.4", - "@rollup/rollup-linux-powerpc64le-gnu": "4.24.4", - "@rollup/rollup-linux-riscv64-gnu": "4.24.4", - "@rollup/rollup-linux-s390x-gnu": "4.24.4", - "@rollup/rollup-linux-x64-gnu": "4.24.4", - "@rollup/rollup-linux-x64-musl": "4.24.4", - "@rollup/rollup-win32-arm64-msvc": "4.24.4", - "@rollup/rollup-win32-ia32-msvc": "4.24.4", - "@rollup/rollup-win32-x64-msvc": "4.24.4", + "@rollup/rollup-android-arm-eabi": "4.25.0", + "@rollup/rollup-android-arm64": "4.25.0", + "@rollup/rollup-darwin-arm64": "4.25.0", + "@rollup/rollup-darwin-x64": "4.25.0", + "@rollup/rollup-freebsd-arm64": "4.25.0", + "@rollup/rollup-freebsd-x64": "4.25.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.25.0", + "@rollup/rollup-linux-arm-musleabihf": "4.25.0", + "@rollup/rollup-linux-arm64-gnu": "4.25.0", + "@rollup/rollup-linux-arm64-musl": "4.25.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.25.0", + "@rollup/rollup-linux-riscv64-gnu": "4.25.0", + "@rollup/rollup-linux-s390x-gnu": "4.25.0", + "@rollup/rollup-linux-x64-gnu": "4.25.0", + "@rollup/rollup-linux-x64-musl": "4.25.0", + "@rollup/rollup-win32-arm64-msvc": "4.25.0", + "@rollup/rollup-win32-ia32-msvc": "4.25.0", + "@rollup/rollup-win32-x64-msvc": "4.25.0", "fsevents": "~2.3.2" } }, diff --git a/package.json b/package.json index 014b33cd7c..1634671415 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ "prettier": "^3.3.3", "prop-types": "^15.8.1", "react-refresh": "^0.14.2", - "rollup": "^4.24.4", + "rollup": "^4.25.0", "serve": "^14.2.4", "tsx": "^4.19.2", "typescript": "^5.6.3", From 703298230ae2fe9275ff22d340e1738bd76a1f71 Mon Sep 17 00:00:00 2001 From: sws2apps-admin Date: Tue, 12 Nov 2024 20:05:11 +0300 Subject: [PATCH 24/27] feat(localize): updated translation from Crowdin (#2920) --- src/locales/pt-BR/congregation.json | 4 ++-- src/locales/pt-BR/dashboard.json | 4 ++-- src/locales/pt-BR/onboarding.json | 24 ++++++++++---------- src/locales/sl-SI/congregation.json | 34 ++++++++++++++--------------- 4 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/locales/pt-BR/congregation.json b/src/locales/pt-BR/congregation.json index 1e2ac45680..759ba2034f 100644 --- a/src/locales/pt-BR/congregation.json +++ b/src/locales/pt-BR/congregation.json @@ -441,6 +441,6 @@ "tr_serviceYearAlt": "Ano de serviço {{ year }}", "tr_speakersOutgoing": "Oradores saindo", "tr_speakersLocal": "Oradores locais", - "tr_addUserSyncNeeded": "Enable congregation sync to add users", - "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." + "tr_addUserSyncNeeded": "Habilite a sincronização da congregação para adicionar usuários", + "tr_addUserSyncNeededDesc": "Para adicionar mais usuários à sua congregação, habilite o recurso de sincronização da congregação. Isso permite adicionar mais usuários e dispositivos para uma melhor colaboração. Você pode ativar ou desativar esse recurso a qualquer momento nas configurações da congregação." } diff --git a/src/locales/pt-BR/dashboard.json b/src/locales/pt-BR/dashboard.json index a297b3b678..f4b4e6d968 100644 --- a/src/locales/pt-BR/dashboard.json +++ b/src/locales/pt-BR/dashboard.json @@ -106,6 +106,6 @@ "tr_newOrganizedUpdateDesc": "O Organized ficou ainda melhor! Veja o que há de novo nesta atualização!", "tr_improvements": "Melhorias:", "tr_ok": "OK", - "tr_migrationTitle": "Migration to Organized succeeded", - "tr_migrationDesc": "

Congratulations! Your congregation data has been migrated to Organized, a new, highly improved application for Jehovah’s Witnesses congregations. Happy discovering!

If you have any technical issues with the data transfer, email us at support@organized-app.com and we'll help you.

" + "tr_migrationTitle": "Migração para o Organized concluída com sucesso", + "tr_migrationDesc": "

Parabéns! Os dados da sua congregação foram migrados para o Organized, um aplicativo novo e altamente aprimorado para congregações das Testemunhas de Jeová. Aproveite para explorar!

Se houver algum problema técnico com a transferência dos dados, envie-nos um e-mail para support@organized-app.com e iremos ajudá-lo.

" } diff --git a/src/locales/pt-BR/onboarding.json b/src/locales/pt-BR/onboarding.json index aeaba23ed1..2a771a33bd 100644 --- a/src/locales/pt-BR/onboarding.json +++ b/src/locales/pt-BR/onboarding.json @@ -4,7 +4,7 @@ "tr_whatIsApp": "O Organized é um aplicativo oficial da organização das Testemunhas de Jeová?", "tr_descApp": "

Não, esta não é uma aplicação oficial. Sinta-se à vontade para decidir se é adequada para você. Se você deseja que toda a congregação a utilize, sugerimos obter aprovação do corpo de anciãos. Estamos cientes de que existem outros aplicativos projetados para ajudar com tarefas semelhantes e acreditamos que cada um tenha seus pontos fortes e métodos, mas todos eles compartilham o mesmo objetivo.

", "tr_appPWA": "Organized é um aplicativo PWA. O que isso significa?", - "tr_appPWADesc": "

Como um aplicativo da Web progressivo (PWA), o Organizado funciona diretamente no seu navegador. Ele foi projetado para funcionar em vários sistemas operacionais, por isso é compatível com dispositivos desktop e móveis.

Depois de instalado no seu dispositivo e após concluir a configuração inicial, o Organized permanece acessível off-line, garantindo que você possa usar seus principais recursos, sem conexão com a Internet.

", + "tr_appPWADesc": "

Como uma Aplicação Progressiva para Web (PWA), o Organized opera diretamente no seu navegador. Ele é projetado para funcionar em diversos sistemas operacionais, oferecendo suporte tanto para dispositivos de desktop quanto para dispositivos móveis.

Depois de instalado no seu dispositivo e concluída a configuração inicial, o Organized permanece acessível offline, garantindo que você possa usar suas principais funcionalidades sem conexão com a internet.

", "tr_appSecure": "Qual a segurança dos seus dados ao usar o Organizado?", "tr_appSecureDesc": "

Adicionamos camadas extras de segurança para proteger seus dados. No mundo tecnológico em rápida mudança de hoje, atualizamos regularmente o Organized para mantê-lo totalmente seguro.

Mesmo que o Organized seja um aplicativo da web, seus dados são armazenados primeiro diretamente no seu dispositivo. Isso significa que você pode acessá-los, mesmo quando estiver offline. Se você compartilhar informações com outras pessoas em sua congregação, elas serão sincronizadas com segurança por meio dos servidores na nuvem. Além disso, garantimos a proteção de todos os dados privados com fortes medidas de segurança, como criptografia dupla em nossos servidores.

", "tr_clearBrowserData": "

Limpar o histórico do seu navegador ou os cookies também excluirá quaisquer dados do Organized que não estejam sincronizados. Certifique-se de que seus dados estejam sincronizados antes de fazer isso.

", @@ -15,7 +15,7 @@ "tr_accountCreated": "Sua conta Organized foi criada. Notifique o administrador da congregação para ele atribuir as permissões necessárias. Em seguida, atualize a página para fazer login.", "tr_createCongregationAccount": "Criar congregação", "tr_unauthorizedRole": "

Sua conta está pronta! Para acessar a aplicação Organized, por favor peça ao administrador da aplicação da sua congregação para lhe conceder permissões e atualize a página em 5 minutos.

Os anciãos podem entrar em contato conosco em support@organized-app.com se precisarem de ajuda.

", - "tr_oauthAccept": "

Learn more about out Terms of Use and Privacy Policy.

", + "tr_oauthAccept": "

Saiba mais sobre os Termos de Uso e Política de Privacidade.

", "tr_signInDesc": "Escolha como deseja entrar", "tr_emailAuth": "Autenticação por Email", "tr_emailAuthDesc": "Insira o seu e-mail para obter um link para autenticação do Organized", @@ -23,12 +23,12 @@ "tr_emailAuthSentHeader": "O link foi enviado", "tr_emailAuthSent": "Por favor, verifique a caixa de entrada do seu email. Se não estiver lá, veja no spam ou solicite o link novamente.", "tr_accountSetup": "Para ativar o aplicativo Organized neste dispositivo, digite o código de convite que você recebeu dos anciãos da congregação.", - "tr_illustrationMinistryAssignmentsHeader": "Todo o seu ministério e designações", + "tr_illustrationMinistryAssignmentsHeader": "Todas as suas designações e atividades ministeriais", "tr_illustrationMinistryAssignmentsDescription": "Veja todas as suas próximas designações e receba notificações sobre novas. Receba um novo território da lista disponível. Envie uma petição de pioneiro auxiliar com alguns cliques e tenha recursos de pioneiro, como uma contagem de tempo, e um relatório mensal e anual detalhado.", "tr_illustrationMultiPlattformHeader": "Em todos os seus dispositivos", "tr_illustrationMultiPlattformDescription": "Use Organized no seu computador, laptop, smartphone ou tablet em qualquer um dos sistemas operacionais modernos. O aplicativo funciona on-line, mas também é acessível mesmo quando você não tem conexão com a internet. ", "tr_illustrationMeetingSchedulesHeader": "Crie programações das reuniões facilmente", - "tr_illustrationMeetingSchedulesDescription": "Importe as materias das reuniões do jw.org com apenas um clique e com preenchimento automático. Compartilhe sua lista de oradores e listas de pedidos de outras congregações para melhorar a colaboração. Publique as programações tanto para os publicadores como para os estudantes do meio da semana, permitindo que eles vejam as suas designações.", + "tr_illustrationMeetingSchedulesDescription": "Importe as matérias de reunião do jw.org com apenas um clique e preencha automaticamente as designações. Compartilhe sua lista de oradores e solicite listas de outras congregações para aprimorar a colaboração. Publique a programação tanto para publicadores quanto para estudantes da reunião de meio de semana, permitindo que eles visualizem suas designações.", "tr_illustrationSecretaryHeader": "Todos os relatórios do secretário", "tr_illustrationSecretaryDescription": "Acompanhe os registos de presença das reuniões, tanto mensalmente como anualmente. Veja os relatórios dos publicadores e envie facilmente todos os relatórios necessários diretamente para a filial local. Receba e veja as petições dos pioneiros.", "tr_selectAccount": "Para começar a usar o Organized, escolha qual opção se aplica a você:", @@ -95,7 +95,7 @@ "tr_congregationAccessCodeNoticeLength": "Pelo menos 8 caracteres", "tr_congregationAccessCodeSet": "Definir código de acesso", "tr_congregationAccessCodeVerify": "Verificar código de acesso da congregação", - "tr_congregationAccessCodeNotice": "Always use a different code from your congregation’s master key. Ensure the code is relatively simple yet secure.", + "tr_congregationAccessCodeNotice": "Sempre use um código diferente da chave mestra da sua congregação. Garanta que o código seja relativamente simples, mas seguro.", "tr_congregationAccessCodeLostDesc": "Por favor, digite o código de acesso à sua congregação. Este código único é específico para a sua congregação e é necessário para se conectar e acessá-la.", "tr_setCongregationMasterKey": "Definir chave mestra da congregação", "tr_createCongregationMasterKey": "Criar chave mestra da congregação", @@ -103,7 +103,7 @@ "tr_congregationAccessCode": "Código de acesso da congregação", "tr_congregationMasterKeyLostDesc": "Insira a chave mestra da sua congregação para acessá-la", "tr_congregationMasterKeyAsk": "Digite a chave mestra da congregação", - "tr_cantFindCongregation": "Can't find your congregation?", + "tr_cantFindCongregation": "Não encontrou sua congregação?", "tr_cantFindCongregationDesc": "Verifique por erros (a entrada mínima é de 2 caracteres). Se sua congregação não estiver listada na página de pesquisa do jw.org, entre em contato com support@organized-app.com para obter ajuda.", "tr_appFunctionalityDataPrivacy": "Funcionalidade do aplicativo e privacidade de dados", "tr_appIntro": "O Organized é um aplicativo não oficial para as Testemunhas de Jeová, criado por irmãos e irmãs entusiastas. Ele simplifica várias responsabilidades na congregação. Por favor, obtenha a aprovação de seu corpo de anciões antes de registrar sua congregação.", @@ -117,10 +117,10 @@ "tr_illustrationTerritoriesDescription": "Visualize e edite territórios, veja cartões vencidos e perdidos. Rastreie 'Não visitar', histórico de designações e imprima novos cartões. Atribua um território a um publicador, e ele verá o território em sua lista de territórios. Acompanhe as estatísticas de cobertura e exporte o documento S-13.", "tr_illustrationOtherSchedulesHeader": "Muitos outros agendamentos úteis", "tr_illustrationOtherSchedulesDescription": "O Organized torna o agendamento da limpeza do salão, visita do superintendente de circuito, trabalho de manutenção do salão, pregação pública, deveres da congregação e outras atividades da vida congregacional significativamente mais fáceis para os irmãos designados. Também facilita para os publicadores acompanhar e participar dessas atividades.", - "tr_howAreTheCodesDifferent": "How are the codes different?", - "tr_howAreTheCodesDifferentDesc": "Access code: For all users to join your congregation; Master key: Higher-level access for responsible brothers.", - "tr_createMasterKey": "Create master key", - "tr_createMasterKeyDesc": "

First, create your congregation master key. It securely encrypts your congregation's data, including reports and persons, and is essential for administrative tasks such as data export/import and settings adjustments.

", - "tr_createAccessCode": "Create access code", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" + "tr_howAreTheCodesDifferent": "Qual a diferença entre os códigos?", + "tr_howAreTheCodesDifferentDesc": "Código de acesso: Para todos os usuários entrarem na sua congregação; Chave mestra: Acesso de nível superior para irmãos responsáveis.", + "tr_createMasterKey": "Criar chave mestra", + "tr_createMasterKeyDesc": "

Primeiro, crie sua chave mestra da congregação. Ela criptografa com segurança os dados da sua congregação, incluindo relatórios e informações pessoais, e é essencial para tarefas administrativas, como exportação/importação de dados e ajustes de configurações.

", + "tr_createAccessCode": "Criar código de acesso", + "tr_createAccessCodeDesc": "

Por fim, crie o código de acesso. Este código único permite que novos usuários se conectem à sua congregação no Organized. Ele garante que as informações da sua congregação permaneçam sempre seguras, concedendo acesso apenas a usuários aprovados.

" } diff --git a/src/locales/sl-SI/congregation.json b/src/locales/sl-SI/congregation.json index 5403a3e200..0cd9afcb4c 100644 --- a/src/locales/sl-SI/congregation.json +++ b/src/locales/sl-SI/congregation.json @@ -120,31 +120,31 @@ "tr_hallCleaningScheduling": "Priprava razporeda za čiščenje dvorane", "tr_addNewOrganizedUserTitle": "Dodaj novega uporabnika aplikacije Organized", "tr_addNewOrganizedUserDesc": "Prosi krščenega brata za e-poštni naslov, ki ga je uporabil, ko se je registriral v aplikaciji Organized. Uporabi ta e-poštni naslov, da ga dodaš v občino in da povežeš uporabnika z njegovimo osebno evidenco.", - "tr_userEmailAddress": "User’s email address", - "tr_searchUser": "Search user", - "tr_noUserError": "No user found with this email address", - "tr_userFoundSuccess": "User found! Set up his user profile and rights", - "tr_addNewPublisherDesc": "Select a member from your congregation’s Persons list to generate and share their unique invitation code.", - "tr_inviteUserDesc": "Provide this personal invitation code to grant the user access to your congregation on Organized. It’s also available on their user page.", - "tr_invitePersonTitle": "Invite: {{ PersonName }}", - "tr_newUserAddedSuccess": "New user added", - "tr_newUserAddedSuccessDesc": "{{ PersonName }} now has a user account", - "tr_congregationSettingsDesc": "These settings apply to the entire congregation", - "tr_circuitNumber": "Circuit number", - "tr_24hFormat": "Use 24-h time format", + "tr_userEmailAddress": "E-poštni naslov uporabnika", + "tr_searchUser": "Išči uporabnika", + "tr_noUserError": "Noben uporabnik ni najden s tem e-poštnim naslovom", + "tr_userFoundSuccess": "Uporabnik najden! Nastavi njegov profil uporabnika in pravice.", + "tr_addNewPublisherDesc": "Izberi člana s seznama oseb v vaši občini, če želiš ustvariti in deliti njegovo edinstveno kodo povabila.", + "tr_inviteUserDesc": "To osebno kodo povabila posreduj uporabniku, da mu omogočiš dostop do vaše občine v aplikaciji Organized. Koda je na voljo tudi na njegovi uporabniški strani.", + "tr_invitePersonTitle": "Povabi: {{ PersonName }}", + "tr_newUserAddedSuccess": "Nov uporabnik dodan", + "tr_newUserAddedSuccessDesc": "{{ PersonName }} ima zdaj uporabniški račun", + "tr_congregationSettingsDesc": "Te nastavitve se nanašajo na celotno občino", + "tr_circuitNumber": "Številka okraja", + "tr_24hFormat": "Uporabi 24-urni časovni format", "tr_useDisplayNameOnSchedules": "Na razporedih shodov uporabi prikazno ime", "tr_displayNameMeetingDesc": "“Janez N.” namesto “Janez Novak”. Polno ime bo še vedno na voljo v aplikaciji Organized.", - "tr_exactDatesOnMidweekMeetings": "Display the exact dates on midweek meeting schedules", + "tr_exactDatesOnMidweekMeetings": "Na razporedih shodov med tednom pokaži točne datume", "tr_exactDatesOnMidweekMeetingsDesc": "Namesto ponedeljkovega datuma prikaži točne datume shodov", "tr_useDisplayNameMeeting": "Na razporedih shodov uporabi prikazna imena", "tr_useDisplayNameOthers": "Uporabi prikazna imena na drugih razporedih", "tr_useDisplayNameOthersDesc": "Uporabno za razporede nalog ali razpored čiščenja z veliko vsebinami. Preizkusi, katera možnost deluje najbolje.", - "tr_recordOnlineAttendance": "Record online meeting attendance", + "tr_recordOnlineAttendance": "Zabeleži število prisotnih na shodu prek spleta", "tr_recordOnlineAttendanceDesc": "Add an ’Online’ input field to track both online and in-person attendance", "tr_kingdomHallAddressDesc": "Provide the address to inform visiting speakers of the location", - "tr_meetingSettings": "Meeting settings", - "tr_midweek": "Midweek", - "tr_meetingDay": "Meeting day", + "tr_meetingSettings": "Nastavitve za shode", + "tr_midweek": "Med tednom", + "tr_meetingDay": "Dan shoda", "tr_autoAssignOpeningPrayer": "Auto-assign chairman for opening prayer", "tr_autoAssignClosingPrayer": "Auto-assign chairman for closing prayer", "tr_auxClassroom": "Auxiliary classroom", From c9e97d6dda191ae8dc5141b961e9c3b4e03ec2e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 23:27:27 +0000 Subject: [PATCH 25/27] chore(actions): bump github/codeql-action from 3.27.1 to 3.27.3 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.27.1 to 3.27.3. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/4f3212b61783c3c68e8309a0f18a699764811cda...396bb3e45325a47dd9ef434068033c6d5bb0d11a) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/code-ql.yml | 4 ++-- .github/workflows/njsscan.yml | 2 +- .github/workflows/scorecards.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/code-ql.yml b/.github/workflows/code-ql.yml index cc51b5162b..a31d26f36a 100644 --- a/.github/workflows/code-ql.yml +++ b/.github/workflows/code-ql.yml @@ -23,10 +23,10 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - name: Initialize CodeQL - uses: github/codeql-action/init@4f3212b61783c3c68e8309a0f18a699764811cda + uses: github/codeql-action/init@396bb3e45325a47dd9ef434068033c6d5bb0d11a with: languages: javascript queries: security-extended - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@4f3212b61783c3c68e8309a0f18a699764811cda + uses: github/codeql-action/analyze@396bb3e45325a47dd9ef434068033c6d5bb0d11a diff --git a/.github/workflows/njsscan.yml b/.github/workflows/njsscan.yml index 6e2f742b63..da97e8c34e 100644 --- a/.github/workflows/njsscan.yml +++ b/.github/workflows/njsscan.yml @@ -31,6 +31,6 @@ jobs: args: '. --sarif --output results.sarif || true' - name: Upload njsscan report - uses: github/codeql-action/upload-sarif@4f3212b61783c3c68e8309a0f18a699764811cda + uses: github/codeql-action/upload-sarif@396bb3e45325a47dd9ef434068033c6d5bb0d11a with: sarif_file: results.sarif diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 2f2809f5ee..a069f006b1 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -36,6 +36,6 @@ jobs: publish_results: true - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@4f3212b61783c3c68e8309a0f18a699764811cda + uses: github/codeql-action/upload-sarif@396bb3e45325a47dd9ef434068033c6d5bb0d11a with: sarif_file: results.sarif From c66cc3b5648f44fb23635c8e27cd2a0fb4c4bcf0 Mon Sep 17 00:00:00 2001 From: sws2apps-admin Date: Wed, 13 Nov 2024 09:13:13 +0300 Subject: [PATCH 26/27] feat(localize): updated translation from Crowdin --- src/locales/fi-FI/congregation.json | 4 ++-- src/locales/fi-FI/onboarding.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/locales/fi-FI/congregation.json b/src/locales/fi-FI/congregation.json index ad4d70585d..71493edbf1 100644 --- a/src/locales/fi-FI/congregation.json +++ b/src/locales/fi-FI/congregation.json @@ -441,6 +441,6 @@ "tr_serviceYearAlt": "Palvelusvuosi {{ year }}", "tr_speakersOutgoing": "Lähtevät puhujat", "tr_speakersLocal": "Paikalliset puhujat", - "tr_addUserSyncNeeded": "Enable congregation sync to add users", - "tr_addUserSyncNeededDesc": "To add more users to your congregation, enable the congregation sync feature. This allows you to add more users and devices for better collaboration. You can turn this feature on or off anytime in the congregation settings." + "tr_addUserSyncNeeded": "Salli seurakunnan synkronointi lisätäksesi käyttäjiä", + "tr_addUserSyncNeededDesc": "Jos haluat lisätä käyttäjiä seurakuntaan, ota seurakunnan synkronointi käyttöön. Tämän avulla voit lisätä käyttäjiä ja laitteita yhteistyön helpottamiseksi. Voit ottaa tämän ominaisuuden käyttöön tai pois käytöstä milloin tahansa seurakunnan asetuksista." } diff --git a/src/locales/fi-FI/onboarding.json b/src/locales/fi-FI/onboarding.json index 1ec32925bf..524cde3150 100644 --- a/src/locales/fi-FI/onboarding.json +++ b/src/locales/fi-FI/onboarding.json @@ -122,5 +122,5 @@ "tr_createMasterKey": "Luo pääavain", "tr_createMasterKeyDesc": "

Ensiksi luo seurakunnan pääavain. Se salaa turvallisesti seurakuntasi tiedot, mukaan lukien raportit ja henkilöt, ja se on olennaisen tärkeää hallinnollisissa tehtävissä, kuten tietojen viennissä/tuonnissa ja asetuksissa.

", "tr_createAccessCode": "Luo pääsykoodi", - "tr_createAccessCodeDesc": "

Finally, create the access code. This unique code allows new users to connect to your congregation in Organized. It ensures that your congregation’s information always remains secure, granting access only to approved users.

" + "tr_createAccessCodeDesc": "

Lopuksi, luo pääsykoodi. Tämä ainutlaatuinen koodi sallii uusien käyttäjien yhteyden ja kirjautua sisään turvallisesti. Se salaa tietoja ja sitä tarvitaan seurakuntasi käyttöön Organized-sovelluksessa.

" } From 20deb1da237696e7b0ac251fa0022086124a1bec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 23:27:56 +0000 Subject: [PATCH 27/27] feat(deps): bump jw-epub-parser from 3.27.0 to 3.28.1 Bumps [jw-epub-parser](https://github.com/sws2apps/jw-epub-parser) from 3.27.0 to 3.28.1. - [Release notes](https://github.com/sws2apps/jw-epub-parser/releases) - [Changelog](https://github.com/sws2apps/jw-epub-parser/blob/main/CHANGELOG.md) - [Commits](https://github.com/sws2apps/jw-epub-parser/compare/v3.27.0...v3.28.1) --- updated-dependencies: - dependency-name: jw-epub-parser dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 94961805c0..3c2c79359a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,7 +32,7 @@ "i18next": "^23.16.5", "interweave": "^13.1.0", "jszip": "^3.10.1", - "jw-epub-parser": "^3.27.0", + "jw-epub-parser": "^3.28.1", "mui-one-time-password-input": "^3.0.1", "node-html-parser": "^6.1.13", "qrcode": "^1.5.4", @@ -12329,9 +12329,9 @@ } }, "node_modules/jw-epub-parser": { - "version": "3.27.0", - "resolved": "https://registry.npmjs.org/jw-epub-parser/-/jw-epub-parser-3.27.0.tgz", - "integrity": "sha512-Lh00oDC3slvnC0aB5NIUYbsAmU3CYGD60apscuCcKgQo6b4P+divRPiNHCq/M21VyGJFtqBPrjWcIGdmz5Nz+g==", + "version": "3.28.1", + "resolved": "https://registry.npmjs.org/jw-epub-parser/-/jw-epub-parser-3.28.1.tgz", + "integrity": "sha512-JUwhPfDM9MW4H0qC6KdeQpvyhuX8scKHCjM0E/d3+uRpvMlXtWrG4/tZUHARV2AUxJcRfUdKziUHloduOle+SA==", "dependencies": { "jszip": "^3.9.1", "node-html-parser": "^6.1.6", diff --git a/package.json b/package.json index 1634671415..4368d5efc2 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "i18next": "^23.16.5", "interweave": "^13.1.0", "jszip": "^3.10.1", - "jw-epub-parser": "^3.27.0", + "jw-epub-parser": "^3.28.1", "mui-one-time-password-input": "^3.0.1", "node-html-parser": "^6.1.13", "qrcode": "^1.5.4",