diff --git a/app/definitions/IRoom.ts b/app/definitions/IRoom.ts index 64f0b8eb87..442d78dd2c 100644 --- a/app/definitions/IRoom.ts +++ b/app/definitions/IRoom.ts @@ -163,7 +163,12 @@ export interface IServerRoom extends IRocketChatRecord { username?: string; nickname?: string; - federation?: any; + federation?: { + version: number; + mrid: string; + origin: string; + peer?: string; + }; roomsCount?: number; u: Pick; diff --git a/app/definitions/ISubscription.ts b/app/definitions/ISubscription.ts index cfade80e10..f1fe2165fb 100644 --- a/app/definitions/ISubscription.ts +++ b/app/definitions/ISubscription.ts @@ -116,6 +116,11 @@ export interface ISubscription { uploads: RelationModified; disableNotifications?: boolean; federated?: boolean; + federation?: { + version: number; + mrid: string; + origin: string; + }; inviter?: Required> & Pick; } diff --git a/app/i18n/locales/ar.json b/app/i18n/locales/ar.json index 2b782cb142..22ad795f7d 100644 --- a/app/i18n/locales/ar.json +++ b/app/i18n/locales/ar.json @@ -206,6 +206,9 @@ "Expiration_Days": "انتهاء (أيام)", "Favorite": "مفضل", "Favorites": "مفضلات", + "Federation_Matrix_room_description_disabled": "الاتحاد معطل حاليًا في مساحة العمل هذه", + "Federation_Matrix_room_description_invalid_version": "تم إنشاء هذه الغرفة بواسطة إصدار قديم من الاتحاد وهي محظورة بشكل غير محدد.", + "Federation_Matrix_room_description_missing_module": "الانضمام إلى الغرف المتصلة هو ميزة متميزة", "Fetch_image_from_URL": "جلب الصورة من الرابط", "Field_are_required": "{{field}} مطلوبة", "Field_is_required": "{{field}} مطلوب", diff --git a/app/i18n/locales/bn-IN.json b/app/i18n/locales/bn-IN.json index c7eaa1d30a..377e969cd7 100644 --- a/app/i18n/locales/bn-IN.json +++ b/app/i18n/locales/bn-IN.json @@ -313,6 +313,9 @@ "Expiration_Days": "মেয়াদ শেষ (দিন)", "Favorite": "প্রিয়", "Favorites": "প্রিয়সমূহ", + "Federation_Matrix_room_description_disabled": "এই ওয়ার্কস্পেসে ফেডারেশন বর্তমানে নিষ্ক্রিয়", + "Federation_Matrix_room_description_invalid_version": "এই রুমটি একটি পুরানো ফেডারেশন সংস্করণ দ্বারা তৈরি করা হয়েছিল এবং এটি অনির্দিষ্টকালের জন্য অবরুদ্ধ।", + "Federation_Matrix_room_description_missing_module": "ফেডারেটেড রুমে যোগদান একটি প্রিমিয়াম বৈশিষ্ট্য", "Fetch_image_from_URL": "URL থেকে ছবি আনুন", "Field_are_required": "{{field}} প্রয়োজনীয়।", "Field_is_required": "{{field}} প্রয়োজনীয়", diff --git a/app/i18n/locales/cs.json b/app/i18n/locales/cs.json index bb8669e873..4423f7b384 100644 --- a/app/i18n/locales/cs.json +++ b/app/i18n/locales/cs.json @@ -333,6 +333,9 @@ "Expiration_Days": "Vypršení platnosti (dny)", "Favorite": "Oblíbený", "Favorites": "Oblíbené", + "Federation_Matrix_room_description_disabled": "Federace je v tomto pracovním prostoru aktuálně zakázána", + "Federation_Matrix_room_description_invalid_version": "Tato místnost byla vytvořena starou verzí Federace a je na neurčito blokována.", + "Federation_Matrix_room_description_missing_module": "Připojení k federovaným místnostem je prémiová funkce", "Fetch_image_from_URL": "Načíst obrázek z URL", "Field_are_required": "{{field}} jsou povinné.", "Field_is_required": "{{field}} je povinný.", diff --git a/app/i18n/locales/de.json b/app/i18n/locales/de.json index 64d1e4f2ee..6115f8c8a1 100644 --- a/app/i18n/locales/de.json +++ b/app/i18n/locales/de.json @@ -307,6 +307,9 @@ "Expiration_Days": "läuft ab (Tage)", "Favorite": "Lieblings-", "Favorites": "Favoriten", + "Federation_Matrix_room_description_disabled": "Föderation ist derzeit in diesem Arbeitsbereich deaktiviert", + "Federation_Matrix_room_description_invalid_version": "Dieser Raum wurde mit einer alten Föderationsversion erstellt und ist unbestimmt blockiert.", + "Federation_Matrix_room_description_missing_module": "Beitritt zu föderierten Räumen ist eine Premium-Funktion", "Fetch_image_from_URL": "Bild von URL abrufen", "Field_are_required": "{{field}} sind erforderlich", "Field_is_required": "{{field}} ist erforderlich", diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index 7cde36b99b..2fe8d09afd 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -352,6 +352,9 @@ "Expiration_Days": "Expiration (days)", "Favorite": "Favorite", "Favorites": "Favorites", + "Federation_Matrix_room_description_disabled": "Federation is currently disabled on this workspace", + "Federation_Matrix_room_description_invalid_version": "This room was created by an old Federation version and it's blocked indeterminately.", + "Federation_Matrix_room_description_missing_module": "Joining federated rooms is a Premium feature", "Fetch_image_from_URL": "Fetch image from URL", "Field_are_required": "{{field}} are required", "Field_is_required": "{{field}} is required", diff --git a/app/i18n/locales/es.json b/app/i18n/locales/es.json index 28e449a8f2..9e8452bf33 100644 --- a/app/i18n/locales/es.json +++ b/app/i18n/locales/es.json @@ -167,6 +167,9 @@ "Everyone_can_access_this_channel": "Todos los usuarios pueden acceder a este canal", "Favorite": "Favorito", "Favorites": "Favoritos", + "Federation_Matrix_room_description_disabled": "La federación está actualmente deshabilitada en este espacio de trabajo", + "Federation_Matrix_room_description_invalid_version": "Esta sala fue creada por una versión antigua de Federación y está bloqueada indefinidamente.", + "Federation_Matrix_room_description_missing_module": "Unirse a salas federadas es una función Premium", "Fetch_image_from_URL": "Obtener imagen desde URL", "Field_are_required": "{{field}} son obligatorios", "Field_is_required": "{{field}} es obligatorio", diff --git a/app/i18n/locales/fi.json b/app/i18n/locales/fi.json index 192533cc01..2d1f815ef5 100644 --- a/app/i18n/locales/fi.json +++ b/app/i18n/locales/fi.json @@ -292,6 +292,9 @@ "Expiration_Days": "Vanheneminen (päivää)", "Favorite": "Suosikki", "Favorites": "Suosikit", + "Federation_Matrix_room_description_disabled": "Federointi on tällä hetkellä poistettu käytöstä tässä työtilassa", + "Federation_Matrix_room_description_invalid_version": "Tämä huone luotiin vanhalla Federointi-versiolla ja se on estetty määrittelemättömästi.", + "Federation_Matrix_room_description_missing_module": "Liittyminen federoiduihin huoneisiin on Premium-ominaisuus", "Fetch_image_from_URL": "Hae kuva URL-osoitteesta", "Field_are_required": "{{field}} ovat pakollisia.", "Field_is_required": "{{field}} on pakollinen", diff --git a/app/i18n/locales/fr.json b/app/i18n/locales/fr.json index 8d17aff1f1..907cd239c2 100644 --- a/app/i18n/locales/fr.json +++ b/app/i18n/locales/fr.json @@ -258,6 +258,9 @@ "Expiration_Days": "Expiration (Jours)", "Favorite": "Favori", "Favorites": "Favoris", + "Federation_Matrix_room_description_disabled": "La fédération est actuellement désactivée sur cet espace de travail", + "Federation_Matrix_room_description_invalid_version": "Cette salle a été créée par une ancienne version de Fédération et est bloquée indéfiniment.", + "Federation_Matrix_room_description_missing_module": "Rejoindre les salles fédérées est une fonctionnalité Premium", "Fetch_image_from_URL": "Récupérer l'image depuis l'URL", "Field_are_required": "Les {{field}} sont requis.", "Field_is_required": "Le champ {{field}} est requis.", diff --git a/app/i18n/locales/hi-IN.json b/app/i18n/locales/hi-IN.json index 758612aacd..b3abe42c00 100644 --- a/app/i18n/locales/hi-IN.json +++ b/app/i18n/locales/hi-IN.json @@ -313,6 +313,9 @@ "Expiration_Days": "समाप्ति (दिन)", "Favorite": "पसंदीदा", "Favorites": "पसंदीदा", + "Federation_Matrix_room_description_disabled": "इस वर्कस्पेस पर फेडरेशन वर्तमान में अक्षम है", + "Federation_Matrix_room_description_invalid_version": "यह रूम फेडरेशन के पुराने संस्करण द्वारा बनाया गया था और यह अनिश्चित काल के लिए अवरुद्ध है।", + "Federation_Matrix_room_description_missing_module": "फेडरेटेड रूम में शामिल होना एक प्रीमियम सुविधा है", "Fetch_image_from_URL": "URL से छवि प्राप्त करें", "Field_are_required": "{{field}} आवश्यक हैं।", "Field_is_required": "{{field}} आवश्यक है।", diff --git a/app/i18n/locales/hu.json b/app/i18n/locales/hu.json index 0e561b31a2..72b1e59188 100644 --- a/app/i18n/locales/hu.json +++ b/app/i18n/locales/hu.json @@ -313,6 +313,9 @@ "Expiration_Days": "Lejárat (napokban)", "Favorite": "Kedvenc", "Favorites": "Kedvencek", + "Federation_Matrix_room_description_disabled": "A federáció jelenleg le van tiltva ezen a munkaterületen", + "Federation_Matrix_room_description_invalid_version": "Ez a szoba egy régi Federáció verzióval lett létrehozva és határozatlan ideig blokkolva van.", + "Federation_Matrix_room_description_missing_module": "A federált szobákhoz való csatlakozás prémium funkció", "Fetch_image_from_URL": "Kép betöltése az URL-ről", "Field_are_required": "{{field}} kötelezőek", "Field_is_required": "A {{field}} megadása kötelező.", diff --git a/app/i18n/locales/it.json b/app/i18n/locales/it.json index 7478b0eb58..38ca18522b 100644 --- a/app/i18n/locales/it.json +++ b/app/i18n/locales/it.json @@ -231,6 +231,9 @@ "Expiration_Days": "Scadenza (giorni)", "Favorite": "Preferito", "Favorites": "Preferiti", + "Federation_Matrix_room_description_disabled": "La federazione è attualmente disabilitata in questo spazio di lavoro", + "Federation_Matrix_room_description_invalid_version": "Questa stanza è stata creata da una vecchia versione di Federazione ed è bloccata indefinitamente.", + "Federation_Matrix_room_description_missing_module": "Unirsi alle stanze federate è una funzionalità Premium", "Fetch_image_from_URL": "Recupera immagine da URL", "Field_are_required": "{{field}} sono obbligatori", "Field_is_required": "Il campo {{field}} è obbligatorio", diff --git a/app/i18n/locales/ja.json b/app/i18n/locales/ja.json index b411d1f38d..6dd88ba298 100644 --- a/app/i18n/locales/ja.json +++ b/app/i18n/locales/ja.json @@ -206,6 +206,9 @@ "Expiration_Days": "期限切れ (日)", "Favorite": "お気に入り", "Favorites": "お気に入り", + "Federation_Matrix_room_description_disabled": "このワークスペースでは現在フェデレーションが無効になっています", + "Federation_Matrix_room_description_invalid_version": "このルームは古いフェデレーションバージョンで作成され、無期限にブロックされています。", + "Federation_Matrix_room_description_missing_module": "フェデレーションルームへの参加はプレミアム機能です", "Fetch_image_from_URL": "URLから画像を取得する", "Field_are_required": "{{field}}は必須です。", "Field_is_required": "{{field}}は必須です。", diff --git a/app/i18n/locales/nl.json b/app/i18n/locales/nl.json index 195bf9a0b4..18d87e0051 100644 --- a/app/i18n/locales/nl.json +++ b/app/i18n/locales/nl.json @@ -258,6 +258,9 @@ "Expiration_Days": "Vervaldatum (Dagen)", "Favorite": "Favoriet", "Favorites": "Favorieten", + "Federation_Matrix_room_description_disabled": "Federatie is momenteel uitgeschakeld op deze werkruimte", + "Federation_Matrix_room_description_invalid_version": "Deze ruimte is gemaakt met een oude Federatie-versie en is onbepaald geblokkeerd.", + "Federation_Matrix_room_description_missing_module": "Deelnemen aan gefedereerde ruimtes is een Premium-functie", "Fetch_image_from_URL": "Afbeelding ophalen van URL", "Field_are_required": "{{field}} zijn verplicht", "Field_is_required": "{{field}} is vereist", diff --git a/app/i18n/locales/nn.json b/app/i18n/locales/nn.json index b360712099..2a6c412bc1 100644 --- a/app/i18n/locales/nn.json +++ b/app/i18n/locales/nn.json @@ -165,6 +165,9 @@ "Everyone_can_access_this_channel": "Alle kan få tilgang til denne kanalen", "Favorite": "Favoritt", "Favorites": "Favoritter", + "Federation_Matrix_room_description_disabled": "Federasjon er for tida deaktivert på dette arbeidsområdet", + "Federation_Matrix_room_description_invalid_version": "Dette rommet vart oppretta med ei gammal Federasjon-versjon og er blokkert på ubestemt tid.", + "Federation_Matrix_room_description_missing_module": "Å bli med i federerte rom er ein Premium-funksjon", "Field_is_required": "{{field}} er påkrevd", "File_description": "Filbeskrivelse", "Files": "Filer", diff --git a/app/i18n/locales/no.json b/app/i18n/locales/no.json index f8b71710b9..db8c522583 100644 --- a/app/i18n/locales/no.json +++ b/app/i18n/locales/no.json @@ -336,6 +336,9 @@ "Expanded": "Utvidet", "Expiration_Days": "Utløp (dager)", "Favorites": "Favoritter", + "Federation_Matrix_room_description_disabled": "Federasjon er for øyeblikket deaktivert på denne arbeidsområdet", + "Federation_Matrix_room_description_invalid_version": "Dette rommet ble opprettet med en gammel Federasjon-versjon og er blokkert på ubestemt tid.", + "Federation_Matrix_room_description_missing_module": "Bli med i federerte rom er en Premium-funksjon", "Fetch_image_from_URL": "Hent bilde fra URL", "Field_is_required": "{{field}} er påkrevd", "File_description": "Filbeskrivelse", diff --git a/app/i18n/locales/pt-BR.json b/app/i18n/locales/pt-BR.json index 93deb5bb7e..80277d2dfd 100644 --- a/app/i18n/locales/pt-BR.json +++ b/app/i18n/locales/pt-BR.json @@ -343,6 +343,9 @@ "Expiration_Days": "Expira em (dias)", "Favorite": "Favorito", "Favorites": "Favoritos", + "Federation_Matrix_room_description_disabled": "A federação está atualmente desabilitada neste espaço de trabalho", + "Federation_Matrix_room_description_invalid_version": "Esta sala foi criada por uma versão antiga da Federação e está bloqueada indefinidamente.", + "Federation_Matrix_room_description_missing_module": "Entrar em salas federadas é um recurso Premium", "Fetch_image_from_URL": "Obter imagem da URL", "Field_are_required": "{{field}} são obrigatórios", "Field_is_required": "{{field}} é obrigatório", diff --git a/app/i18n/locales/pt-PT.json b/app/i18n/locales/pt-PT.json index 94f7625a31..33b37d931e 100644 --- a/app/i18n/locales/pt-PT.json +++ b/app/i18n/locales/pt-PT.json @@ -201,6 +201,9 @@ "Expiration_Days": "Validade (Dias)", "Favorite": "Favorito", "Favorites": "Favoritos", + "Federation_Matrix_room_description_disabled": "A federação está atualmente desativada neste espaço de trabalho", + "Federation_Matrix_room_description_invalid_version": "Esta sala foi criada por uma versão antiga da Federação e está bloqueada indefinidamente.", + "Federation_Matrix_room_description_missing_module": "Entrar em salas federadas é uma funcionalidade Premium", "Fetch_image_from_URL": "Pesquisar imagem do URL", "Field_are_required": "{{field}} são obrigatórios", "Field_is_required": "{{campo}} é obrigatório", diff --git a/app/i18n/locales/ru.json b/app/i18n/locales/ru.json index 795bfa8cfe..662866909f 100644 --- a/app/i18n/locales/ru.json +++ b/app/i18n/locales/ru.json @@ -283,6 +283,9 @@ "Expiration_Days": "Срок действия (Дни)", "Favorite": "Любимый", "Favorites": "Избранное", + "Federation_Matrix_room_description_disabled": "Федерация в настоящее время отключена в этом рабочем пространстве", + "Federation_Matrix_room_description_invalid_version": "Эта комната была создана старой версией Федерации и заблокирована на неопределенный срок.", + "Federation_Matrix_room_description_missing_module": "Присоединение к федеративным комнатам — это функция Premium", "Fetch_image_from_URL": "получить изображение по URL", "Field_are_required": "Поле {{field}} обязательно для заполнения.", "Field_is_required": "Поле {{field}} является обязательным.", diff --git a/app/i18n/locales/sl-SI.json b/app/i18n/locales/sl-SI.json index 3594207171..a6a6cc8e74 100644 --- a/app/i18n/locales/sl-SI.json +++ b/app/i18n/locales/sl-SI.json @@ -269,6 +269,9 @@ "Expiration_Days": "Iztek (dnevi)", "Favorite": "Priljubljeno", "Favorites": "Priljubljeno", + "Federation_Matrix_room_description_disabled": "Federacija je trenutno onemogočena v tem delovnem prostoru", + "Federation_Matrix_room_description_invalid_version": "Ta soba je bila ustvarjena s staro različico Federacije in je nedoločno blokirana.", + "Federation_Matrix_room_description_missing_module": "Pridružitev federiranim sobam je Premium funkcija", "Fetch_image_from_URL": "Pridobi sliko iz URL", "Field_are_required": "{{field}} so obvezna", "Field_is_required": "{{field}} je obvezno", diff --git a/app/i18n/locales/sv.json b/app/i18n/locales/sv.json index bf0e806bfc..4904ca1c7c 100644 --- a/app/i18n/locales/sv.json +++ b/app/i18n/locales/sv.json @@ -292,6 +292,9 @@ "Expiration_Days": "Förfallotid (dagar)", "Favorite": "Favorit", "Favorites": "Favoriter", + "Federation_Matrix_room_description_disabled": "Federation är för närvarande inaktiverad på denna arbetsyta", + "Federation_Matrix_room_description_invalid_version": "Detta rum skapades med en gammal Federation-version och är blockerat på obestämd tid.", + "Federation_Matrix_room_description_missing_module": "Gå med i federerade rum är en Premium-funktion", "Fetch_image_from_URL": "Hämta bild från URL", "Field_are_required": "{{field}} är obligatoriska", "Field_is_required": "{{fält}} är obligatoriskt", diff --git a/app/i18n/locales/ta-IN.json b/app/i18n/locales/ta-IN.json index 88859ec70f..f11cb9b946 100644 --- a/app/i18n/locales/ta-IN.json +++ b/app/i18n/locales/ta-IN.json @@ -313,6 +313,9 @@ "Expiration_Days": "காலாவதி (நாட்கள்)", "Favorite": "பிடித்தது", "Favorites": "பிடித்தவை", + "Federation_Matrix_room_description_disabled": "இந்த பணியிடத்தில் இணைப்பு தற்போது முடக்கப்பட்டுள்ளது", + "Federation_Matrix_room_description_invalid_version": "இந்த அறை ஒரு பழைய இணைப்பு பதிப்பால் உருவாக்கப்பட்டது மற்றும் காலவரையின்றி தடுக்கப்பட்டுள்ளது.", + "Federation_Matrix_room_description_missing_module": "இணைக்கப்பட்ட அறைகளில் சேர்வது ஒரு பிரீமியம் அம்சமாகும்", "Fetch_image_from_URL": "URL இலிருந்து படத்தைப் பெறவும்", "Field_are_required": "{{field}} தேவை.", "Field_is_required": "{{field}} தேவை.", diff --git a/app/i18n/locales/te-IN.json b/app/i18n/locales/te-IN.json index 1352e1c7ea..6ce5912b53 100644 --- a/app/i18n/locales/te-IN.json +++ b/app/i18n/locales/te-IN.json @@ -312,6 +312,9 @@ "Expiration_Days": "కాలాంతరం (రోజులు)", "Favorite": "पसंदीदा", "Favorites": "ఇష్టాలు", + "Federation_Matrix_room_description_disabled": "ఈ వర్క్‌స్పేస్‌లో ఫెడరేషన్ ప్రస్తుతం నిలిపివేయబడింది", + "Federation_Matrix_room_description_invalid_version": "ఈ గది పాత ఫెడరేషన్ వెర్షన్‌తో సృష్టించబడింది మరియు నిరవధికంగా నిరోధించబడింది.", + "Federation_Matrix_room_description_missing_module": "ఫెడరేటెడ్ గదులలో చేరడం ఒక ప్రీమియం ఫీచర్", "Fetch_image_from_URL": "URL నుండి చిత్రాన్ని పొందండి", "Field_are_required": "{{field}} आवश्यक हैं", "Field_is_required": "{{field}} आवश्यक है।", diff --git a/app/i18n/locales/tr.json b/app/i18n/locales/tr.json index 8f866b00b7..b62c57963b 100644 --- a/app/i18n/locales/tr.json +++ b/app/i18n/locales/tr.json @@ -218,6 +218,9 @@ "Expiration_Days": "Geçerlilik Süresi (Gün)", "Favorite": "Favori", "Favorites": "Favoriler", + "Federation_Matrix_room_description_disabled": "Federasyon şu anda bu çalışma alanında devre dışı", + "Federation_Matrix_room_description_invalid_version": "Bu oda eski bir Federasyon sürümü tarafından oluşturuldu ve süresiz olarak engellendi.", + "Federation_Matrix_room_description_missing_module": "Federe odalara katılmak bir Premium özelliğidir", "Fetch_image_from_URL": "URL'den resim al", "Field_are_required": "{{field}} gereklidir.", "Field_is_required": "{{field}} gerekli", diff --git a/app/i18n/locales/zh-CN.json b/app/i18n/locales/zh-CN.json index fd07bc6a02..924f8223a7 100644 --- a/app/i18n/locales/zh-CN.json +++ b/app/i18n/locales/zh-CN.json @@ -214,6 +214,9 @@ "Expiration_Days": "到期 (日)", "Favorite": "收藏", "Favorites": "收藏", + "Federation_Matrix_room_description_disabled": "此工作区当前已禁用联合", + "Federation_Matrix_room_description_invalid_version": "此房间由旧版联合创建,已被无限期阻止。", + "Federation_Matrix_room_description_missing_module": "加入联合房间是高级功能", "Fetch_image_from_URL": "从URL获取图片", "Field_are_required": "{{field}}为必填项。", "Field_is_required": "{{field}}为必填项。", diff --git a/app/i18n/locales/zh-TW.json b/app/i18n/locales/zh-TW.json index 95d76aa39b..026991f524 100644 --- a/app/i18n/locales/zh-TW.json +++ b/app/i18n/locales/zh-TW.json @@ -222,6 +222,9 @@ "Expiration_Days": "到期 (日)", "Favorite": "最愛", "Favorites": "我的最愛", + "Federation_Matrix_room_description_disabled": "此工作區目前已停用聯合", + "Federation_Matrix_room_description_invalid_version": "此房間由舊版聯合建立,已被無限期封鎖。", + "Federation_Matrix_room_description_missing_module": "加入聯合房間是進階功能", "Fetch_image_from_URL": "從URL獲取圖片", "Field_are_required": "{{field}}為必填項目", "Field_is_required": "{{field}} 是必填項目", diff --git a/app/lib/constants/defaultSettings.ts b/app/lib/constants/defaultSettings.ts index 74b3f1ed35..aac112fd0f 100644 --- a/app/lib/constants/defaultSettings.ts +++ b/app/lib/constants/defaultSettings.ts @@ -300,5 +300,11 @@ export const defaultSettings = { Cloud_Workspace_AirGapped_Restrictions_Remaining_Days: { type: 'valueAsNumber' }, + Federation_Service_Enabled: { + type: 'valueAsBoolean' + }, + Federation_Matrix_enabled: { + type: 'valueAsBoolean' + }, ...deprecatedSettings } as const; diff --git a/app/lib/database/model/Subscription.js b/app/lib/database/model/Subscription.js index 8769d94e48..b921637eda 100644 --- a/app/lib/database/model/Subscription.js +++ b/app/lib/database/model/Subscription.js @@ -153,6 +153,8 @@ export default class Subscription extends Model { @field('federated') federated; + @json('federation', sanitizer) federation; + @field('status') status; @json('inviter', sanitizer) inviter; @@ -224,6 +226,7 @@ export default class Subscription extends Model { source: this.source, disableNotifications: this.disableNotifications, federated: this.federated, + federation: this.federation, status: this.status, inviter: this.inviter }; diff --git a/app/lib/database/model/migrations.js b/app/lib/database/model/migrations.js index 6889ffca8c..97c40167b4 100644 --- a/app/lib/database/model/migrations.js +++ b/app/lib/database/model/migrations.js @@ -338,6 +338,7 @@ export default schemaMigrations({ addColumns({ table: 'subscriptions', columns: [ + { name: 'federation', type: 'string', isOptional: true }, { name: 'status', type: 'string', isOptional: true }, { name: 'inviter', type: 'string', isOptional: true } ] diff --git a/app/lib/database/schema/app.js b/app/lib/database/schema/app.js index ad09acb04a..24cadb2668 100644 --- a/app/lib/database/schema/app.js +++ b/app/lib/database/schema/app.js @@ -71,6 +71,7 @@ export default appSchema({ { name: 'unmuted', type: 'string', isOptional: true }, { name: 'disable_notifications', type: 'boolean', isOptional: true }, { name: 'federated', type: 'boolean', isOptional: true }, + { name: 'federation', type: 'string', isOptional: true }, { name: 'status', type: 'string', isOptional: true }, { name: 'inviter', type: 'string', isOptional: true } ] diff --git a/app/lib/methods/helpers/mergeSubscriptionsRooms.ts b/app/lib/methods/helpers/mergeSubscriptionsRooms.ts index fe4e8816f9..b17399d3b7 100644 --- a/app/lib/methods/helpers/mergeSubscriptionsRooms.ts +++ b/app/lib/methods/helpers/mergeSubscriptionsRooms.ts @@ -103,6 +103,10 @@ export const merge = ( if (room && 'usersCount' in room) { mergedSubscription.usersCount = room.usersCount; } + + if (room && 'federation' in room) { + mergedSubscription.federation = room.federation; + } } if (!mergedSubscription.name) { diff --git a/app/lib/methods/isRoomFederated.ts b/app/lib/methods/isRoomFederated.ts index 910ae6b7e9..513b8109bf 100644 --- a/app/lib/methods/isRoomFederated.ts +++ b/app/lib/methods/isRoomFederated.ts @@ -1,8 +1,19 @@ import { type ISubscription } from '../../definitions'; -interface IRoomFederated extends ISubscription { +export interface IRoomFederated extends ISubscription { federated: true; } +export interface IRoomNativeFederated extends IRoomFederated { + federation: { + version: number; + mrid: string; + origin: string; + }; +} + export const isRoomFederated = (room: ISubscription): room is IRoomFederated => 'federated' in room && (room as any).federated === true; + +export const isRoomNativeFederated = (room: ISubscription): room is IRoomNativeFederated => + isRoomFederated(room) && 'federation' in room && !!room.federation; diff --git a/app/views/RoomView/definitions.ts b/app/views/RoomView/definitions.ts index 156fbcdcc0..e583db6a38 100644 --- a/app/views/RoomView/definitions.ts +++ b/app/views/RoomView/definitions.ts @@ -32,6 +32,8 @@ export interface IRoomViewProps extends IActionSheetProvider, IBaseScreen { getText = () => this.messageComposerRef.current?.getText(); + getFederatedFooterDescription = (room: IRoomFederated) => { + const { isFederationEnabled, isFederationModuleEnabled } = this.props; + + if (!isRoomNativeFederated(room)) { + return I18n.t('Federation_Matrix_room_description_invalid_version'); + } + + if (!isFederationEnabled) { + return I18n.t('Federation_Matrix_room_description_disabled'); + } + + if (!isFederationModuleEnabled) { + return I18n.t('Federation_Matrix_room_description_missing_module'); + } + + return undefined; + }; + renderItem = (item: TAnyMessageModel, previousItem: TAnyMessageModel, highlightedMessage?: string) => { const { room, lastOpen, canAutoTranslate } = this.state; const { @@ -1521,6 +1539,19 @@ class RoomView extends React.Component { ); } + + if ('id' in room && isRoomFederated(room)) { + const description = this.getFederatedFooterDescription(room); + + if (description) { + return ( + + {description} + + ); + } + } + return ; }; @@ -1667,7 +1698,9 @@ const mapStateToProps = (state: IApplicationState) => ({ livechatAllowManualOnHold: state.settings.Livechat_allow_manual_on_hold as boolean, airGappedRestrictionRemainingDays: state.settings.Cloud_Workspace_AirGapped_Restrictions_Remaining_Days, inAppFeedback: state.inAppFeedback, - encryptionEnabled: state.encryption.enabled + encryptionEnabled: state.encryption.enabled, + isFederationEnabled: (state.settings.Federation_Matrix_enabled || state.settings.Federation_Service_Enabled) as boolean, + isFederationModuleEnabled: state.enterpriseModules.includes('federation') as boolean }); export default connect(mapStateToProps)(withDimensions(withTheme(withSafeAreaInsets(withActionSheet(RoomView)))));