Browse Source

Merge remote-tracking branch 'upstream/master'

Giacomo Pacini 1 năm trước cách đây
mục cha
commit
2deefb3c0a
67 tập tin đã thay đổi với 631 bổ sung522 xóa
  1. 1 1
      .github/workflows/analysis.yml
  2. 3 3
      .github/workflows/codeql.yml
  3. 7 0
      .github/workflows/pr-feedback.yml
  4. 1 1
      .github/workflows/scorecard.yml
  5. 31 0
      CHANGELOG.md
  6. 5 5
      app/build.gradle
  7. 1 1
      app/src/main/java/com/nextcloud/talk/activities/BaseActivity.kt
  8. 2 1
      app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.kt
  9. 34 39
      app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
  10. 2 2
      app/src/main/java/com/nextcloud/talk/chat/viewmodels/ChatViewModel.kt
  11. 1 0
      app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt
  12. 8 13
      app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt
  13. 1 1
      app/src/main/java/com/nextcloud/talk/ui/bottom/sheet/ProfileBottomSheet.kt
  14. 2 1
      app/src/main/java/com/nextcloud/talk/ui/dialog/AttachmentDialog.kt
  15. 8 8
      app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt
  16. 26 16
      app/src/main/java/com/nextcloud/talk/ui/dialog/DateTimePickerFragment.kt
  17. 19 12
      app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt
  18. 6 4
      app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt
  19. 2 1
      app/src/main/java/com/nextcloud/talk/ui/dialog/ShowReactionsDialog.kt
  20. 45 35
      app/src/main/java/com/nextcloud/talk/ui/theme/TalkSpecificViewThemeUtils.kt
  21. 5 5
      app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt
  22. 29 10
      app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt
  23. 1 1
      app/src/main/java/com/nextcloud/talk/utils/ConversationUtils.kt
  24. 2 2
      app/src/main/java/com/nextcloud/talk/utils/ParticipantPermissions.kt
  25. 5 2
      app/src/main/java/com/nextcloud/talk/utils/preferences/preferencestorage/DatabaseStorageModule.java
  26. 9 7
      app/src/main/res/layout/activity_contacts.xml
  27. 155 149
      app/src/main/res/layout/dialog_date_time_picker.xml
  28. 4 4
      app/src/main/res/values-ar/strings.xml
  29. 5 4
      app/src/main/res/values-b+en+001/strings.xml
  30. 0 3
      app/src/main/res/values-bg-rBG/strings.xml
  31. 2 3
      app/src/main/res/values-ca/strings.xml
  32. 0 3
      app/src/main/res/values-cs-rCZ/strings.xml
  33. 0 2
      app/src/main/res/values-da/strings.xml
  34. 5 4
      app/src/main/res/values-de/strings.xml
  35. 0 3
      app/src/main/res/values-el/strings.xml
  36. 0 3
      app/src/main/res/values-es-rEC/strings.xml
  37. 0 3
      app/src/main/res/values-es/strings.xml
  38. 0 3
      app/src/main/res/values-eu/strings.xml
  39. 0 3
      app/src/main/res/values-fa/strings.xml
  40. 0 3
      app/src/main/res/values-fi-rFI/strings.xml
  41. 6 3
      app/src/main/res/values-fr/strings.xml
  42. 0 3
      app/src/main/res/values-gl/strings.xml
  43. 0 3
      app/src/main/res/values-hr/strings.xml
  44. 0 3
      app/src/main/res/values-hu-rHU/strings.xml
  45. 0 2
      app/src/main/res/values-is/strings.xml
  46. 0 3
      app/src/main/res/values-it/strings.xml
  47. 0 3
      app/src/main/res/values-ja-rJP/strings.xml
  48. 0 3
      app/src/main/res/values-ko/strings.xml
  49. 0 2
      app/src/main/res/values-lt-rLT/strings.xml
  50. 5 4
      app/src/main/res/values-nb-rNO/strings.xml
  51. 0 3
      app/src/main/res/values-nl/strings.xml
  52. 0 3
      app/src/main/res/values-pl/strings.xml
  53. 56 3
      app/src/main/res/values-pt-rBR/strings.xml
  54. 2 3
      app/src/main/res/values-ru/strings.xml
  55. 0 3
      app/src/main/res/values-sc/strings.xml
  56. 17 3
      app/src/main/res/values-sk-rSK/strings.xml
  57. 0 3
      app/src/main/res/values-sl/strings.xml
  58. 4 3
      app/src/main/res/values-sr/strings.xml
  59. 1 2
      app/src/main/res/values-sv/strings.xml
  60. 7 3
      app/src/main/res/values-tr/strings.xml
  61. 0 3
      app/src/main/res/values-uk/strings.xml
  62. 0 3
      app/src/main/res/values-zh-rCN/strings.xml
  63. 4 3
      app/src/main/res/values-zh-rHK/strings.xml
  64. 5 4
      app/src/main/res/values-zh-rTW/strings.xml
  65. 2 1
      app/src/main/res/values/strings.xml
  66. 1 1
      build.gradle
  67. 94 88
      gradle/verification-metadata.xml

+ 1 - 1
.github/workflows/analysis.yml

@@ -49,7 +49,7 @@ jobs:
                     repository: ${{ steps.get-vars.outputs.repo }}
                     repository: ${{ steps.get-vars.outputs.repo }}
                     ref: ${{ steps.get-vars.outputs.branch }}
                     ref: ${{ steps.get-vars.outputs.branch }}
             -   name: Set up JDK 17
             -   name: Set up JDK 17
-                uses: actions/setup-java@9704b39bf258b59bc04b50fa2dd55e9ed76b47a8 # v4.1.0
+                uses: actions/setup-java@5896cecc08fd8a1fbdfaf517e29b571164b031f7 # v4.2.0
                 with:
                 with:
                     distribution: "temurin"
                     distribution: "temurin"
                     java-version: 17
                     java-version: 17

+ 3 - 3
.github/workflows/codeql.yml

@@ -39,11 +39,11 @@ jobs:
         with:
         with:
           swap-size-gb: 10
           swap-size-gb: 10
       - name: Initialize CodeQL
       - name: Initialize CodeQL
-        uses: github/codeql-action/init@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6
+        uses: github/codeql-action/init@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7
         with:
         with:
           languages: ${{ matrix.language }}
           languages: ${{ matrix.language }}
       - name: Set up JDK 17
       - name: Set up JDK 17
-        uses: actions/setup-java@9704b39bf258b59bc04b50fa2dd55e9ed76b47a8 # v4.1.0
+        uses: actions/setup-java@5896cecc08fd8a1fbdfaf517e29b571164b031f7 # v4.2.0
         with:
         with:
           distribution: "temurin"
           distribution: "temurin"
           java-version: 17
           java-version: 17
@@ -53,4 +53,4 @@ jobs:
           echo "org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError" > "$HOME/.gradle/gradle.properties"
           echo "org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError" > "$HOME/.gradle/gradle.properties"
           ./gradlew assembleDebug
           ./gradlew assembleDebug
       - name: Perform CodeQL Analysis
       - name: Perform CodeQL Analysis
-        uses: github/codeql-action/analyze@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6
+        uses: github/codeql-action/analyze@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7

+ 7 - 0
.github/workflows/pr-feedback.yml

@@ -3,6 +3,13 @@
 # https://github.com/nextcloud/.github
 # https://github.com/nextcloud/.github
 # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
 # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
 
 
+# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+# SPDX-FileCopyrightText: 2023 Marcel Klehr <mklehr@gmx.net>
+# SPDX-FileCopyrightText: 2023 Joas Schilling <213943+nickvergessen@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2023 Daniel Kesselberg <mail@danielkesselberg.de>
+# SPDX-FileCopyrightText: 2023 Florian Steffens <florian.steffens@nextcloud.com>
+# SPDX-License-Identifier: MIT
+
 name: 'Ask for feedback on PRs'
 name: 'Ask for feedback on PRs'
 on:
 on:
   schedule:
   schedule:

+ 1 - 1
.github/workflows/scorecard.yml

@@ -42,6 +42,6 @@ jobs:
 
 
       # Upload the results to GitHub's code scanning dashboard.
       # Upload the results to GitHub's code scanning dashboard.
       - name: "Upload to code-scanning"
       - name: "Upload to code-scanning"
-        uses: github/codeql-action/upload-sarif@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6
+        uses: github/codeql-action/upload-sarif@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7
         with:
         with:
           sarif_file: results.sarif
           sarif_file: results.sarif

+ 31 - 0
CHANGELOG.md

@@ -5,6 +5,37 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 Types of changes can be: Added/Changed/Deprecated/Removed/Fixed/Security
 Types of changes can be: Added/Changed/Deprecated/Removed/Fixed/Security
 
 
+## [18.1.0] - 2024-03-12
+
+### Added
+- Diagnosis screen (in advanced settings. incl. share option to create new issue)
+- Show warnings if notification settings are not set correctly
+- Grouping for upload notifications (@parneet-guraya)
+- Stop media playback when switching output device (@parneet-guraya)
+- Avoid multiple media playbacks (@parneet-guraya)
+- Add "Add to notes" in message options
+- Cursor position is saved in message drafts
+- Share message text to other apps
+- Support Android 14
+- Janus 1.x support
+
+### Fixed
+- App permanently sends speaking data channel message
+- Back button closes app when forwarding a message
+
+Minimum: Android 7.0 Nougat
+
+For a full list, please see https://github.com/nextcloud/talk-android/milestone/79?closed=1
+
+## [18.0.1] - 2023-12-22
+
+### Fixed
+- Voice messages sometimes fail to playback
+
+Minimum: Android 7.0 Nougat
+
+For a full list, please see https://github.com/nextcloud/talk-android/milestone/75?closed=1
+
 ## [18.0.0] - 2023-12-11
 ## [18.0.0] - 2023-12-11
 
 
 ### Added
 ### Added

+ 5 - 5
app/build.gradle

@@ -141,7 +141,7 @@ android {
 }
 }
 
 
 ext {
 ext {
-    androidxCameraVersion = "1.3.1"
+    androidxCameraVersion = "1.3.2"
     coilKtVersion = "2.6.0"
     coilKtVersion = "2.6.0"
     daggerVersion = "2.51"
     daggerVersion = "2.51"
     emojiVersion = "1.4.0"
     emojiVersion = "1.4.0"
@@ -156,7 +156,7 @@ ext {
     roomVersion = "2.6.1"
     roomVersion = "2.6.1"
     workVersion = "2.9.0"
     workVersion = "2.9.0"
     espressoVersion = "3.5.1"
     espressoVersion = "3.5.1"
-    media3_version = "1.2.1"
+    media3_version = "1.3.0"
 }
 }
 
 
 configurations.configureEach {
 configurations.configureEach {
@@ -289,8 +289,8 @@ dependencies {
     implementation 'androidx.core:core-ktx:1.12.0'
     implementation 'androidx.core:core-ktx:1.12.0'
 
 
     testImplementation 'junit:junit:4.13.2'
     testImplementation 'junit:junit:4.13.2'
-    testImplementation 'org.mockito:mockito-core:5.10.0'
-    androidTestImplementation 'org.mockito:mockito-android:5.10.0'
+    testImplementation 'org.mockito:mockito-core:5.11.0'
+    androidTestImplementation 'org.mockito:mockito-android:5.11.0'
     testImplementation 'androidx.arch.core:core-testing:2.2.0'
     testImplementation 'androidx.arch.core:core-testing:2.2.0'
 
 
     androidTestImplementation "androidx.test:core:1.5.0"
     androidTestImplementation "androidx.test:core:1.5.0"
@@ -312,7 +312,7 @@ dependencies {
 
 
      implementation 'androidx.activity:activity-ktx:1.8.2'
      implementation 'androidx.activity:activity-ktx:1.8.2'
 
 
-    implementation 'com.github.nextcloud.android-common:ui:0.17.0'
+    implementation 'com.github.nextcloud.android-common:ui:0.18.0'
 
 
     implementation 'com.github.nextcloud-deps:android-talk-webrtc:121.6167.0'
     implementation 'com.github.nextcloud-deps:android-talk-webrtc:121.6167.0'
 }
 }

+ 1 - 1
app/src/main/java/com/nextcloud/talk/activities/BaseActivity.kt

@@ -105,7 +105,7 @@ open class BaseActivity : AppCompatActivity() {
             disableKeyboardPersonalisedLearning(viewGroup)
             disableKeyboardPersonalisedLearning(viewGroup)
         }
         }
 
 
-        if (appPreferences.isScreenSecured) {
+        if (appPreferences.isScreenSecured || appPreferences.isScreenLocked) {
             window.addFlags(WindowManager.LayoutParams.FLAG_SECURE)
             window.addFlags(WindowManager.LayoutParams.FLAG_SECURE)
         } else {
         } else {
             window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
             window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)

+ 2 - 1
app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.kt

@@ -50,10 +50,11 @@ import com.nextcloud.talk.models.json.conversations.Conversation
 import com.nextcloud.talk.models.json.conversations.Conversation.ConversationType
 import com.nextcloud.talk.models.json.conversations.Conversation.ConversationType
 import com.nextcloud.talk.ui.StatusDrawable
 import com.nextcloud.talk.ui.StatusDrawable
 import com.nextcloud.talk.ui.theme.ViewThemeUtils
 import com.nextcloud.talk.ui.theme.ViewThemeUtils
+import com.nextcloud.talk.utils.CapabilitiesUtil.hasSpreedFeatureCapability
 import com.nextcloud.talk.utils.SpreedFeatures
 import com.nextcloud.talk.utils.SpreedFeatures
 import com.nextcloud.talk.utils.ConversationUtils
 import com.nextcloud.talk.utils.ConversationUtils
 import com.nextcloud.talk.utils.DisplayUtils
 import com.nextcloud.talk.utils.DisplayUtils
-import com.nextcloud.talk.utils.CapabilitiesUtil.hasSpreedFeatureCapability
+
 import eu.davidea.flexibleadapter.FlexibleAdapter
 import eu.davidea.flexibleadapter.FlexibleAdapter
 import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
 import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
 import eu.davidea.flexibleadapter.items.IFilterable
 import eu.davidea.flexibleadapter.items.IFilterable

+ 34 - 39
app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt

@@ -194,7 +194,7 @@ import com.nextcloud.talk.ui.recyclerview.MessageSwipeActions
 import com.nextcloud.talk.ui.recyclerview.MessageSwipeCallback
 import com.nextcloud.talk.ui.recyclerview.MessageSwipeCallback
 import com.nextcloud.talk.utils.ApiUtils
 import com.nextcloud.talk.utils.ApiUtils
 import com.nextcloud.talk.utils.AudioUtils
 import com.nextcloud.talk.utils.AudioUtils
-import com.nextcloud.talk.utils.SpreedFeatures
+import com.nextcloud.talk.utils.CapabilitiesUtil
 import com.nextcloud.talk.utils.ContactUtils
 import com.nextcloud.talk.utils.ContactUtils
 import com.nextcloud.talk.utils.ConversationUtils
 import com.nextcloud.talk.utils.ConversationUtils
 import com.nextcloud.talk.utils.DateConstants
 import com.nextcloud.talk.utils.DateConstants
@@ -207,6 +207,7 @@ import com.nextcloud.talk.utils.MagicCharPolicy
 import com.nextcloud.talk.utils.Mimetype
 import com.nextcloud.talk.utils.Mimetype
 import com.nextcloud.talk.utils.NotificationUtils
 import com.nextcloud.talk.utils.NotificationUtils
 import com.nextcloud.talk.utils.ParticipantPermissions
 import com.nextcloud.talk.utils.ParticipantPermissions
+import com.nextcloud.talk.utils.SpreedFeatures
 import com.nextcloud.talk.utils.UriUtils
 import com.nextcloud.talk.utils.UriUtils
 import com.nextcloud.talk.utils.VibrationUtils
 import com.nextcloud.talk.utils.VibrationUtils
 import com.nextcloud.talk.utils.bundle.BundleKeys
 import com.nextcloud.talk.utils.bundle.BundleKeys
@@ -221,7 +222,6 @@ import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_ID
 import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_TOKEN
 import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_TOKEN
 import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_START_CALL_AFTER_ROOM_SWITCH
 import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_START_CALL_AFTER_ROOM_SWITCH
 import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_SWITCH_TO_ROOM
 import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_SWITCH_TO_ROOM
-import com.nextcloud.talk.utils.CapabilitiesUtil
 import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew
 import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew
 import com.nextcloud.talk.utils.permissions.PlatformPermissionUtil
 import com.nextcloud.talk.utils.permissions.PlatformPermissionUtil
 import com.nextcloud.talk.utils.rx.DisposableSet
 import com.nextcloud.talk.utils.rx.DisposableSet
@@ -643,6 +643,7 @@ class ChatActivity :
                     spreedCapabilities = state.spreedCapabilities
                     spreedCapabilities = state.spreedCapabilities
                     chatApiVersion = ApiUtils.getChatApiVersion(spreedCapabilities, intArrayOf(1))
                     chatApiVersion = ApiUtils.getChatApiVersion(spreedCapabilities, intArrayOf(1))
 
 
+                    invalidateOptionsMenu()
                     initMessageInputView()
                     initMessageInputView()
 
 
                     if (conversationUser?.userId != "?" &&
                     if (conversationUser?.userId != "?" &&
@@ -874,11 +875,11 @@ class ChatActivity :
                     when (state.response.code()) {
                     when (state.response.code()) {
                         HTTP_CODE_OK -> {
                         HTTP_CODE_OK -> {
                             Log.d(TAG, "lookIntoFuture: ${state.lookIntoFuture}")
                             Log.d(TAG, "lookIntoFuture: ${state.lookIntoFuture}")
+                            val chatOverall = state.response.body() as ChatOverall?
+                            var chatMessageList = chatOverall?.ocs!!.data!!
 
 
                             processHeaderChatLastGiven(state.response, state.lookIntoFuture)
                             processHeaderChatLastGiven(state.response, state.lookIntoFuture)
 
 
-                            val chatOverall = state.response.body() as ChatOverall?
-                            var chatMessageList = chatOverall?.ocs!!.data!!
                             chatMessageList = handleSystemMessages(chatMessageList)
                             chatMessageList = handleSystemMessages(chatMessageList)
 
 
                             if (chatMessageList.size == 0) {
                             if (chatMessageList.size == 0) {
@@ -903,15 +904,7 @@ class ChatActivity :
                                 adapter?.notifyDataSetChanged()
                                 adapter?.notifyDataSetChanged()
                             }
                             }
 
 
-                            var lastAdapterId = 0
-                            if (adapter?.items?.size != 0) {
-                                val item = adapter?.items?.get(0)?.item
-                                if (item != null) {
-                                    lastAdapterId = (item as ChatMessage).jsonMessageId
-                                } else {
-                                    lastAdapterId = 0
-                                }
-                            }
+                            var lastAdapterId = getLastAdapterId()
 
 
                             if (
                             if (
                                 state.lookIntoFuture &&
                                 state.lookIntoFuture &&
@@ -940,24 +933,24 @@ class ChatActivity :
                         }
                         }
 
 
                         HTTP_CODE_NOT_MODIFIED -> {
                         HTTP_CODE_NOT_MODIFIED -> {
-                            processHeaderChatLastGiven(state.response, state.lookIntoFuture)
                             chatViewModel.refreshChatParams(
                             chatViewModel.refreshChatParams(
                                 setupFieldsForPullChatMessages(
                                 setupFieldsForPullChatMessages(
-                                    state.lookIntoFuture,
+                                    true,
                                     globalLastKnownFutureMessageId,
                                     globalLastKnownFutureMessageId,
                                     true
                                     true
-                                )
+                                ),
+                                true
                             )
                             )
                         }
                         }
 
 
                         HTTP_CODE_PRECONDITION_FAILED -> {
                         HTTP_CODE_PRECONDITION_FAILED -> {
-                            processHeaderChatLastGiven(state.response, state.lookIntoFuture)
                             chatViewModel.refreshChatParams(
                             chatViewModel.refreshChatParams(
                                 setupFieldsForPullChatMessages(
                                 setupFieldsForPullChatMessages(
-                                    state.lookIntoFuture,
+                                    true,
                                     globalLastKnownFutureMessageId,
                                     globalLastKnownFutureMessageId,
                                     true
                                     true
-                                )
+                                ),
+                                true
                             )
                             )
                         }
                         }
 
 
@@ -1268,6 +1261,19 @@ class ChatActivity :
         )
         )
     }
     }
 
 
+    private fun getLastAdapterId(): Int {
+        var lastId = 0
+        if (adapter?.items?.size != 0) {
+            val item = adapter?.items?.get(0)?.item
+            if (item != null) {
+                lastId = (item as ChatMessage).jsonMessageId
+            } else {
+                lastId = 0
+            }
+        }
+        return lastId
+    }
+
     private fun setEditUI() {
     private fun setEditUI() {
         binding.messageInputView.messageSendButton.visibility = View.GONE
         binding.messageInputView.messageSendButton.visibility = View.GONE
         binding.messageInputView.recordAudioButton.visibility = View.GONE
         binding.messageInputView.recordAudioButton.visibility = View.GONE
@@ -3752,8 +3758,7 @@ class ChatActivity :
     }
     }
 
 
     private fun processMessagesFromTheFuture(chatMessageList: List<ChatMessage>) {
     private fun processMessagesFromTheFuture(chatMessageList: List<ChatMessage>) {
-        val shouldAddNewMessagesNotice = (adapter?.itemCount ?: 0) > 0 && chatMessageList.isNotEmpty()
-
+        val shouldAddNewMessagesNotice = layoutManager?.findFirstVisibleItemPosition()!! > 0
         if (shouldAddNewMessagesNotice) {
         if (shouldAddNewMessagesNotice) {
             val unreadChatMessage = ChatMessage()
             val unreadChatMessage = ChatMessage()
             unreadChatMessage.jsonMessageId = -1
             unreadChatMessage.jsonMessageId = -1
@@ -3764,10 +3769,6 @@ class ChatActivity :
         }
         }
 
 
         addMessagesToAdapter(shouldAddNewMessagesNotice, chatMessageList)
         addMessagesToAdapter(shouldAddNewMessagesNotice, chatMessageList)
-
-        if (shouldAddNewMessagesNotice && adapter != null) {
-            scrollToFirstUnreadMessage()
-        }
     }
     }
 
 
     private fun processMessagesNotFromTheFuture(chatMessageList: List<ChatMessage>) {
     private fun processMessagesNotFromTheFuture(chatMessageList: List<ChatMessage>) {
@@ -3842,7 +3843,7 @@ class ChatActivity :
     }
     }
 
 
     private fun modifyMessageCount(shouldAddNewMessagesNotice: Boolean, shouldScroll: Boolean) {
     private fun modifyMessageCount(shouldAddNewMessagesNotice: Boolean, shouldScroll: Boolean) {
-        if (!shouldAddNewMessagesNotice && !shouldScroll) {
+        if (shouldAddNewMessagesNotice) {
             binding.popupBubbleView.isShown.let {
             binding.popupBubbleView.isShown.let {
                 if (it) {
                 if (it) {
                     newMessagesCount++
                     newMessagesCount++
@@ -4022,17 +4023,16 @@ class ChatActivity :
             val searchItem = menu.findItem(R.id.conversation_search)
             val searchItem = menu.findItem(R.id.conversation_search)
             searchItem.isVisible = CapabilitiesUtil.isUnifiedSearchAvailable(spreedCapabilities)
             searchItem.isVisible = CapabilitiesUtil.isUnifiedSearchAvailable(spreedCapabilities)
 
 
-            if (CapabilitiesUtil.hasSpreedFeatureCapability(
-                    spreedCapabilities,
-                    SpreedFeatures.RICH_OBJECT_LIST_MEDIA
-                )
+            if (currentConversation!!.remoteServer != null ||
+                !CapabilitiesUtil.isSharedItemsAvailable(spreedCapabilities)
             ) {
             ) {
-                conversationSharedItemsItem = menu.findItem(R.id.shared_items)
-            } else {
                 menu.removeItem(R.id.shared_items)
                 menu.removeItem(R.id.shared_items)
             }
             }
 
 
-            if (CapabilitiesUtil.isAbleToCall(spreedCapabilities)) {
+            if (currentConversation!!.remoteServer != null) {
+                menu.removeItem(R.id.conversation_video_call)
+                menu.removeItem(R.id.conversation_voice_call)
+            } else if (CapabilitiesUtil.isAbleToCall(spreedCapabilities)) {
                 conversationVoiceCallMenuItem = menu.findItem(R.id.conversation_voice_call)
                 conversationVoiceCallMenuItem = menu.findItem(R.id.conversation_voice_call)
                 conversationVideoMenuItem = menu.findItem(R.id.conversation_video_call)
                 conversationVideoMenuItem = menu.findItem(R.id.conversation_video_call)
 
 
@@ -4358,12 +4358,7 @@ class ChatActivity :
 
 
         val chatApiVersion = ApiUtils.getChatApiVersion(spreedCapabilities, intArrayOf(ApiUtils.API_V1, 1))
         val chatApiVersion = ApiUtils.getChatApiVersion(spreedCapabilities, intArrayOf(ApiUtils.API_V1, 1))
 
 
-        val newFragment: DialogFragment = DateTimePickerFragment.newInstance(
-            roomToken,
-            message!!.id,
-            chatViewModel,
-            chatApiVersion
-        )
+        val newFragment: DialogFragment = DateTimePickerFragment.newInstance(roomToken, message!!.id, chatApiVersion)
         newFragment.show(supportFragmentManager, DateTimePickerFragment.TAG)
         newFragment.show(supportFragmentManager, DateTimePickerFragment.TAG)
     }
     }
 
 

+ 2 - 2
app/src/main/java/com/nextcloud/talk/chat/viewmodels/ChatViewModel.kt

@@ -178,8 +178,8 @@ class ChatViewModel @Inject constructor(
     val editMessageViewState: LiveData<ViewState>
     val editMessageViewState: LiveData<ViewState>
         get() = _editMessageViewState
         get() = _editMessageViewState
 
 
-    fun refreshChatParams(pullChatMessagesFieldMap: HashMap<String, Int>) {
-        if (pullChatMessagesFieldMap != _getFieldMapForChat.value) {
+    fun refreshChatParams(pullChatMessagesFieldMap: HashMap<String, Int>, overrideRefresh: Boolean = false) {
+        if (pullChatMessagesFieldMap != _getFieldMapForChat.value || overrideRefresh) {
             _getFieldMapForChat.postValue(pullChatMessagesFieldMap)
             _getFieldMapForChat.postValue(pullChatMessagesFieldMap)
             Log.d(TAG, "FieldMap Refreshed with $pullChatMessagesFieldMap vs ${_getFieldMapForChat.value}")
             Log.d(TAG, "FieldMap Refreshed with $pullChatMessagesFieldMap vs ${_getFieldMapForChat.value}")
         }
         }

+ 1 - 0
app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt

@@ -1198,6 +1198,7 @@ class ConversationInfoActivity :
                     cornerRadius(res = R.dimen.corner_radius)
                     cornerRadius(res = R.dimen.corner_radius)
 
 
                     title(text = participant.displayName)
                     title(text = participant.displayName)
+                    viewThemeUtils.material.colorBottomSheetBackground(this.view)
                     listItemsWithImage(items = items) { _, index, _ ->
                     listItemsWithImage(items = items) { _, index, _ ->
                         if (index == 0) {
                         if (index == 0) {
                             removeAttendeeFromConversation(apiVersion, participant)
                             removeAttendeeFromConversation(apiVersion, participant)

+ 8 - 13
app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt

@@ -322,7 +322,7 @@ class ConversationsListActivity :
                 }
                 }
 
 
                 is ConversationsListViewModel.GetFederationInvitationsErrorState -> {
                 is ConversationsListViewModel.GetFederationInvitationsErrorState -> {
-                    Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
+                    Snackbar.make(binding.root, R.string.get_invitations_error, Snackbar.LENGTH_LONG).show()
                 }
                 }
 
 
                 else -> {}
                 else -> {}
@@ -754,15 +754,13 @@ class ConversationsListActivity :
     }
     }
 
 
     private fun fetchPendingInvitations() {
     private fun fetchPendingInvitations() {
-        binding.conversationListHintInclude.conversationListHintLayout.setOnClickListener {
-            val intent = Intent(this, InvitationsActivity::class.java)
-            startActivity(intent)
+        if (hasSpreedFeatureCapability(currentUser!!.capabilities!!.spreedCapability!!, SpreedFeatures.FEDERATION_V1)) {
+            binding.conversationListHintInclude.conversationListHintLayout.setOnClickListener {
+                val intent = Intent(this, InvitationsActivity::class.java)
+                startActivity(intent)
+            }
+            conversationsListViewModel.getFederationInvitations()
         }
         }
-
-        // TODO create mvvm, fetch pending invitations for all users and store in database for users, if current user
-        //  has invitation -> show hint, if one or more other users have invitations -> show badge
-
-        conversationsListViewModel.getFederationInvitations()
     }
     }
 
 
     private fun initOverallLayout(isConversationListNotEmpty: Boolean) {
     private fun initOverallLayout(isConversationListNotEmpty: Boolean) {
@@ -978,10 +976,7 @@ class ConversationsListActivity :
         updateFilterConversationButtonColor()
         updateFilterConversationButtonColor()
 
 
         binding.filterConversationsButton.setOnClickListener {
         binding.filterConversationsButton.setOnClickListener {
-            val newFragment: DialogFragment = FilterConversationFragment.newInstance(
-                filterState,
-                this
-            )
+            val newFragment = FilterConversationFragment.newInstance(filterState)
             newFragment.show(supportFragmentManager, FilterConversationFragment.TAG)
             newFragment.show(supportFragmentManager, FilterConversationFragment.TAG)
         }
         }
 
 

+ 1 - 1
app/src/main/java/com/nextcloud/talk/ui/bottom/sheet/ProfileBottomSheet.kt

@@ -90,7 +90,7 @@ class ProfileBottomSheet(val ncApi: NcApi, val userModel: User, val viewThemeUti
 
 
         MaterialDialog(context, BottomSheet(LayoutMode.WRAP_CONTENT)).show {
         MaterialDialog(context, BottomSheet(LayoutMode.WRAP_CONTENT)).show {
             cornerRadius(res = R.dimen.corner_radius)
             cornerRadius(res = R.dimen.corner_radius)
-            viewThemeUtils.platform.themeDialog(this.view)
+            viewThemeUtils.material.colorBottomSheetBackground(this.view)
 
 
             title(text = displayName)
             title(text = displayName)
             listItemsWithImage(items = items) { _, index, _ ->
             listItemsWithImage(items = items) { _, index, _ ->

+ 2 - 1
app/src/main/java/com/nextcloud/talk/ui/dialog/AttachmentDialog.kt

@@ -55,7 +55,8 @@ class AttachmentDialog(val activity: Activity, var chatActivity: ChatActivity) :
         setContentView(dialogAttachmentBinding.root)
         setContentView(dialogAttachmentBinding.root)
         window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
         window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
 
 
-        viewThemeUtils.platform.themeDialog(dialogAttachmentBinding.root)
+        viewThemeUtils.material.colorBottomSheetBackground(dialogAttachmentBinding.root)
+        viewThemeUtils.material.colorBottomSheetDragHandle(dialogAttachmentBinding.bottomSheetDragHandle)
         initItemsStrings()
         initItemsStrings()
         initItemsVisibility()
         initItemsVisibility()
         initItemsClickListeners()
         initItemsClickListeners()

+ 8 - 8
app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt

@@ -47,6 +47,7 @@ import com.nextcloud.talk.utils.ApiUtils
 import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID
 import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID
 import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_TOKEN
 import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_TOKEN
 import com.nextcloud.talk.utils.CapabilitiesUtil
 import com.nextcloud.talk.utils.CapabilitiesUtil
+import com.nextcloud.talk.utils.SpreedFeatures
 import io.reactivex.Observer
 import io.reactivex.Observer
 import io.reactivex.android.schedulers.AndroidSchedulers
 import io.reactivex.android.schedulers.AndroidSchedulers
 import io.reactivex.disposables.Disposable
 import io.reactivex.disposables.Disposable
@@ -81,7 +82,8 @@ class ConversationsListBottomDialog(
         setContentView(binding.root)
         setContentView(binding.root)
         window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
         window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
 
 
-        viewThemeUtils.platform.themeDialog(binding.root)
+        viewThemeUtils.material.colorBottomSheetBackground(binding.root)
+        viewThemeUtils.material.colorBottomSheetDragHandle(binding.bottomSheetDragHandle)
         initHeaderDescription()
         initHeaderDescription()
         initItemsVisibility()
         initItemsVisibility()
         initClickListeners()
         initClickListeners()
@@ -107,7 +109,7 @@ class ConversationsListBottomDialog(
     private fun initItemsVisibility() {
     private fun initItemsVisibility() {
         val hasFavoritesCapability = CapabilitiesUtil.hasSpreedFeatureCapability(
         val hasFavoritesCapability = CapabilitiesUtil.hasSpreedFeatureCapability(
             currentUser.capabilities?.spreedCapability!!,
             currentUser.capabilities?.spreedCapability!!,
-            "favorites"
+            SpreedFeatures.FAVORITES
         )
         )
         val canModerate = conversation.canModerate(currentUser)
         val canModerate = conversation.canModerate(currentUser)
 
 
@@ -120,17 +122,15 @@ class ConversationsListBottomDialog(
 
 
         binding.conversationMarkAsRead.visibility = setVisibleIf(
         binding.conversationMarkAsRead.visibility = setVisibleIf(
             conversation.unreadMessages > 0 && CapabilitiesUtil.hasSpreedFeatureCapability(
             conversation.unreadMessages > 0 && CapabilitiesUtil.hasSpreedFeatureCapability(
-                currentUser
-                    .capabilities?.spreedCapability!!,
-                "chat-read-marker"
+                currentUser.capabilities?.spreedCapability!!,
+                SpreedFeatures.CHAT_READ_MARKER
             )
             )
         )
         )
 
 
         binding.conversationMarkAsUnread.visibility = setVisibleIf(
         binding.conversationMarkAsUnread.visibility = setVisibleIf(
             conversation.unreadMessages <= 0 && CapabilitiesUtil.hasSpreedFeatureCapability(
             conversation.unreadMessages <= 0 && CapabilitiesUtil.hasSpreedFeatureCapability(
-                currentUser
-                    .capabilities?.spreedCapability!!,
-                "chat-unread"
+                currentUser.capabilities?.spreedCapability!!,
+                SpreedFeatures.CHAT_UNREAD
             )
             )
         )
         )
 
 

+ 26 - 16
app/src/main/java/com/nextcloud/talk/ui/dialog/DateTimePickerFragment.kt

@@ -37,6 +37,7 @@ import com.google.android.material.timepicker.TimeFormat
 import com.nextcloud.android.common.ui.theme.utils.ColorRole
 import com.nextcloud.android.common.ui.theme.utils.ColorRole
 import com.nextcloud.talk.R
 import com.nextcloud.talk.R
 import com.nextcloud.talk.application.NextcloudTalkApplication
 import com.nextcloud.talk.application.NextcloudTalkApplication
+import com.nextcloud.talk.chat.ChatActivity
 import com.nextcloud.talk.chat.viewmodels.ChatViewModel
 import com.nextcloud.talk.chat.viewmodels.ChatViewModel
 import com.nextcloud.talk.databinding.DialogDateTimePickerBinding
 import com.nextcloud.talk.databinding.DialogDateTimePickerBinding
 import com.nextcloud.talk.ui.theme.ViewThemeUtils
 import com.nextcloud.talk.ui.theme.ViewThemeUtils
@@ -47,18 +48,15 @@ import javax.inject.Inject
 
 
 @Suppress("TooManyFunctions")
 @Suppress("TooManyFunctions")
 @AutoInjector(NextcloudTalkApplication::class)
 @AutoInjector(NextcloudTalkApplication::class)
-class DateTimePickerFragment(
-    token: String,
-    id: String,
-    chatViewModel: ChatViewModel,
-    private val chatApiVersion: Int
-) : DialogFragment() {
+class DateTimePickerFragment : DialogFragment() {
+
     lateinit var binding: DialogDateTimePickerBinding
     lateinit var binding: DialogDateTimePickerBinding
     private var dialogView: View? = null
     private var dialogView: View? = null
-    private var viewModel = chatViewModel
+    private lateinit var viewModel: ChatViewModel
     private var currentTimeStamp: Long? = null
     private var currentTimeStamp: Long? = null
-    private var roomToken = token
-    private var messageId = id
+    private lateinit var roomToken: String
+    private lateinit var messageId: String
+    private var chatApiVersion: Int = -1
     private var laterTodayTimeStamp = 0L
     private var laterTodayTimeStamp = 0L
     private var tomorrowTimeStamp = 0L
     private var tomorrowTimeStamp = 0L
     private var weekendTimeStamp = 0L
     private var weekendTimeStamp = 0L
@@ -73,6 +71,12 @@ class DateTimePickerFragment(
     override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
     override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
         binding = DialogDateTimePickerBinding.inflate(LayoutInflater.from(context))
         binding = DialogDateTimePickerBinding.inflate(LayoutInflater.from(context))
         dialogView = binding.root
         dialogView = binding.root
+        viewModel = (requireActivity() as ChatActivity).chatViewModel
+        arguments?.let {
+            roomToken = it.getString(TOKEN_ARG, "")
+            messageId = it.getString(ID_ARG, "")
+            chatApiVersion = it.getInt(CHAT_API_VERSION_ARG)
+        }
         return MaterialAlertDialogBuilder(requireContext()).setView(dialogView).create()
         return MaterialAlertDialogBuilder(requireContext()).setView(dialogView).create()
     }
     }
 
 
@@ -304,14 +308,20 @@ class DateTimePickerFragment(
         private const val ONE_SEC = 1000
         private const val ONE_SEC = 1000
         private const val HOUR_EIGHT_AM = 8
         private const val HOUR_EIGHT_AM = 8
         private const val HOUR_SIX_PM = 18
         private const val HOUR_SIX_PM = 18
+        private const val TOKEN_ARG = "TOKEN_ARG"
+        private const val ID_ARG = "ID_ARG"
+        private const val CHAT_API_VERSION_ARG = "CHAT_API_VERSION_ARG"
 
 
         @JvmStatic
         @JvmStatic
-        fun newInstance(token: String, id: String, chatViewModel: ChatViewModel, chatApiVersion: Int) =
-            DateTimePickerFragment(
-                token,
-                id,
-                chatViewModel,
-                chatApiVersion
-            )
+        fun newInstance(token: String, id: String, chatApiVersion: Int): DateTimePickerFragment {
+            val args = Bundle()
+            args.putString(TOKEN_ARG, token)
+            args.putString(ID_ARG, id)
+            args.putInt(CHAT_API_VERSION_ARG, chatApiVersion)
+
+            val dateTimePickerFragment = DateTimePickerFragment()
+            dateTimePickerFragment.arguments = args
+            return dateTimePickerFragment
+        }
     }
     }
 }
 }

+ 19 - 12
app/src/main/java/com/nextcloud/talk/ui/dialog/FilterConversationFragment.kt

@@ -20,6 +20,7 @@
 package com.nextcloud.talk.ui.dialog
 package com.nextcloud.talk.ui.dialog
 
 
 import android.app.Dialog
 import android.app.Dialog
+import android.os.Build
 import android.os.Bundle
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.LayoutInflater
 import android.view.View
 import android.view.View
@@ -38,14 +39,10 @@ import com.nextcloud.talk.utils.UserIdUtils
 import javax.inject.Inject
 import javax.inject.Inject
 
 
 @AutoInjector(NextcloudTalkApplication::class)
 @AutoInjector(NextcloudTalkApplication::class)
-class FilterConversationFragment(
-    savedFilterState: MutableMap<String, Boolean>,
-    conversationsListActivity: ConversationsListActivity
-) : DialogFragment() {
+class FilterConversationFragment : DialogFragment() {
     lateinit var binding: DialogFilterConversationBinding
     lateinit var binding: DialogFilterConversationBinding
     private var dialogView: View? = null
     private var dialogView: View? = null
-    private var filterState = savedFilterState
-    private var conversationsList = conversationsListActivity
+    private lateinit var filterState: HashMap<String, Boolean>
 
 
     @Inject
     @Inject
     lateinit var userManager: UserManager
     lateinit var userManager: UserManager
@@ -58,7 +55,11 @@ class FilterConversationFragment(
     override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
     override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
         binding = DialogFilterConversationBinding.inflate(LayoutInflater.from(context))
         binding = DialogFilterConversationBinding.inflate(LayoutInflater.from(context))
         dialogView = binding.root
         dialogView = binding.root
-
+        filterState = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+            arguments?.getSerializable(FILTER_STATE_ARG, HashMap::class.java) as HashMap<String, Boolean>
+        } else {
+            arguments?.getSerializable(FILTER_STATE_ARG) as HashMap<String, Boolean>
+        }
         return MaterialAlertDialogBuilder(requireContext()).setView(dialogView).create()
         return MaterialAlertDialogBuilder(requireContext()).setView(dialogView).create()
     }
     }
 
 
@@ -120,15 +121,21 @@ class FilterConversationFragment(
         arbitraryStorageManager.storeStorageSetting(accountId, MENTION, mentionValue.toString(), "")
         arbitraryStorageManager.storeStorageSetting(accountId, MENTION, mentionValue.toString(), "")
         arbitraryStorageManager.storeStorageSetting(accountId, UNREAD, unreadValue.toString(), "")
         arbitraryStorageManager.storeStorageSetting(accountId, UNREAD, unreadValue.toString(), "")
 
 
-        conversationsList.filterConversation()
+        (requireActivity() as ConversationsListActivity).filterConversation()
     }
     }
 
 
     companion object {
     companion object {
+        private const val FILTER_STATE_ARG = "FILTER_STATE_ARG"
+
         @JvmStatic
         @JvmStatic
-        fun newInstance(
-            savedFilterState: MutableMap<String, Boolean>,
-            conversationsListActivity: ConversationsListActivity
-        ) = FilterConversationFragment(savedFilterState, conversationsListActivity)
+        fun newInstance(savedFilterState: MutableMap<String, Boolean>): FilterConversationFragment {
+            val filterConversationFragment = FilterConversationFragment()
+            val args = Bundle()
+            args.putSerializable(FILTER_STATE_ARG, HashMap(savedFilterState))
+            filterConversationFragment.arguments = args
+            return filterConversationFragment
+        }
+
         val TAG: String = FilterConversationFragment::class.java.simpleName
         val TAG: String = FilterConversationFragment::class.java.simpleName
         const val MENTION: String = "mention"
         const val MENTION: String = "mention"
         const val UNREAD: String = "unread"
         const val UNREAD: String = "unread"

+ 6 - 4
app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt

@@ -106,7 +106,7 @@ class MessageActionsDialog(
 
 
     private val isMessageEditable = CapabilitiesUtil.hasSpreedFeatureCapability(
     private val isMessageEditable = CapabilitiesUtil.hasSpreedFeatureCapability(
         spreedCapabilities,
         spreedCapabilities,
-        "edit-messages"
+        SpreedFeatures.EDIT_MESSAGES
     ) && messageHasRegularText && !isOlderThanTwentyFourHours && isUserAllowedToEdit
     ) && messageHasRegularText && !isOlderThanTwentyFourHours && isUserAllowedToEdit
 
 
     override fun onCreate(savedInstanceState: Bundle?) {
     override fun onCreate(savedInstanceState: Bundle?) {
@@ -117,7 +117,8 @@ class MessageActionsDialog(
         setContentView(dialogMessageActionsBinding.root)
         setContentView(dialogMessageActionsBinding.root)
         window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
         window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
 
 
-        viewThemeUtils.platform.themeDialog(dialogMessageActionsBinding.root)
+        viewThemeUtils.material.colorBottomSheetBackground(dialogMessageActionsBinding.root)
+        viewThemeUtils.material.colorBottomSheetDragHandle(dialogMessageActionsBinding.bottomSheetDragHandle)
         initEmojiBar(hasChatPermission)
         initEmojiBar(hasChatPermission)
         initMenuItemCopy(!message.isDeleted)
         initMenuItemCopy(!message.isDeleted)
         val apiVersion = ApiUtils.getConversationApiVersion(user!!, intArrayOf(ApiUtils.API_V4, ApiUtils.API_V3, 1))
         val apiVersion = ApiUtils.getConversationApiVersion(user!!, intArrayOf(ApiUtils.API_V4, ApiUtils.API_V3, 1))
@@ -165,8 +166,9 @@ class MessageActionsDialog(
                 !(message.isDeletedCommentMessage || message.isDeleted)
                 !(message.isDeletedCommentMessage || message.isDeleted)
         )
         )
         initMenuRemindMessage(
         initMenuRemindMessage(
-            !message.isDeleted && CapabilitiesUtil.hasSpreedFeatureCapability
-                (spreedCapabilities, "remind-me-later")
+            !message.isDeleted &&
+                hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.REMIND_ME_LATER) &&
+                currentConversation!!.remoteServer.isNullOrEmpty()
         )
         )
         initMenuMarkAsUnread(
         initMenuMarkAsUnread(
             message.previousMessageId > NO_PREVIOUS_MESSAGE_ID &&
             message.previousMessageId > NO_PREVIOUS_MESSAGE_ID &&

+ 2 - 1
app/src/main/java/com/nextcloud/talk/ui/dialog/ShowReactionsDialog.kt

@@ -81,7 +81,8 @@ class ShowReactionsDialog(
         binding = DialogMessageReactionsBinding.inflate(layoutInflater)
         binding = DialogMessageReactionsBinding.inflate(layoutInflater)
         setContentView(binding.root)
         setContentView(binding.root)
         window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
         window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
-        viewThemeUtils.platform.themeDialog(binding.root)
+        viewThemeUtils.material.colorBottomSheetBackground(binding.root)
+        viewThemeUtils.material.colorBottomSheetDragHandle(binding.bottomSheetDragHandle)
         adapter = ReactionsAdapter(this, user)
         adapter = ReactionsAdapter(this, user)
         binding.reactionsList.adapter = adapter
         binding.reactionsList.adapter = adapter
         binding.reactionsList.layoutManager = LinearLayoutManager(context)
         binding.reactionsList.layoutManager = LinearLayoutManager(context)

+ 45 - 35
app/src/main/java/com/nextcloud/talk/ui/theme/TalkSpecificViewThemeUtils.kt

@@ -64,6 +64,7 @@ import com.nextcloud.talk.utils.DrawableUtils
 import com.nextcloud.talk.utils.message.MessageUtils
 import com.nextcloud.talk.utils.message.MessageUtils
 import com.vanniktech.emoji.EmojiTextView
 import com.vanniktech.emoji.EmojiTextView
 import com.wooplr.spotlight.SpotlightView
 import com.wooplr.spotlight.SpotlightView
+import dynamiccolor.MaterialDynamicColors
 import eu.davidea.flexibleadapter.utils.FlexibleUtils
 import eu.davidea.flexibleadapter.utils.FlexibleUtils
 import javax.inject.Inject
 import javax.inject.Inject
 import kotlin.math.roundToInt
 import kotlin.math.roundToInt
@@ -78,6 +79,7 @@ class TalkSpecificViewThemeUtils @Inject constructor(
     private val appcompat: AndroidXViewThemeUtils
     private val appcompat: AndroidXViewThemeUtils
 ) :
 ) :
     ViewThemeUtilsBase(schemes) {
     ViewThemeUtilsBase(schemes) {
+    private val dynamicColor = MaterialDynamicColors()
     fun themeIncomingMessageBubble(bubble: View, grouped: Boolean, deleted: Boolean) {
     fun themeIncomingMessageBubble(bubble: View, grouped: Boolean, deleted: Boolean) {
         val resources = bubble.resources
         val resources = bubble.resources
 
 
@@ -104,9 +106,9 @@ class TalkSpecificViewThemeUtils @Inject constructor(
     fun themeOutgoingMessageBubble(bubble: View, grouped: Boolean, deleted: Boolean) {
     fun themeOutgoingMessageBubble(bubble: View, grouped: Boolean, deleted: Boolean) {
         withScheme(bubble) { scheme ->
         withScheme(bubble) { scheme ->
             val bgBubbleColor = if (deleted) {
             val bgBubbleColor = if (deleted) {
-                ColorUtils.setAlphaComponent(scheme.surfaceVariant, HALF_ALPHA_INT)
+                ColorUtils.setAlphaComponent(dynamicColor.surfaceVariant().getArgb(scheme), HALF_ALPHA_INT)
             } else {
             } else {
-                scheme.surfaceVariant
+                dynamicColor.surfaceVariant().getArgb(scheme)
             }
             }
 
 
             val layout = if (grouped) {
             val layout = if (grouped) {
@@ -126,31 +128,31 @@ class TalkSpecificViewThemeUtils @Inject constructor(
 
 
     fun colorOutgoingQuoteText(textView: TextView) {
     fun colorOutgoingQuoteText(textView: TextView) {
         withScheme(textView) { scheme ->
         withScheme(textView) { scheme ->
-            textView.setTextColor(scheme.onSurfaceVariant)
+            textView.setTextColor(dynamicColor.onSurfaceVariant().getArgb(scheme))
         }
         }
     }
     }
 
 
     fun colorOutgoingQuoteAuthorText(textView: TextView) {
     fun colorOutgoingQuoteAuthorText(textView: TextView) {
         withScheme(textView) { scheme ->
         withScheme(textView) { scheme ->
-            ColorUtils.setAlphaComponent(scheme.onSurfaceVariant, ALPHA_80_INT)
+            ColorUtils.setAlphaComponent(dynamicColor.onSurfaceVariant().getArgb(scheme), ALPHA_80_INT)
         }
         }
     }
     }
 
 
     fun colorOutgoingQuoteBackground(view: View) {
     fun colorOutgoingQuoteBackground(view: View) {
         withScheme(view) { scheme ->
         withScheme(view) { scheme ->
-            view.setBackgroundColor(scheme.onSurfaceVariant)
+            view.setBackgroundColor(dynamicColor.onSurfaceVariant().getArgb(scheme))
         }
         }
     }
     }
 
 
     fun colorContactChatItemName(contactName: androidx.emoji2.widget.EmojiTextView) {
     fun colorContactChatItemName(contactName: androidx.emoji2.widget.EmojiTextView) {
         withScheme(contactName) { scheme ->
         withScheme(contactName) { scheme ->
-            contactName.setTextColor(scheme.onPrimaryContainer)
+            contactName.setTextColor(dynamicColor.onPrimaryContainer().getArgb(scheme))
         }
         }
     }
     }
 
 
     fun colorContactChatItemBackground(card: MaterialCardView) {
     fun colorContactChatItemBackground(card: MaterialCardView) {
         withScheme(card) { scheme ->
         withScheme(card) { scheme ->
-            card.setCardBackgroundColor(scheme.primaryContainer)
+            card.setCardBackgroundColor(dynamicColor.primaryContainer().getArgb(scheme))
         }
         }
     }
     }
 
 
@@ -166,7 +168,7 @@ class TalkSpecificViewThemeUtils @Inject constructor(
                 .mutate()
                 .mutate()
             DrawableCompat.setTintList(
             DrawableCompat.setTintList(
                 drawable,
                 drawable,
-                ColorStateList.valueOf(scheme.primary)
+                ColorStateList.valueOf(dynamicColor.primary().getArgb(scheme))
             )
             )
             emoji.background = drawable
             emoji.background = drawable
         }
         }
@@ -178,7 +180,7 @@ class TalkSpecificViewThemeUtils @Inject constructor(
                 .getDrawable(linearLayout.context, R.drawable.reaction_self_background)!!
                 .getDrawable(linearLayout.context, R.drawable.reaction_self_background)!!
                 .mutate()
                 .mutate()
             val backgroundColor = if (incoming) {
             val backgroundColor = if (incoming) {
-                scheme.primaryContainer
+                dynamicColor.primaryContainer().getArgb(scheme)
             } else {
             } else {
                 ContextCompat.getColor(
                 ContextCompat.getColor(
                     linearLayout.context,
                     linearLayout.context,
@@ -207,7 +209,7 @@ class TalkSpecificViewThemeUtils @Inject constructor(
 
 
     private fun colorDrawable(context: Context, drawable: Drawable) {
     private fun colorDrawable(context: Context, drawable: Drawable) {
         withScheme(context) { scheme ->
         withScheme(context) { scheme ->
-            drawable.setTint(scheme.primary)
+            drawable.setTint(dynamicColor.primary().getArgb(scheme))
         }
         }
     }
     }
 
 
@@ -217,9 +219,9 @@ class TalkSpecificViewThemeUtils @Inject constructor(
         withScheme(avatar) { scheme ->
         withScheme(avatar) { scheme ->
             val layers = arrayOfNulls<Drawable>(2)
             val layers = arrayOfNulls<Drawable>(2)
             layers[0] = ContextCompat.getDrawable(avatar.context, R.drawable.ic_avatar_background)
             layers[0] = ContextCompat.getDrawable(avatar.context, R.drawable.ic_avatar_background)
-            layers[0]?.setTint(scheme.surfaceVariant)
+            layers[0]?.setTint(dynamicColor.surfaceVariant().getArgb(scheme))
             layers[1] = ContextCompat.getDrawable(avatar.context, foreground)
             layers[1] = ContextCompat.getDrawable(avatar.context, foreground)
-            layers[1]?.setTint(scheme.onSurfaceVariant)
+            layers[1]?.setTint(dynamicColor.onSurfaceVariant().getArgb(scheme))
             drawable = LayerDrawable(layers)
             drawable = LayerDrawable(layers)
         }
         }
 
 
@@ -231,10 +233,10 @@ class TalkSpecificViewThemeUtils @Inject constructor(
             // hacky as no default way is provided
             // hacky as no default way is provided
             val editText = searchView.findViewById<SearchView.SearchAutoComplete>(R.id.search_src_text)
             val editText = searchView.findViewById<SearchView.SearchAutoComplete>(R.id.search_src_text)
             val searchPlate = searchView.findViewById<LinearLayout>(R.id.search_plate)
             val searchPlate = searchView.findViewById<LinearLayout>(R.id.search_plate)
-            editText.setHintTextColor(scheme.onSurfaceVariant)
-            editText.setTextColor(scheme.onSurface)
-            editText.setBackgroundColor(scheme.surface)
-            searchPlate.setBackgroundColor(scheme.surface)
+            editText.setHintTextColor(dynamicColor.onSurfaceVariant().getArgb(scheme))
+            editText.setTextColor(dynamicColor.onSurface().getArgb(scheme))
+            editText.setBackgroundColor(dynamicColor.surface().getArgb(scheme))
+            searchPlate.setBackgroundColor(dynamicColor.surface().getArgb(scheme))
         }
         }
     }
     }
 
 
@@ -248,7 +250,7 @@ class TalkSpecificViewThemeUtils @Inject constructor(
                         intArrayOf(-android.R.attr.state_checked)
                         intArrayOf(-android.R.attr.state_checked)
                     ),
                     ),
                     intArrayOf(
                     intArrayOf(
-                        scheme.secondaryContainer,
+                        dynamicColor.secondaryContainer().getArgb(scheme),
                         background
                         background
                     )
                     )
                 )
                 )
@@ -259,8 +261,8 @@ class TalkSpecificViewThemeUtils @Inject constructor(
                         intArrayOf(-android.R.attr.state_checked)
                         intArrayOf(-android.R.attr.state_checked)
                     ),
                     ),
                     intArrayOf(
                     intArrayOf(
-                        scheme.onSecondaryContainer,
-                        scheme.surface
+                        dynamicColor.onSecondaryContainer().getArgb(scheme),
+                        dynamicColor.surface().getArgb(scheme)
                     )
                     )
                 )
                 )
             )
             )
@@ -269,29 +271,33 @@ class TalkSpecificViewThemeUtils @Inject constructor(
 
 
     fun themeMicInputCloud(micInputCloud: MicInputCloud) {
     fun themeMicInputCloud(micInputCloud: MicInputCloud) {
         withScheme(micInputCloud) { scheme ->
         withScheme(micInputCloud) { scheme ->
-            micInputCloud.setColor(scheme.primary)
+            micInputCloud.setColor(dynamicColor.primary().getArgb(scheme))
         }
         }
     }
     }
 
 
     fun themeWaveFormSeekBar(waveformSeekBar: WaveformSeekBar) {
     fun themeWaveFormSeekBar(waveformSeekBar: WaveformSeekBar) {
         withScheme(waveformSeekBar) { scheme ->
         withScheme(waveformSeekBar) { scheme ->
             waveformSeekBar.thumb.colorFilter =
             waveformSeekBar.thumb.colorFilter =
-                PorterDuffColorFilter(scheme.inversePrimary, PorterDuff.Mode.SRC_IN)
-            waveformSeekBar.setColors(scheme.inversePrimary, scheme.onPrimaryContainer)
+                PorterDuffColorFilter(dynamicColor.inversePrimary().getArgb(scheme), PorterDuff.Mode.SRC_IN)
+            waveformSeekBar.setColors(
+                dynamicColor.inversePrimary().getArgb(scheme),
+                dynamicColor.onPrimaryContainer().getArgb(scheme)
+            )
             waveformSeekBar.progressDrawable?.colorFilter =
             waveformSeekBar.progressDrawable?.colorFilter =
-                PorterDuffColorFilter(scheme.primary, PorterDuff.Mode.SRC_IN)
+                PorterDuffColorFilter(dynamicColor.primary().getArgb(scheme), PorterDuff.Mode.SRC_IN)
         }
         }
     }
     }
 
 
     fun themeForegroundColorSpan(context: Context): ForegroundColorSpan {
     fun themeForegroundColorSpan(context: Context): ForegroundColorSpan {
         return withScheme(context) { scheme ->
         return withScheme(context) { scheme ->
-            return@withScheme ForegroundColorSpan(scheme.primary)
+            return@withScheme ForegroundColorSpan(dynamicColor.primary().getArgb(scheme))
         }
         }
     }
     }
 
 
     fun themeSpotlightView(context: Context, builder: SpotlightView.Builder): SpotlightView.Builder {
     fun themeSpotlightView(context: Context, builder: SpotlightView.Builder): SpotlightView.Builder {
         return withScheme(context) { scheme ->
         return withScheme(context) { scheme ->
-            return@withScheme builder.headingTvColor(scheme.primary).lineAndArcColor(scheme.primary)
+            return@withScheme builder.headingTvColor(dynamicColor.primary().getArgb(scheme))
+                .lineAndArcColor(dynamicColor.primary().getArgb(scheme))
         }
         }
     }
     }
 
 
@@ -305,7 +311,7 @@ class TalkSpecificViewThemeUtils @Inject constructor(
                 do {
                 do {
                     val end = start + constraint.length
                     val end = start + constraint.length
                     spanText.setSpan(
                     spanText.setSpan(
-                        ForegroundColorSpan(scheme.primary),
+                        ForegroundColorSpan(dynamicColor.primary().getArgb(scheme)),
                         start,
                         start,
                         end,
                         end,
                         Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
                         Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
@@ -323,34 +329,34 @@ class TalkSpecificViewThemeUtils @Inject constructor(
 
 
     fun themeSortButton(sortButton: MaterialButton) {
     fun themeSortButton(sortButton: MaterialButton) {
         withScheme(sortButton) { scheme ->
         withScheme(sortButton) { scheme ->
-            sortButton.iconTint = ColorStateList.valueOf(scheme.onSurface)
-            sortButton.setTextColor(scheme.onSurface)
+            sortButton.iconTint = ColorStateList.valueOf(dynamicColor.onSurface().getArgb(scheme))
+            sortButton.setTextColor(dynamicColor.onSurface().getArgb(scheme))
         }
         }
     }
     }
 
 
     fun themePathNavigationButton(navigationBtn: MaterialButton) {
     fun themePathNavigationButton(navigationBtn: MaterialButton) {
         withScheme(navigationBtn) { scheme ->
         withScheme(navigationBtn) { scheme ->
-            navigationBtn.iconTint = ColorStateList.valueOf(scheme.onSurface)
-            navigationBtn.setTextColor(scheme.onSurface)
+            navigationBtn.iconTint = ColorStateList.valueOf(dynamicColor.onSurface().getArgb(scheme))
+            navigationBtn.setTextColor(dynamicColor.onSurface().getArgb(scheme))
         }
         }
     }
     }
 
 
     fun themeSortListButtonGroup(relativeLayout: RelativeLayout) {
     fun themeSortListButtonGroup(relativeLayout: RelativeLayout) {
         withScheme(relativeLayout) { scheme ->
         withScheme(relativeLayout) { scheme ->
-            relativeLayout.setBackgroundColor(scheme.surface)
+            relativeLayout.setBackgroundColor(dynamicColor.surface().getArgb(scheme))
         }
         }
     }
     }
 
 
     fun themeStatusDrawable(context: Context, statusDrawable: StatusDrawable) {
     fun themeStatusDrawable(context: Context, statusDrawable: StatusDrawable) {
         withScheme(context) { scheme ->
         withScheme(context) { scheme ->
-            statusDrawable.colorStatusDrawable(scheme.surface)
+            statusDrawable.colorStatusDrawable(dynamicColor.surface().getArgb(scheme))
         }
         }
     }
     }
 
 
     fun themeMessageCheckMark(imageView: ImageView) {
     fun themeMessageCheckMark(imageView: ImageView) {
         withScheme(imageView) { scheme ->
         withScheme(imageView) { scheme ->
             imageView.setColorFilter(
             imageView.setColorFilter(
-                scheme.onSurfaceVariant,
+                dynamicColor.onSurfaceVariant().getArgb(scheme),
                 PorterDuff.Mode.SRC_ATOP
                 PorterDuff.Mode.SRC_ATOP
             )
             )
         }
         }
@@ -365,7 +371,11 @@ class TalkSpecificViewThemeUtils @Inject constructor(
                     context.getColor(R.color.nc_incoming_text_default)
                     context.getColor(R.color.nc_incoming_text_default)
                 )
                 )
             } else {
             } else {
-                MessageUtils(context).getRenderedMarkdownText(context, message, scheme.onSurfaceVariant)
+                MessageUtils(context).getRenderedMarkdownText(
+                    context,
+                    message,
+                    dynamicColor.onSurfaceVariant().getArgb(scheme)
+                )
             }
             }
         }
         }
     }
     }
@@ -375,7 +385,7 @@ class TalkSpecificViewThemeUtils @Inject constructor(
             return@withScheme if (!isOutgoingMessage || isSelfReaction) {
             return@withScheme if (!isOutgoingMessage || isSelfReaction) {
                 ContextCompat.getColor(binding.root.context, R.color.high_emphasis_text)
                 ContextCompat.getColor(binding.root.context, R.color.high_emphasis_text)
             } else {
             } else {
-                scheme.onSurfaceVariant
+                dynamicColor.onSurfaceVariant().getArgb(scheme)
             }
             }
         }
         }
     }
     }

+ 5 - 5
app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt

@@ -156,17 +156,17 @@ object ApiUtils {
         val spreedCapabilities = user.capabilities!!.spreedCapability
         val spreedCapabilities = user.capabilities!!.spreedCapability
         for (version in versions) {
         for (version in versions) {
             if (spreedCapabilities != null) {
             if (spreedCapabilities != null) {
-                if (hasSpreedFeatureCapability(spreedCapabilities, "signaling-v$version")) {
+                if (spreedCapabilities.features!!.contains("signaling-v$version")) {
                     return version
                     return version
                 }
                 }
                 if (version == API_V2 &&
                 if (version == API_V2 &&
-                    hasSpreedFeatureCapability(spreedCapabilities, "sip-support") &&
-                    !hasSpreedFeatureCapability(spreedCapabilities, "signaling-v3")
+                    hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.SIP_SUPPORT) &&
+                    !hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.SIGNALING_V3)
                 ) {
                 ) {
                     return version
                     return version
                 }
                 }
                 if (version == API_V1 &&
                 if (version == API_V1 &&
-                    !hasSpreedFeatureCapability(spreedCapabilities, "signaling-v3")
+                    !hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.SIGNALING_V3)
                 ) {
                 ) {
                     // Has no capability, we just assume it is always there when there is no v3 or later
                     // Has no capability, we just assume it is always there when there is no v3 or later
                     return version
                     return version
@@ -180,7 +180,7 @@ object ApiUtils {
     @Throws(NoSupportedApiException::class)
     @Throws(NoSupportedApiException::class)
     fun getChatApiVersion(spreedCapabilities: SpreedCapability, versions: IntArray): Int {
     fun getChatApiVersion(spreedCapabilities: SpreedCapability, versions: IntArray): Int {
         for (version in versions) {
         for (version in versions) {
-            if (version == API_V1 && hasSpreedFeatureCapability(spreedCapabilities, "chat-v2")) {
+            if (version == API_V1 && hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.CHAT_V2)) {
                 // Do not question that chat-v2 capability shows the availability of api/v1/ endpoint *see no evil*
                 // Do not question that chat-v2 capability shows the availability of api/v1/ endpoint *see no evil*
                 return version
                 return version
             }
             }

+ 29 - 10
app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt

@@ -52,7 +52,21 @@ enum class SpreedFeatures(val value: String) {
     TEMP_USER_AVATAR_API("temp-user-avatar-api"),
     TEMP_USER_AVATAR_API("temp-user-avatar-api"),
     PHONEBOOK_SEARCH("phonebook-search"),
     PHONEBOOK_SEARCH("phonebook-search"),
     GEO_LOCATION_SHARING("geo-location-sharing"),
     GEO_LOCATION_SHARING("geo-location-sharing"),
-    TALK_POLLS("talk-polls")
+    TALK_POLLS("talk-polls"),
+    FAVORITES("favorites"),
+    CHAT_READ_MARKER("chat-read-marker"),
+    CHAT_UNREAD("chat-unread"),
+    EDIT_MESSAGES("edit-messages"),
+    REMIND_ME_LATER("remind-me-later"),
+    CHAT_V2("chat-v2"),
+    SIP_SUPPORT("sip-support"),
+    SIGNALING_V3("signaling-v3"),
+    ROOM_DESCRIPTION("room-description"),
+    UNIFIED_SEARCH("unified-search"),
+    LOCKED_ONE_TO_ONE("locked-one-to-one-rooms"),
+    CHAT_PERMISSION("chat-permission"),
+    CONVERSATION_PERMISSION("conversation-permissions"),
+    FEDERATION_V1("federation-v1")
 }
 }
 
 
 @Suppress("TooManyFunctions")
 @Suppress("TooManyFunctions")
@@ -89,13 +103,8 @@ object CapabilitiesUtil {
         return false
         return false
     }
     }
 
 
-    @JvmStatic
-    @Deprecated("Add your capability to Capability enums and use hasSpreedFeatureCapability with enum.")
-    fun hasSpreedFeatureCapability(spreedCapabilities: SpreedCapability, capabilityName: String): Boolean {
-        if (spreedCapabilities.features != null) {
-            return spreedCapabilities.features!!.contains(capabilityName)
-        }
-        return false
+    fun isSharedItemsAvailable(spreedCapabilities: SpreedCapability): Boolean {
+        return hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.RICH_OBJECT_LIST_MEDIA)
     }
     }
 
 
     fun getMessageMaxLength(spreedCapabilities: SpreedCapability): Int {
     fun getMessageMaxLength(spreedCapabilities: SpreedCapability): Int {
@@ -147,11 +156,14 @@ object CapabilitiesUtil {
     }
     }
 
 
     fun isConversationDescriptionEndpointAvailable(spreedCapabilities: SpreedCapability): Boolean {
     fun isConversationDescriptionEndpointAvailable(spreedCapabilities: SpreedCapability): Boolean {
-        return hasSpreedFeatureCapability(spreedCapabilities, "room-description")
+        return hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.ROOM_DESCRIPTION)
     }
     }
 
 
     fun isUnifiedSearchAvailable(spreedCapabilities: SpreedCapability): Boolean {
     fun isUnifiedSearchAvailable(spreedCapabilities: SpreedCapability): Boolean {
-        return hasSpreedFeatureCapability(spreedCapabilities, "unified-search")
+        if (hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.FEDERATION_V1)) {
+            return false
+        }
+        return hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.UNIFIED_SEARCH)
     }
     }
 
 
     fun isAbleToCall(spreedCapabilities: SpreedCapability): Boolean {
     fun isAbleToCall(spreedCapabilities: SpreedCapability): Boolean {
@@ -234,6 +246,13 @@ object CapabilitiesUtil {
         return false
         return false
     }
     }
 
 
+    fun isFederationAvailable(user: User): Boolean {
+        return hasSpreedFeatureCapability(user.capabilities!!.spreedCapability!!, SpreedFeatures.FEDERATION_V1) &&
+            user.capabilities!!.spreedCapability!!.config?.containsKey("federation") == true &&
+            user.capabilities!!.spreedCapability!!.config!!["federation"] != null &&
+            user.capabilities!!.spreedCapability!!.config!!["federation"]!!.containsKey("enabled")
+    }
+
     // endregion
     // endregion
 
 
     //region ThemingCapabilities
     //region ThemingCapabilities

+ 1 - 1
app/src/main/java/com/nextcloud/talk/utils/ConversationUtils.kt

@@ -45,7 +45,7 @@ object ConversationUtils {
 
 
     fun isLockedOneToOne(conversation: ConversationModel, spreedCapabilities: SpreedCapability): Boolean {
     fun isLockedOneToOne(conversation: ConversationModel, spreedCapabilities: SpreedCapability): Boolean {
         return conversation.type == ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL &&
         return conversation.type == ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL &&
-            CapabilitiesUtil.hasSpreedFeatureCapability(spreedCapabilities, "locked-one-to-one-rooms")
+            CapabilitiesUtil.hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.LOCKED_ONE_TO_ONE)
     }
     }
 
 
     fun canModerate(conversation: ConversationModel, spreedCapabilities: SpreedCapability): Boolean {
     fun canModerate(conversation: ConversationModel, spreedCapabilities: SpreedCapability): Boolean {

+ 2 - 2
app/src/main/java/com/nextcloud/talk/utils/ParticipantPermissions.kt

@@ -53,7 +53,7 @@ class ParticipantPermissions(
     private fun hasConversationPermissions(): Boolean {
     private fun hasConversationPermissions(): Boolean {
         return CapabilitiesUtil.hasSpreedFeatureCapability(
         return CapabilitiesUtil.hasSpreedFeatureCapability(
             spreedCapabilities,
             spreedCapabilities,
-            "conversation-permissions"
+            SpreedFeatures.CONVERSATION_PERMISSION
         )
         )
     }
     }
 
 
@@ -90,7 +90,7 @@ class ParticipantPermissions(
     }
     }
 
 
     fun hasChatPermission(): Boolean {
     fun hasChatPermission(): Boolean {
-        if (CapabilitiesUtil.hasSpreedFeatureCapability(spreedCapabilities, "chat-permission")) {
+        if (CapabilitiesUtil.hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.CHAT_PERMISSION)) {
             return hasChatPermission
             return hasChatPermission
         }
         }
         // if capability is not available then the spreed version doesn't support to restrict this
         // if capability is not available then the spreed version doesn't support to restrict this

+ 5 - 2
app/src/main/java/com/nextcloud/talk/utils/preferences/preferencestorage/DatabaseStorageModule.java

@@ -34,6 +34,7 @@ import com.nextcloud.talk.data.storage.model.ArbitraryStorage;
 import com.nextcloud.talk.data.user.model.User;
 import com.nextcloud.talk.data.user.model.User;
 import com.nextcloud.talk.models.json.generic.GenericOverall;
 import com.nextcloud.talk.models.json.generic.GenericOverall;
 import com.nextcloud.talk.utils.ApiUtils;
 import com.nextcloud.talk.utils.ApiUtils;
+import com.nextcloud.talk.utils.SpreedFeatures;
 import com.nextcloud.talk.utils.UserIdUtils;
 import com.nextcloud.talk.utils.UserIdUtils;
 import com.nextcloud.talk.utils.CapabilitiesUtil;
 import com.nextcloud.talk.utils.CapabilitiesUtil;
 
 
@@ -158,8 +159,10 @@ public class DatabaseStorageModule {
                 });
                 });
 
 
         } else if ("conversation_info_message_notifications_dropdown".equals(key)) {
         } else if ("conversation_info_message_notifications_dropdown".equals(key)) {
-            if (CapabilitiesUtil.hasSpreedFeatureCapability(conversationUser.getCapabilities().getSpreedCapability(), "notification" +
-                "-levels")) {
+            if (CapabilitiesUtil.hasSpreedFeatureCapability(
+                conversationUser.getCapabilities().getSpreedCapability(),
+                SpreedFeatures.NOTIFICATION_LEVELS)
+            ) {
                 if (TextUtils.isEmpty(messageNotificationLevel) || !messageNotificationLevel.equals(value)) {
                 if (TextUtils.isEmpty(messageNotificationLevel) || !messageNotificationLevel.equals(value)) {
                     int intValue;
                     int intValue;
                     switch (value) {
                     switch (value) {

+ 9 - 7
app/src/main/res/layout/activity_contacts.xml

@@ -194,15 +194,17 @@
 
 
     </LinearLayout>
     </LinearLayout>
 
 
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/contacts_rv"
+    <RelativeLayout
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="0dp"
         android:layout_height="0dp"
-        android:visibility="gone"
-        tools:visibility="visible"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/list_open_conversations" />
+        app:layout_constraintTop_toBottomOf="@id/list_open_conversations">
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/contacts_rv"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="gone"
+            tools:visibility="visible" />
+    </RelativeLayout>
 
 
 </androidx.constraintlayout.widget.ConstraintLayout>
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 155 - 149
app/src/main/res/layout/dialog_date_time_picker.xml

@@ -17,202 +17,208 @@
   ~ You should have received a copy of the GNU General Public License
   ~ You should have received a copy of the GNU General Public License
   ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
   ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
   -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:tools="http://schemas.android.com/tools"
-    android:orientation="vertical"
     android:layout_width="match_parent"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:layout_height="match_parent"
+    android:orientation="vertical"
     tools:background="@color/white">
     tools:background="@color/white">
 
 
     <LinearLayout
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_margin="@dimen/standard_margin"
-        android:orientation="horizontal">
+        android:orientation="vertical">
 
 
-        <com.google.android.material.textview.MaterialTextView
-            android:layout_width="0dp"
+        <LinearLayout
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
-            android:text="@string/nc_remind"
-            android:layout_weight="1"
-            android:textSize="@dimen/md_title_textsize" />
+            android:layout_margin="@dimen/standard_margin"
+            android:orientation="horizontal">
 
 
-        <com.google.android.material.textview.MaterialTextView
-            android:id="@+id/date_time_picker_timestamp"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            tools:text="Apr 15th, 8:00 AM"
-            android:textSize="@dimen/supporting_text_text_size"
-            android:textStyle="bold" />
+            <com.google.android.material.textview.MaterialTextView
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:text="@string/nc_remind"
+                android:textSize="@dimen/md_title_textsize" />
 
 
-    </LinearLayout>
+            <com.google.android.material.textview.MaterialTextView
+                android:id="@+id/date_time_picker_timestamp"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textSize="@dimen/supporting_text_text_size"
+                android:textStyle="bold"
+                tools:text="Apr 15th, 8:00 AM" />
 
 
+        </LinearLayout>
 
 
-    <com.google.android.material.divider.MaterialDivider
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content" />
 
 
-    <LinearLayout
-        android:id="@+id/date_time_picker_later_today"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="?android:attr/selectableItemBackground"
-        android:orientation="horizontal"
-        android:padding="@dimen/standard_padding">
+        <com.google.android.material.divider.MaterialDivider
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
 
 
-        <com.google.android.material.textview.MaterialTextView
-            android:layout_width="0dp"
+        <LinearLayout
+            android:id="@+id/date_time_picker_later_today"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:text="@string/later_today"
-            android:textSize="@dimen/headline_text_size" />
+            android:background="?android:attr/selectableItemBackground"
+            android:orientation="horizontal"
+            android:padding="@dimen/standard_padding">
 
 
-        <com.google.android.material.textview.MaterialTextView
-            android:id="@+id/date_time_picker_later_today_textview"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textSize="@dimen/headline_text_size"
-            android:text="" />
-    </LinearLayout>
+            <com.google.android.material.textview.MaterialTextView
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:text="@string/later_today"
+                android:textSize="@dimen/headline_text_size" />
 
 
-    <LinearLayout
-        android:id="@+id/date_time_picker_tomorrow"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="?android:attr/selectableItemBackground"
-        android:orientation="horizontal"
-        android:padding="@dimen/standard_padding">
+            <com.google.android.material.textview.MaterialTextView
+                android:id="@+id/date_time_picker_later_today_textview"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text=""
+                android:textSize="@dimen/headline_text_size" />
+        </LinearLayout>
 
 
-        <com.google.android.material.textview.MaterialTextView
-            android:layout_width="0dp"
+        <LinearLayout
+            android:id="@+id/date_time_picker_tomorrow"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:text="@string/tomorrow"
-            android:textSize="@dimen/headline_text_size" />
+            android:background="?android:attr/selectableItemBackground"
+            android:orientation="horizontal"
+            android:padding="@dimen/standard_padding">
 
 
-        <com.google.android.material.textview.MaterialTextView
-            android:id="@+id/date_time_picker_tomorrow_textview"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textSize="@dimen/headline_text_size"
-            android:text="" />
-    </LinearLayout>
+            <com.google.android.material.textview.MaterialTextView
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:text="@string/tomorrow"
+                android:textSize="@dimen/headline_text_size" />
 
 
-    <LinearLayout
-        android:id="@+id/date_time_picker_weekend"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="?android:attr/selectableItemBackground"
-        android:orientation="horizontal"
-        android:padding="@dimen/standard_padding">
+            <com.google.android.material.textview.MaterialTextView
+                android:id="@+id/date_time_picker_tomorrow_textview"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text=""
+                android:textSize="@dimen/headline_text_size" />
+        </LinearLayout>
 
 
-        <com.google.android.material.textview.MaterialTextView
-            android:layout_width="0dp"
+        <LinearLayout
+            android:id="@+id/date_time_picker_weekend"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:text="@string/this_weekend"
-            android:textSize="@dimen/headline_text_size" />
+            android:background="?android:attr/selectableItemBackground"
+            android:orientation="horizontal"
+            android:padding="@dimen/standard_padding">
 
 
-        <com.google.android.material.textview.MaterialTextView
-            android:id="@+id/date_time_picker_weekend_textview"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textSize="@dimen/headline_text_size"
-            android:text="" />
-    </LinearLayout>
+            <com.google.android.material.textview.MaterialTextView
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:text="@string/this_weekend"
+                android:textSize="@dimen/headline_text_size" />
 
 
-    <LinearLayout
-        android:id="@+id/date_time_picker_next_week"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="?android:attr/selectableItemBackground"
-        android:orientation="horizontal"
-        android:padding="@dimen/standard_padding">
+            <com.google.android.material.textview.MaterialTextView
+                android:id="@+id/date_time_picker_weekend_textview"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text=""
+                android:textSize="@dimen/headline_text_size" />
+        </LinearLayout>
 
 
-        <com.google.android.material.textview.MaterialTextView
-            android:layout_width="0dp"
+        <LinearLayout
+            android:id="@+id/date_time_picker_next_week"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:text="@string/next_week"
-            android:textSize="@dimen/headline_text_size" />
+            android:background="?android:attr/selectableItemBackground"
+            android:orientation="horizontal"
+            android:padding="@dimen/standard_padding">
 
 
-        <com.google.android.material.textview.MaterialTextView
-            android:id="@+id/date_time_picker_next_week_textview"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textSize="@dimen/headline_text_size"
-            android:text="" />
-    </LinearLayout>
+            <com.google.android.material.textview.MaterialTextView
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:text="@string/next_week"
+                android:textSize="@dimen/headline_text_size" />
 
 
-    <com.google.android.material.divider.MaterialDivider
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content" />
+            <com.google.android.material.textview.MaterialTextView
+                android:id="@+id/date_time_picker_next_week_textview"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text=""
+                android:textSize="@dimen/headline_text_size" />
+        </LinearLayout>
 
 
-    <LinearLayout
-        android:id="@+id/date_time_picker_custom"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal"
-        android:padding="@dimen/standard_padding"
-        android:background="?android:attr/selectableItemBackground">
+        <com.google.android.material.divider.MaterialDivider
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
 
 
-        <ImageView
-            android:id="@+id/date_time_picker_custom_icon"
-            android:layout_width="wrap_content"
+        <LinearLayout
+            android:id="@+id/date_time_picker_custom"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
-            android:src="@drawable/baseline_calendar_month_24"
-            android:paddingEnd="@dimen/standard_double_padding"
-            tools:ignore="RtlSymmetry"
-            android:contentDescription="@string/calendar" />
+            android:background="?android:attr/selectableItemBackground"
+            android:orientation="horizontal"
+            android:padding="@dimen/standard_padding">
 
 
-        <com.google.android.material.textview.MaterialTextView
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:text="@string/custom"
-            android:layout_weight="1"
-            android:textSize="@dimen/headline_text_size" />
-    </LinearLayout>
+            <ImageView
+                android:id="@+id/date_time_picker_custom_icon"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:contentDescription="@string/calendar"
+                android:paddingEnd="@dimen/standard_double_padding"
+                android:src="@drawable/baseline_calendar_month_24"
+                tools:ignore="RtlSymmetry" />
 
 
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal">
+            <com.google.android.material.textview.MaterialTextView
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:text="@string/custom"
+                android:textSize="@dimen/headline_text_size" />
+        </LinearLayout>
 
 
         <LinearLayout
         <LinearLayout
-            android:layout_width="0dp"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:layout_weight="1">
+            android:orientation="horizontal">
+
+            <LinearLayout
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:orientation="vertical">
+
+                <com.google.android.material.button.MaterialButton
+                    android:id="@+id/button_delete"
+                    style="@style/Button.Borderless"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:minHeight="@dimen/min_size_clickable_area"
+                    android:text="@string/nc_delete"
+                    android:textColor="@color/design_default_color_error" />
+
+            </LinearLayout>
 
 
             <com.google.android.material.button.MaterialButton
             <com.google.android.material.button.MaterialButton
-                android:id="@+id/button_delete"
+                android:id="@+id/button_set"
                 style="@style/Button.Borderless"
                 style="@style/Button.Borderless"
                 android:layout_width="wrap_content"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:minHeight="@dimen/min_size_clickable_area"
                 android:minHeight="@dimen/min_size_clickable_area"
-                android:text="@string/nc_delete"
-                android:textColor="@color/design_default_color_error" />
+                android:text="@string/set" />
 
 
-        </LinearLayout>
+            <com.google.android.material.button.MaterialButton
+                android:id="@+id/button_close"
+                style="@style/Button.Borderless"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="end"
+                android:minHeight="@dimen/min_size_clickable_area"
+                android:text="@string/close" />
 
 
-        <com.google.android.material.button.MaterialButton
-            android:id="@+id/button_set"
-            style="@style/Button.Borderless"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:minHeight="@dimen/min_size_clickable_area"
-            android:text="@string/set" />
+        </LinearLayout>
 
 
-        <com.google.android.material.button.MaterialButton
-            android:id="@+id/button_close"
-            style="@style/Button.Borderless"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="end"
-            android:minHeight="@dimen/min_size_clickable_area"
-            android:text="@string/close" />
 
 
     </LinearLayout>
     </LinearLayout>
-
-
-</LinearLayout>
+</ScrollView>

+ 4 - 4
app/src/main/res/values-ar/strings.xml

@@ -22,7 +22,6 @@
     <string name="clear_status_message_after">إمسح رسالة الحالة فيما بعدٌ</string>
     <string name="clear_status_message_after">إمسح رسالة الحالة فيما بعدٌ</string>
     <string name="close">إغلاق</string>
     <string name="close">إغلاق</string>
     <string name="continuous_voice_message_recording">قَفْل التسجيل للتسجيل المستمر للرسالة الصوتية</string>
     <string name="continuous_voice_message_recording">قَفْل التسجيل للتسجيل المستمر للرسالة الصوتية</string>
-    <string name="conversation_is_read_only">المحادثة للقراءة فقط</string>
     <string name="conversations">محادثات</string>
     <string name="conversations">محادثات</string>
     <string name="create_conversation">انشاء محادثة</string>
     <string name="create_conversation">انشاء محادثة</string>
     <string name="create_issue">تكوين إشكالية </string>
     <string name="create_issue">تكوين إشكالية </string>
@@ -44,6 +43,7 @@
     <string name="file_list_loading">التحميل جارٍ …</string>
     <string name="file_list_loading">التحميل جارٍ …</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="fourHours">4 ساعات</string>
     <string name="fourHours">4 ساعات</string>
+    <string name="get_invitations_error">تعذّر جلب الدعوات المعلقة</string>
     <string name="hint_edited_message">(مُعدّلة)</string>
     <string name="hint_edited_message">(مُعدّلة)</string>
     <string name="invisible">غير مرئي</string>
     <string name="invisible">غير مرئي</string>
     <string name="languages_error_message">تعذّرت استعادة اللغات</string>
     <string name="languages_error_message">تعذّرت استعادة اللغات</string>
@@ -114,8 +114,6 @@
     <string name="nc_certificate_dialog_title">تحقق من الشهادة</string>
     <string name="nc_certificate_dialog_title">تحقق من الشهادة</string>
     <string name="nc_certificate_error">إعدادات SSL الخاص بك تمنع الاتصال</string>
     <string name="nc_certificate_error">إعدادات SSL الخاص بك تمنع الاتصال</string>
     <string name="nc_change_cert_auth">تغيير شهادة المصادقة</string>
     <string name="nc_change_cert_auth">تغيير شهادة المصادقة</string>
-    <string name="nc_circle">الدائرة Circle</string>
-    <string name="nc_circles">الدوائر Circles</string>
     <string name="nc_clear_edit_button">محو زر التحرير</string>
     <string name="nc_clear_edit_button">محو زر التحرير</string>
     <string name="nc_clear_edit_message">محو تحرير الرسالة</string>
     <string name="nc_clear_edit_message">محو تحرير الرسالة</string>
     <string name="nc_clear_history">مسح جميع الرسائل</string>
     <string name="nc_clear_history">مسح جميع الرسائل</string>
@@ -341,10 +339,10 @@
     <string name="nc_push_to_talk_desc">في وضعية تعطل المايكرفون، علق على الزر &amp; لاستخدام اضغط للتحدث</string>
     <string name="nc_push_to_talk_desc">في وضعية تعطل المايكرفون، علق على الزر &amp; لاستخدام اضغط للتحدث</string>
     <string name="nc_remind">ذكرني لاحقا</string>
     <string name="nc_remind">ذكرني لاحقا</string>
     <string name="nc_remote_audio_off">الصَّوت القصِي remote موقوف</string>
     <string name="nc_remote_audio_off">الصَّوت القصِي remote موقوف</string>
-    <string name="nc_remove_circle_and_members">حذف الدائرة circle و الأعضاء</string>
     <string name="nc_remove_from_favorites">إزالتها مِن المفضلة</string>
     <string name="nc_remove_from_favorites">إزالتها مِن المفضلة</string>
     <string name="nc_remove_group_and_members">حذف المجموعة group و الأعضاء</string>
     <string name="nc_remove_group_and_members">حذف المجموعة group و الأعضاء</string>
     <string name="nc_remove_participant">حذف مشارك</string>
     <string name="nc_remove_participant">حذف مشارك</string>
+    <string name="nc_remove_team_and_members">إزالة الفريق و الأعضاء</string>
     <string name="nc_rename">إعادة تسمية المحادثة</string>
     <string name="nc_rename">إعادة تسمية المحادثة</string>
     <string name="nc_rename_confirm">تغيير تسمية</string>
     <string name="nc_rename_confirm">تغيير تسمية</string>
     <string name="nc_reply">رد</string>
     <string name="nc_reply">رد</string>
@@ -467,6 +465,8 @@
     <string name="nc_sort_by">رتِّب حسب</string>
     <string name="nc_sort_by">رتِّب حسب</string>
     <string name="nc_start_time">وقت البدء</string>
     <string name="nc_start_time">وقت البدء</string>
     <string name="nc_switch_account">تبديل الحساب</string>
     <string name="nc_switch_account">تبديل الحساب</string>
+    <string name="nc_team">الفريق</string>
+    <string name="nc_teams">الفِرَق</string>
     <string name="nc_upload_choose_local_files">اختر الملفات</string>
     <string name="nc_upload_choose_local_files">اختر الملفات</string>
     <string name="nc_upload_confirm_send_multiple">إرسال هذه الملفات إلى %1$s؟</string>
     <string name="nc_upload_confirm_send_multiple">إرسال هذه الملفات إلى %1$s؟</string>
     <string name="nc_upload_confirm_send_single">إرسال هذا الملف إلى %1$s؟</string>
     <string name="nc_upload_confirm_send_single">إرسال هذا الملف إلى %1$s؟</string>

+ 5 - 4
app/src/main/res/values-b+en+001/strings.xml

@@ -22,7 +22,7 @@
     <string name="clear_status_message_after">Clear status message after</string>
     <string name="clear_status_message_after">Clear status message after</string>
     <string name="close">Close</string>
     <string name="close">Close</string>
     <string name="continuous_voice_message_recording">Lock recording for continuously recording of the voice message</string>
     <string name="continuous_voice_message_recording">Lock recording for continuously recording of the voice message</string>
-    <string name="conversation_is_read_only">Conversation is read Only</string>
+    <string name="conversation_is_read_only">Conversation is read only</string>
     <string name="conversations">Conversations</string>
     <string name="conversations">Conversations</string>
     <string name="create_conversation">Create conversation</string>
     <string name="create_conversation">Create conversation</string>
     <string name="create_issue">Create issue</string>
     <string name="create_issue">Create issue</string>
@@ -44,6 +44,7 @@
     <string name="file_list_loading">Loading …</string>
     <string name="file_list_loading">Loading …</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="fourHours">4 hours</string>
     <string name="fourHours">4 hours</string>
+    <string name="get_invitations_error">Failed to fetch pending invitations</string>
     <string name="hint_edited_message">(edited)</string>
     <string name="hint_edited_message">(edited)</string>
     <string name="invisible">Invisible</string>
     <string name="invisible">Invisible</string>
     <string name="languages_error_message">Languages could not be retrieved</string>
     <string name="languages_error_message">Languages could not be retrieved</string>
@@ -114,8 +115,6 @@
     <string name="nc_certificate_dialog_title">Check out the certificate</string>
     <string name="nc_certificate_dialog_title">Check out the certificate</string>
     <string name="nc_certificate_error">Your SSL setup prevented connection</string>
     <string name="nc_certificate_error">Your SSL setup prevented connection</string>
     <string name="nc_change_cert_auth">Change authentication certificate</string>
     <string name="nc_change_cert_auth">Change authentication certificate</string>
-    <string name="nc_circle">Circle</string>
-    <string name="nc_circles">Circles</string>
     <string name="nc_clear_edit_button">clear Edit Button</string>
     <string name="nc_clear_edit_button">clear Edit Button</string>
     <string name="nc_clear_edit_message">Clear Edit Message</string>
     <string name="nc_clear_edit_message">Clear Edit Message</string>
     <string name="nc_clear_history">Delete all messages</string>
     <string name="nc_clear_history">Delete all messages</string>
@@ -341,10 +340,10 @@
     <string name="nc_push_to_talk_desc">With the microphone disabled, click&amp;hold to use Press-to-transmit</string>
     <string name="nc_push_to_talk_desc">With the microphone disabled, click&amp;hold to use Press-to-transmit</string>
     <string name="nc_remind">Remind me later</string>
     <string name="nc_remind">Remind me later</string>
     <string name="nc_remote_audio_off">Remote audio off</string>
     <string name="nc_remote_audio_off">Remote audio off</string>
-    <string name="nc_remove_circle_and_members">Remove circle and members</string>
     <string name="nc_remove_from_favorites">Remove from favourites</string>
     <string name="nc_remove_from_favorites">Remove from favourites</string>
     <string name="nc_remove_group_and_members">Remove group and members</string>
     <string name="nc_remove_group_and_members">Remove group and members</string>
     <string name="nc_remove_participant">Remove participant</string>
     <string name="nc_remove_participant">Remove participant</string>
+    <string name="nc_remove_team_and_members">Remove team and members</string>
     <string name="nc_rename">Rename conversation</string>
     <string name="nc_rename">Rename conversation</string>
     <string name="nc_rename_confirm">Rename</string>
     <string name="nc_rename_confirm">Rename</string>
     <string name="nc_reply">Reply</string>
     <string name="nc_reply">Reply</string>
@@ -467,6 +466,8 @@
     <string name="nc_sort_by">Sort by</string>
     <string name="nc_sort_by">Sort by</string>
     <string name="nc_start_time">Start time</string>
     <string name="nc_start_time">Start time</string>
     <string name="nc_switch_account">Switch account</string>
     <string name="nc_switch_account">Switch account</string>
+    <string name="nc_team">Team</string>
+    <string name="nc_teams">Teams</string>
     <string name="nc_upload_choose_local_files">Choose files</string>
     <string name="nc_upload_choose_local_files">Choose files</string>
     <string name="nc_upload_confirm_send_multiple">Send these files to %1$s?</string>
     <string name="nc_upload_confirm_send_multiple">Send these files to %1$s?</string>
     <string name="nc_upload_confirm_send_single">Send this file to %1$s?</string>
     <string name="nc_upload_confirm_send_single">Send this file to %1$s?</string>

+ 0 - 3
app/src/main/res/values-bg-rBG/strings.xml

@@ -91,8 +91,6 @@
     <string name="nc_certificate_dialog_title">Провери сертификата</string>
     <string name="nc_certificate_dialog_title">Провери сертификата</string>
     <string name="nc_certificate_error">Вашата настройка на SSL, предотврати връзката </string>
     <string name="nc_certificate_error">Вашата настройка на SSL, предотврати връзката </string>
     <string name="nc_change_cert_auth">Променете сертификата за удостоверяване</string>
     <string name="nc_change_cert_auth">Променете сертификата за удостоверяване</string>
-    <string name="nc_circle">Кръг</string>
-    <string name="nc_circles">Кръгове</string>
     <string name="nc_clear_history">Изтриване на всички съобщения</string>
     <string name="nc_clear_history">Изтриване на всички съобщения</string>
     <string name="nc_clear_history_success">Всички съобщения бяха изтрити </string>
     <string name="nc_clear_history_success">Всички съобщения бяха изтрити </string>
     <string name="nc_clear_history_warning">Сигурни ли сте, че искате да изтриете всички съобщения в този разговор?</string>
     <string name="nc_clear_history_warning">Сигурни ли сте, че искате да изтриете всички съобщения в този разговор?</string>
@@ -258,7 +256,6 @@
     <string name="nc_push_to_talk_desc">Когато микрофонът е деактивиран, кликнете &amp; и задръжте, за да използвате „Натисни и говори“</string>
     <string name="nc_push_to_talk_desc">Когато микрофонът е деактивиран, кликнете &amp; и задръжте, за да използвате „Натисни и говори“</string>
     <string name="nc_remind">Напомни ми по-късно</string>
     <string name="nc_remind">Напомни ми по-късно</string>
     <string name="nc_remote_audio_off">Отдалеченото аудио е изключено</string>
     <string name="nc_remote_audio_off">Отдалеченото аудио е изключено</string>
-    <string name="nc_remove_circle_and_members">Премахване на кръга и на членовете</string>
     <string name="nc_remove_from_favorites">Премахни от любимите</string>
     <string name="nc_remove_from_favorites">Премахни от любимите</string>
     <string name="nc_remove_group_and_members">Премахване на групата и на членовете</string>
     <string name="nc_remove_group_and_members">Премахване на групата и на членовете</string>
     <string name="nc_remove_participant">Премахване на участник</string>
     <string name="nc_remove_participant">Премахване на участник</string>

+ 2 - 3
app/src/main/res/values-ca/strings.xml

@@ -91,8 +91,6 @@
     <string name="nc_certificate_dialog_title">Verifica el certificat</string>
     <string name="nc_certificate_dialog_title">Verifica el certificat</string>
     <string name="nc_certificate_error">La vostra configuració SSL ha impedit la connexió</string>
     <string name="nc_certificate_error">La vostra configuració SSL ha impedit la connexió</string>
     <string name="nc_change_cert_auth">Canvia el certificat d’autenticació</string>
     <string name="nc_change_cert_auth">Canvia el certificat d’autenticació</string>
-    <string name="nc_circle">Cercle</string>
-    <string name="nc_circles">Cercles</string>
     <string name="nc_clear_history">Suprimeix tots els missatges</string>
     <string name="nc_clear_history">Suprimeix tots els missatges</string>
     <string name="nc_clear_history_success">S\'han suprimit tots els missatges</string>
     <string name="nc_clear_history_success">S\'han suprimit tots els missatges</string>
     <string name="nc_clear_history_warning">Segur que voleu suprimir tots els missatges d\'aquesta conversa?</string>
     <string name="nc_clear_history_warning">Segur que voleu suprimir tots els missatges d\'aquesta conversa?</string>
@@ -258,7 +256,6 @@
     <string name="nc_push_to_talk_desc">Amb el micròfon desactivat, feu clic a &amp; i mantingueu-lo pressionat per fer servir el Prem-i-parla</string>
     <string name="nc_push_to_talk_desc">Amb el micròfon desactivat, feu clic a &amp; i mantingueu-lo pressionat per fer servir el Prem-i-parla</string>
     <string name="nc_remind">Recorda-m\'ho més tard</string>
     <string name="nc_remind">Recorda-m\'ho més tard</string>
     <string name="nc_remote_audio_off">Àudio remot desactivat</string>
     <string name="nc_remote_audio_off">Àudio remot desactivat</string>
-    <string name="nc_remove_circle_and_members">Suprimeix el cercle i els membres</string>
     <string name="nc_remove_from_favorites">Suprimeix de favorits</string>
     <string name="nc_remove_from_favorites">Suprimeix de favorits</string>
     <string name="nc_remove_group_and_members">Suprimeix el grup i els membres</string>
     <string name="nc_remove_group_and_members">Suprimeix el grup i els membres</string>
     <string name="nc_remove_participant">Suprimeix el participant</string>
     <string name="nc_remove_participant">Suprimeix el participant</string>
@@ -375,6 +372,8 @@
     <string name="nc_sort_by">Ordena per</string>
     <string name="nc_sort_by">Ordena per</string>
     <string name="nc_start_time">Hora d\'inici</string>
     <string name="nc_start_time">Hora d\'inici</string>
     <string name="nc_switch_account">Canvia el compte</string>
     <string name="nc_switch_account">Canvia el compte</string>
+    <string name="nc_team">Equip</string>
+    <string name="nc_teams">Equips</string>
     <string name="nc_upload_choose_local_files">Trieu els fitxers</string>
     <string name="nc_upload_choose_local_files">Trieu els fitxers</string>
     <string name="nc_upload_confirm_send_multiple">Voleu enviar aquests fitxers a %1$s?</string>
     <string name="nc_upload_confirm_send_multiple">Voleu enviar aquests fitxers a %1$s?</string>
     <string name="nc_upload_confirm_send_single">Voleu enviar aquest fitxer a %1$s?</string>
     <string name="nc_upload_confirm_send_single">Voleu enviar aquest fitxer a %1$s?</string>

+ 0 - 3
app/src/main/res/values-cs-rCZ/strings.xml

@@ -110,8 +110,6 @@
     <string name="nc_certificate_dialog_title">Zkontrolovat certifikát</string>
     <string name="nc_certificate_dialog_title">Zkontrolovat certifikát</string>
     <string name="nc_certificate_error">Vaše nastavení SSL zabránilo připojení</string>
     <string name="nc_certificate_error">Vaše nastavení SSL zabránilo připojení</string>
     <string name="nc_change_cert_auth">Změnit certifikát sloužící pro ověřování se</string>
     <string name="nc_change_cert_auth">Změnit certifikát sloužící pro ověřování se</string>
-    <string name="nc_circle">Okruh</string>
-    <string name="nc_circles">Okruhy</string>
     <string name="nc_clear_history">Smazat všechny zprávy</string>
     <string name="nc_clear_history">Smazat všechny zprávy</string>
     <string name="nc_clear_history_success">Všechny zprávy byly vymazány</string>
     <string name="nc_clear_history_success">Všechny zprávy byly vymazány</string>
     <string name="nc_clear_history_warning">Opravdu chcete všechny zprávy v této konverzaci smazat?</string>
     <string name="nc_clear_history_warning">Opravdu chcete všechny zprávy v této konverzaci smazat?</string>
@@ -304,7 +302,6 @@
     <string name="nc_push_to_talk_desc">Při vypnutém mikrofonu, klikněte a dokud držíte, můžete mluvit – jako u vysílačky</string>
     <string name="nc_push_to_talk_desc">Při vypnutém mikrofonu, klikněte a dokud držíte, můžete mluvit – jako u vysílačky</string>
     <string name="nc_remind">Připomenout později</string>
     <string name="nc_remind">Připomenout později</string>
     <string name="nc_remote_audio_off">Ztlumení mikrofonu na dálku</string>
     <string name="nc_remote_audio_off">Ztlumení mikrofonu na dálku</string>
-    <string name="nc_remove_circle_and_members">Odebrat kruh a členy</string>
     <string name="nc_remove_from_favorites">Odebrat z oblíbených</string>
     <string name="nc_remove_from_favorites">Odebrat z oblíbených</string>
     <string name="nc_remove_group_and_members">Odebrat skupinu a její členy</string>
     <string name="nc_remove_group_and_members">Odebrat skupinu a její členy</string>
     <string name="nc_remove_participant">Odebrat účastníka</string>
     <string name="nc_remove_participant">Odebrat účastníka</string>

+ 0 - 2
app/src/main/res/values-da/strings.xml

@@ -51,8 +51,6 @@
     <string name="nc_certificate_dialog_title">Tjek certifikatet</string>
     <string name="nc_certificate_dialog_title">Tjek certifikatet</string>
     <string name="nc_certificate_error">Din SSL indstilling forhindrede forbindelse</string>
     <string name="nc_certificate_error">Din SSL indstilling forhindrede forbindelse</string>
     <string name="nc_change_cert_auth">Skift godkendelsescertifikat</string>
     <string name="nc_change_cert_auth">Skift godkendelsescertifikat</string>
-    <string name="nc_circle">Cirkel</string>
-    <string name="nc_circles">Cirkler</string>
     <string name="nc_clear_history_success">Alle beskeder blev slettet</string>
     <string name="nc_clear_history_success">Alle beskeder blev slettet</string>
     <string name="nc_client_cert_change">Skift kliencertifikat</string>
     <string name="nc_client_cert_change">Skift kliencertifikat</string>
     <string name="nc_client_cert_setup">Indstil klientcertifikat</string>
     <string name="nc_client_cert_setup">Indstil klientcertifikat</string>

+ 5 - 4
app/src/main/res/values-de/strings.xml

@@ -22,7 +22,7 @@
     <string name="clear_status_message_after">Statusmeldung löschen nach</string>
     <string name="clear_status_message_after">Statusmeldung löschen nach</string>
     <string name="close">Schließen</string>
     <string name="close">Schließen</string>
     <string name="continuous_voice_message_recording">Aufnahme sperren für kontinuierliche Aufzeichnung der Sprachnachricht</string>
     <string name="continuous_voice_message_recording">Aufnahme sperren für kontinuierliche Aufzeichnung der Sprachnachricht</string>
-    <string name="conversation_is_read_only">Unterhaltung ist schreibgeschützt</string>
+    <string name="conversation_is_read_only">UNterhaltung ist schreibgeschützt</string>
     <string name="conversations">Unterhaltungen</string>
     <string name="conversations">Unterhaltungen</string>
     <string name="create_conversation">Unterhaltung erstellen</string>
     <string name="create_conversation">Unterhaltung erstellen</string>
     <string name="create_issue">Fehler melden</string>
     <string name="create_issue">Fehler melden</string>
@@ -44,6 +44,7 @@
     <string name="file_list_loading">Lade …</string>
     <string name="file_list_loading">Lade …</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="fourHours">4 Stunden</string>
     <string name="fourHours">4 Stunden</string>
+    <string name="get_invitations_error">Ausstehende Einladungen konnten nicht abgerufen werden</string>
     <string name="hint_edited_message">(Bearbeitet)</string>
     <string name="hint_edited_message">(Bearbeitet)</string>
     <string name="invisible">Unsichtbar</string>
     <string name="invisible">Unsichtbar</string>
     <string name="languages_error_message">Sprachen konnten nicht abgerufen werden</string>
     <string name="languages_error_message">Sprachen konnten nicht abgerufen werden</string>
@@ -114,8 +115,6 @@
     <string name="nc_certificate_dialog_title">Überprüfen Sie das Zertifikat</string>
     <string name="nc_certificate_dialog_title">Überprüfen Sie das Zertifikat</string>
     <string name="nc_certificate_error">Ihre SSL-Konfiguration hat die Verbindung verhindert</string>
     <string name="nc_certificate_error">Ihre SSL-Konfiguration hat die Verbindung verhindert</string>
     <string name="nc_change_cert_auth">Authentifizierungs-Zertifikat ändern</string>
     <string name="nc_change_cert_auth">Authentifizierungs-Zertifikat ändern</string>
-    <string name="nc_circle">Kreis</string>
-    <string name="nc_circles">Kreise</string>
     <string name="nc_clear_edit_button">Schaltfläche „Bearbeiten“ löschen</string>
     <string name="nc_clear_edit_button">Schaltfläche „Bearbeiten“ löschen</string>
     <string name="nc_clear_edit_message">Bearbeitungsnachricht löschen</string>
     <string name="nc_clear_edit_message">Bearbeitungsnachricht löschen</string>
     <string name="nc_clear_history">Alle Nachrichten löschen</string>
     <string name="nc_clear_history">Alle Nachrichten löschen</string>
@@ -341,10 +340,10 @@
     <string name="nc_push_to_talk_desc">Bei deaktiviertem Mikrofon &amp;drücken. Halten Sie zum Senden die Sprechtaste gedrückt (Funkgerät-Modus)</string>
     <string name="nc_push_to_talk_desc">Bei deaktiviertem Mikrofon &amp;drücken. Halten Sie zum Senden die Sprechtaste gedrückt (Funkgerät-Modus)</string>
     <string name="nc_remind">Erinnere mich später</string>
     <string name="nc_remind">Erinnere mich später</string>
     <string name="nc_remote_audio_off">Entferntes Audio aus</string>
     <string name="nc_remote_audio_off">Entferntes Audio aus</string>
-    <string name="nc_remove_circle_and_members">Kreis und Mitglieder entfernen</string>
     <string name="nc_remove_from_favorites">Von Favoriten entfernen</string>
     <string name="nc_remove_from_favorites">Von Favoriten entfernen</string>
     <string name="nc_remove_group_and_members">Gruppe und Mitglieder entfernen</string>
     <string name="nc_remove_group_and_members">Gruppe und Mitglieder entfernen</string>
     <string name="nc_remove_participant">Teilnehmer entfernen</string>
     <string name="nc_remove_participant">Teilnehmer entfernen</string>
+    <string name="nc_remove_team_and_members">Team und Mitglieder entfernen</string>
     <string name="nc_rename">Unterhaltung umbenennen</string>
     <string name="nc_rename">Unterhaltung umbenennen</string>
     <string name="nc_rename_confirm">Umbenennen</string>
     <string name="nc_rename_confirm">Umbenennen</string>
     <string name="nc_reply">Antworten</string>
     <string name="nc_reply">Antworten</string>
@@ -467,6 +466,8 @@
     <string name="nc_sort_by">Sortiere nach</string>
     <string name="nc_sort_by">Sortiere nach</string>
     <string name="nc_start_time">Startzeit</string>
     <string name="nc_start_time">Startzeit</string>
     <string name="nc_switch_account">Konto wechseln</string>
     <string name="nc_switch_account">Konto wechseln</string>
+    <string name="nc_team">Team</string>
+    <string name="nc_teams">Teams</string>
     <string name="nc_upload_choose_local_files">Dateien auswählen</string>
     <string name="nc_upload_choose_local_files">Dateien auswählen</string>
     <string name="nc_upload_confirm_send_multiple">Diese Dateien an %1$s senden?</string>
     <string name="nc_upload_confirm_send_multiple">Diese Dateien an %1$s senden?</string>
     <string name="nc_upload_confirm_send_single">Diese Datei an %1$s senden?</string>
     <string name="nc_upload_confirm_send_single">Diese Datei an %1$s senden?</string>

+ 0 - 3
app/src/main/res/values-el/strings.xml

@@ -70,8 +70,6 @@
     <string name="nc_certificate_dialog_title">Ελέγξτε το πιστοποιητικό</string>
     <string name="nc_certificate_dialog_title">Ελέγξτε το πιστοποιητικό</string>
     <string name="nc_certificate_error">Η ρύθμιση SSL απέτρεψε την σύνδεση</string>
     <string name="nc_certificate_error">Η ρύθμιση SSL απέτρεψε την σύνδεση</string>
     <string name="nc_change_cert_auth">Αλλαγή πιστοποιητικού πιστοποίησης</string>
     <string name="nc_change_cert_auth">Αλλαγή πιστοποιητικού πιστοποίησης</string>
-    <string name="nc_circle">Κύκλος</string>
-    <string name="nc_circles">Κύκλοι</string>
     <string name="nc_clear_history">Διαγραφή όλων των μηνυμάτων</string>
     <string name="nc_clear_history">Διαγραφή όλων των μηνυμάτων</string>
     <string name="nc_clear_history_success">Όλα τα μηνύματα διαγράφηκαν</string>
     <string name="nc_clear_history_success">Όλα τα μηνύματα διαγράφηκαν</string>
     <string name="nc_clear_history_warning">Θέλετε πραγματικά να διαγράψετε όλα τα μηνύματα σε αυτήν τη συνομιλία;</string>
     <string name="nc_clear_history_warning">Θέλετε πραγματικά να διαγράψετε όλα τα μηνύματα σε αυτήν τη συνομιλία;</string>
@@ -215,7 +213,6 @@
     <string name="nc_push_to_talk">Push-to-talk</string>
     <string name="nc_push_to_talk">Push-to-talk</string>
     <string name="nc_push_to_talk_desc">Με απενεργοποιημένο το μικρόφωνο, πιέστε και κρατήστε το &amp; για χρήση του Push-to-talk</string>
     <string name="nc_push_to_talk_desc">Με απενεργοποιημένο το μικρόφωνο, πιέστε και κρατήστε το &amp; για χρήση του Push-to-talk</string>
     <string name="nc_remind">Θύμισέ μου αργότερα</string>
     <string name="nc_remind">Θύμισέ μου αργότερα</string>
-    <string name="nc_remove_circle_and_members">Αφαίρεση κύκλων και μελών</string>
     <string name="nc_remove_from_favorites">Αφαίρεση από τα αγαπημένα</string>
     <string name="nc_remove_from_favorites">Αφαίρεση από τα αγαπημένα</string>
     <string name="nc_remove_group_and_members">Αφαίρεση ομάδων και μελών</string>
     <string name="nc_remove_group_and_members">Αφαίρεση ομάδων και μελών</string>
     <string name="nc_remove_participant">Αφαίρεση συμμετέχοντα</string>
     <string name="nc_remove_participant">Αφαίρεση συμμετέχοντα</string>

+ 0 - 3
app/src/main/res/values-es-rEC/strings.xml

@@ -95,8 +95,6 @@
     <string name="nc_certificate_dialog_title">Verifica el certificado</string>
     <string name="nc_certificate_dialog_title">Verifica el certificado</string>
     <string name="nc_certificate_error">Tu configuración de SSL impidió la conexión</string>
     <string name="nc_certificate_error">Tu configuración de SSL impidió la conexión</string>
     <string name="nc_change_cert_auth">Cambiar el certificado de atuenticación</string>
     <string name="nc_change_cert_auth">Cambiar el certificado de atuenticación</string>
-    <string name="nc_circle">Círculo</string>
-    <string name="nc_circles">Círculos</string>
     <string name="nc_clear_history">Borrar todos los mensajes</string>
     <string name="nc_clear_history">Borrar todos los mensajes</string>
     <string name="nc_clear_history_success">Todos los mensajes se han eliminado</string>
     <string name="nc_clear_history_success">Todos los mensajes se han eliminado</string>
     <string name="nc_clear_history_warning">¿Realmente quieres borrar todos los mensajes de esta conversación?</string>
     <string name="nc_clear_history_warning">¿Realmente quieres borrar todos los mensajes de esta conversación?</string>
@@ -269,7 +267,6 @@
     <string name="nc_push_to_talk_desc">Con el microfono deshabilitado, haz click &amp; presiona para usar Presiona-para-hablar</string>
     <string name="nc_push_to_talk_desc">Con el microfono deshabilitado, haz click &amp; presiona para usar Presiona-para-hablar</string>
     <string name="nc_remind">Recuérdame más tarde</string>
     <string name="nc_remind">Recuérdame más tarde</string>
     <string name="nc_remote_audio_off">Audio remoto desactivado</string>
     <string name="nc_remote_audio_off">Audio remoto desactivado</string>
-    <string name="nc_remove_circle_and_members">Eliminar círculo y miembros</string>
     <string name="nc_remove_from_favorites">Eliminar de favoritos</string>
     <string name="nc_remove_from_favorites">Eliminar de favoritos</string>
     <string name="nc_remove_group_and_members">Eliminar grupo y miembros</string>
     <string name="nc_remove_group_and_members">Eliminar grupo y miembros</string>
     <string name="nc_remove_participant">Eliminar participante</string>
     <string name="nc_remove_participant">Eliminar participante</string>

+ 0 - 3
app/src/main/res/values-es/strings.xml

@@ -110,8 +110,6 @@
     <string name="nc_certificate_dialog_title">Comprobar el certificado</string>
     <string name="nc_certificate_dialog_title">Comprobar el certificado</string>
     <string name="nc_certificate_error">Tu configuración SSL impidió la conexión</string>
     <string name="nc_certificate_error">Tu configuración SSL impidió la conexión</string>
     <string name="nc_change_cert_auth">Cambiar certificado de autenticación</string>
     <string name="nc_change_cert_auth">Cambiar certificado de autenticación</string>
-    <string name="nc_circle">Círculo</string>
-    <string name="nc_circles">Círculos</string>
     <string name="nc_clear_history">Borrar todos los mensajes</string>
     <string name="nc_clear_history">Borrar todos los mensajes</string>
     <string name="nc_clear_history_success">Se han eliminado todos los mensajes</string>
     <string name="nc_clear_history_success">Se han eliminado todos los mensajes</string>
     <string name="nc_clear_history_warning">¿Seguro que quieres borrar todos los mensajes en esta conversación?</string>
     <string name="nc_clear_history_warning">¿Seguro que quieres borrar todos los mensajes en esta conversación?</string>
@@ -327,7 +325,6 @@
     <string name="nc_push_to_talk_desc">Con el micrófono deshabilitado, mantén pulsado &amp; para usar Push-to-talk</string>
     <string name="nc_push_to_talk_desc">Con el micrófono deshabilitado, mantén pulsado &amp; para usar Push-to-talk</string>
     <string name="nc_remind">Recuérdamelo más tarde</string>
     <string name="nc_remind">Recuérdamelo más tarde</string>
     <string name="nc_remote_audio_off">Audio remoto apagado</string>
     <string name="nc_remote_audio_off">Audio remoto apagado</string>
-    <string name="nc_remove_circle_and_members">Eliminar círculo y miembros</string>
     <string name="nc_remove_from_favorites">Eliminar de favoritos</string>
     <string name="nc_remove_from_favorites">Eliminar de favoritos</string>
     <string name="nc_remove_group_and_members">Eliminar grupo y miembros</string>
     <string name="nc_remove_group_and_members">Eliminar grupo y miembros</string>
     <string name="nc_remove_participant">Eliminar participante</string>
     <string name="nc_remove_participant">Eliminar participante</string>

+ 0 - 3
app/src/main/res/values-eu/strings.xml

@@ -108,8 +108,6 @@
     <string name="nc_certificate_dialog_title">Egiaztatu ziurtagiria</string>
     <string name="nc_certificate_dialog_title">Egiaztatu ziurtagiria</string>
     <string name="nc_certificate_error">Zure SSL konfigurazioak konexioa eragotzi du</string>
     <string name="nc_certificate_error">Zure SSL konfigurazioak konexioa eragotzi du</string>
     <string name="nc_change_cert_auth">Aldatu autentifikazio ziurtagiria</string>
     <string name="nc_change_cert_auth">Aldatu autentifikazio ziurtagiria</string>
-    <string name="nc_circle">Zirkulua</string>
-    <string name="nc_circles">Zirkuluak</string>
     <string name="nc_clear_history">Ezabatu mezu guztiak</string>
     <string name="nc_clear_history">Ezabatu mezu guztiak</string>
     <string name="nc_clear_history_success">Mezu guztiak ezabatu dira</string>
     <string name="nc_clear_history_success">Mezu guztiak ezabatu dira</string>
     <string name="nc_clear_history_warning">Ziur zaude elkarrizketa honen mezu guztiak ezabatu nahi dituzula?</string>
     <string name="nc_clear_history_warning">Ziur zaude elkarrizketa honen mezu guztiak ezabatu nahi dituzula?</string>
@@ -295,7 +293,6 @@
     <string name="nc_push_to_talk_desc">Mikrofonoa desgaituta daukazunean, egin klik &amp;mantendu sakatzerakoan hitz egiteko</string>
     <string name="nc_push_to_talk_desc">Mikrofonoa desgaituta daukazunean, egin klik &amp;mantendu sakatzerakoan hitz egiteko</string>
     <string name="nc_remind">Gogoratu geroago</string>
     <string name="nc_remind">Gogoratu geroago</string>
     <string name="nc_remote_audio_off">Urruneko audioa itzalita</string>
     <string name="nc_remote_audio_off">Urruneko audioa itzalita</string>
-    <string name="nc_remove_circle_and_members">Kendu taldea eta kideak</string>
     <string name="nc_remove_from_favorites">Kendu gogokoetatik</string>
     <string name="nc_remove_from_favorites">Kendu gogokoetatik</string>
     <string name="nc_remove_group_and_members">Kendu taldea eta kideak</string>
     <string name="nc_remove_group_and_members">Kendu taldea eta kideak</string>
     <string name="nc_remove_participant">Kendu parte-hartzailea</string>
     <string name="nc_remove_participant">Kendu parte-hartzailea</string>

+ 0 - 3
app/src/main/res/values-fa/strings.xml

@@ -99,8 +99,6 @@
     <string name="nc_certificate_dialog_title">گواهی را بررسی کنید</string>
     <string name="nc_certificate_dialog_title">گواهی را بررسی کنید</string>
     <string name="nc_certificate_error">راه اندازی SSL شما مانع از اتصال شد</string>
     <string name="nc_certificate_error">راه اندازی SSL شما مانع از اتصال شد</string>
     <string name="nc_change_cert_auth">گواهی تأیید اعتبار را تغییر دهید</string>
     <string name="nc_change_cert_auth">گواهی تأیید اعتبار را تغییر دهید</string>
-    <string name="nc_circle">حلقه</string>
-    <string name="nc_circles">حلقه ها</string>
     <string name="nc_clear_history">حذف تمام پیام‌ها</string>
     <string name="nc_clear_history">حذف تمام پیام‌ها</string>
     <string name="nc_clear_history_success">تمام پیام‌ها حذف شدند</string>
     <string name="nc_clear_history_success">تمام پیام‌ها حذف شدند</string>
     <string name="nc_clear_history_warning">آیا واقعا می‌خواهید تمام پیام‌ها را در این مکالمه حذف کنید؟</string>
     <string name="nc_clear_history_warning">آیا واقعا می‌خواهید تمام پیام‌ها را در این مکالمه حذف کنید؟</string>
@@ -280,7 +278,6 @@
     <string name="nc_push_to_talk_desc">با غیر فعال کردن میکروفن، برای استفاده از Push-to-talk کلیک &amp; نگه‌داشتن را انجام دهید</string>
     <string name="nc_push_to_talk_desc">با غیر فعال کردن میکروفن، برای استفاده از Push-to-talk کلیک &amp; نگه‌داشتن را انجام دهید</string>
     <string name="nc_remind">بعدا به من یادآوری کن</string>
     <string name="nc_remind">بعدا به من یادآوری کن</string>
     <string name="nc_remote_audio_off">Remote audio off</string>
     <string name="nc_remote_audio_off">Remote audio off</string>
-    <string name="nc_remove_circle_and_members">Remove circle and members</string>
     <string name="nc_remove_from_favorites">حذف کردن از مورد علاقه‌ها</string>
     <string name="nc_remove_from_favorites">حذف کردن از مورد علاقه‌ها</string>
     <string name="nc_remove_group_and_members">Remove group and members</string>
     <string name="nc_remove_group_and_members">Remove group and members</string>
     <string name="nc_remove_participant">شرکت کننده را حذف کنید</string>
     <string name="nc_remove_participant">شرکت کننده را حذف کنید</string>

+ 0 - 3
app/src/main/res/values-fi-rFI/strings.xml

@@ -69,8 +69,6 @@
     <string name="nc_certificate_dialog_title">Tarkista varmenne</string>
     <string name="nc_certificate_dialog_title">Tarkista varmenne</string>
     <string name="nc_certificate_error">SSL-asetukset esti yhteyden</string>
     <string name="nc_certificate_error">SSL-asetukset esti yhteyden</string>
     <string name="nc_change_cert_auth">Vaihda tunnistautumisvarmenne</string>
     <string name="nc_change_cert_auth">Vaihda tunnistautumisvarmenne</string>
-    <string name="nc_circle">Piiri</string>
-    <string name="nc_circles">Piirit</string>
     <string name="nc_clear_history">Poista kaikki viestit</string>
     <string name="nc_clear_history">Poista kaikki viestit</string>
     <string name="nc_clear_history_success">Kaikki viestit poistettiin</string>
     <string name="nc_clear_history_success">Kaikki viestit poistettiin</string>
     <string name="nc_clear_history_warning">Haluatko varmasti poistaa kaikki viestit tästä keskustelusta?</string>
     <string name="nc_clear_history_warning">Haluatko varmasti poistaa kaikki viestit tästä keskustelusta?</string>
@@ -214,7 +212,6 @@
     <string name="nc_push_disabled">Push-ilmoitukset pois käytöstä</string>
     <string name="nc_push_disabled">Push-ilmoitukset pois käytöstä</string>
     <string name="nc_push_to_talk">Paina puhuaksesi</string>
     <string name="nc_push_to_talk">Paina puhuaksesi</string>
     <string name="nc_remind">Muistuta myöhemmin</string>
     <string name="nc_remind">Muistuta myöhemmin</string>
-    <string name="nc_remove_circle_and_members">Poista piiri ja jäsenet</string>
     <string name="nc_remove_from_favorites">Poista suosikeista</string>
     <string name="nc_remove_from_favorites">Poista suosikeista</string>
     <string name="nc_remove_group_and_members">Poista ryhmä ja jäsenet</string>
     <string name="nc_remove_group_and_members">Poista ryhmä ja jäsenet</string>
     <string name="nc_remove_participant">Poista osallistuja</string>
     <string name="nc_remove_participant">Poista osallistuja</string>

+ 6 - 3
app/src/main/res/values-fr/strings.xml

@@ -33,6 +33,7 @@
     <string name="dontClear">Ne pas effacer</string>
     <string name="dontClear">Ne pas effacer</string>
     <string name="edit">Modifier</string>
     <string name="edit">Modifier</string>
     <string name="edit_error_24_hours_old_message">Impossible de modifier des messages plus anciens que 24 heures</string>
     <string name="edit_error_24_hours_old_message">Impossible de modifier des messages plus anciens que 24 heures</string>
+    <string name="edit_message_icon_description">Modifier l\'icône du message</string>
     <string name="emoji_backspace">Retour arrière</string>
     <string name="emoji_backspace">Retour arrière</string>
     <string name="emoji_category_recent">Récent</string>
     <string name="emoji_category_recent">Récent</string>
     <string name="encrypted">Chiffré</string>
     <string name="encrypted">Chiffré</string>
@@ -42,6 +43,7 @@
     <string name="file_list_loading">Chargement…</string>
     <string name="file_list_loading">Chargement…</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="fourHours">4 heures</string>
     <string name="fourHours">4 heures</string>
+    <string name="get_invitations_error">Échec de la récupération des invitations en attente</string>
     <string name="hint_edited_message">(modifié)</string>
     <string name="hint_edited_message">(modifié)</string>
     <string name="invisible">Invisible</string>
     <string name="invisible">Invisible</string>
     <string name="languages_error_message">Les langues n\'ont pas pu être récupérées</string>
     <string name="languages_error_message">Les langues n\'ont pas pu être récupérées</string>
@@ -112,8 +114,6 @@
     <string name="nc_certificate_dialog_title">Vérifier le certificat</string>
     <string name="nc_certificate_dialog_title">Vérifier le certificat</string>
     <string name="nc_certificate_error">Votre configuration SSL a empêché la connexion</string>
     <string name="nc_certificate_error">Votre configuration SSL a empêché la connexion</string>
     <string name="nc_change_cert_auth">Modifier le certificat d\'authentification</string>
     <string name="nc_change_cert_auth">Modifier le certificat d\'authentification</string>
-    <string name="nc_circle">Cercle</string>
-    <string name="nc_circles">Cercles</string>
     <string name="nc_clear_edit_button">effacer le bouton de modification</string>
     <string name="nc_clear_edit_button">effacer le bouton de modification</string>
     <string name="nc_clear_history">Supprimer tous les messages</string>
     <string name="nc_clear_history">Supprimer tous les messages</string>
     <string name="nc_clear_history_success">Tous les messages ont été supprimés</string>
     <string name="nc_clear_history_success">Tous les messages ont été supprimés</string>
@@ -162,6 +162,7 @@
     <string name="nc_diagnose_app_category_title">App</string>
     <string name="nc_diagnose_app_category_title">App</string>
     <string name="nc_diagnose_app_name_title">Nom de l\'application</string>
     <string name="nc_diagnose_app_name_title">Nom de l\'application</string>
     <string name="nc_diagnose_app_users_amount">Utilisateurs enregistrés</string>
     <string name="nc_diagnose_app_users_amount">Utilisateurs enregistrés</string>
+    <string name="nc_diagnose_app_version_title">Version de l\'app</string>
     <string name="nc_diagnose_battery_optimization_title">Paramètres pour la batterie</string>
     <string name="nc_diagnose_battery_optimization_title">Paramètres pour la batterie</string>
     <string name="nc_diagnose_device_name_title">Appareil</string>
     <string name="nc_diagnose_device_name_title">Appareil</string>
     <string name="nc_diagnose_dialog_open_diagnose">Ouvrir l\'écran de diagnostic</string>
     <string name="nc_diagnose_dialog_open_diagnose">Ouvrir l\'écran de diagnostic</string>
@@ -311,10 +312,10 @@
     <string name="nc_push_to_talk_desc">Avec le micro désactivé, cliquez &amp; maintenez pour utiliser la fonction Talkie-walkie.</string>
     <string name="nc_push_to_talk_desc">Avec le micro désactivé, cliquez &amp; maintenez pour utiliser la fonction Talkie-walkie.</string>
     <string name="nc_remind">Rappelez-moi plus tard</string>
     <string name="nc_remind">Rappelez-moi plus tard</string>
     <string name="nc_remote_audio_off">Audio distant en sourdine</string>
     <string name="nc_remote_audio_off">Audio distant en sourdine</string>
-    <string name="nc_remove_circle_and_members">Supprimer le cercle et ses membres</string>
     <string name="nc_remove_from_favorites">Retirer des favoris</string>
     <string name="nc_remove_from_favorites">Retirer des favoris</string>
     <string name="nc_remove_group_and_members">Supprimer un groupe et ses membres</string>
     <string name="nc_remove_group_and_members">Supprimer un groupe et ses membres</string>
     <string name="nc_remove_participant">Retirer le participant</string>
     <string name="nc_remove_participant">Retirer le participant</string>
+    <string name="nc_remove_team_and_members">Supprimer l\'équipe et ses membres</string>
     <string name="nc_rename">Renommer la conversation</string>
     <string name="nc_rename">Renommer la conversation</string>
     <string name="nc_rename_confirm">Renommer</string>
     <string name="nc_rename_confirm">Renommer</string>
     <string name="nc_reply">Répondre</string>
     <string name="nc_reply">Répondre</string>
@@ -432,6 +433,8 @@
     <string name="nc_sort_by">Trier par</string>
     <string name="nc_sort_by">Trier par</string>
     <string name="nc_start_time">Heure de début</string>
     <string name="nc_start_time">Heure de début</string>
     <string name="nc_switch_account">Changer de compte</string>
     <string name="nc_switch_account">Changer de compte</string>
+    <string name="nc_team">Équipe</string>
+    <string name="nc_teams">Équipes</string>
     <string name="nc_upload_choose_local_files">Choisir des fichiers</string>
     <string name="nc_upload_choose_local_files">Choisir des fichiers</string>
     <string name="nc_upload_confirm_send_multiple">Envoyer ces fichiers à %1$s ?</string>
     <string name="nc_upload_confirm_send_multiple">Envoyer ces fichiers à %1$s ?</string>
     <string name="nc_upload_confirm_send_single">Envoyer ce fichier à %1$s ?</string>
     <string name="nc_upload_confirm_send_single">Envoyer ce fichier à %1$s ?</string>

+ 0 - 3
app/src/main/res/values-gl/strings.xml

@@ -108,8 +108,6 @@
     <string name="nc_certificate_dialog_title">Verificar o certificado</string>
     <string name="nc_certificate_dialog_title">Verificar o certificado</string>
     <string name="nc_certificate_error">A súa configuración SSL impediu a conexión</string>
     <string name="nc_certificate_error">A súa configuración SSL impediu a conexión</string>
     <string name="nc_change_cert_auth">Cambiar o certificado de autenticación</string>
     <string name="nc_change_cert_auth">Cambiar o certificado de autenticación</string>
-    <string name="nc_circle">Círculo</string>
-    <string name="nc_circles">Círculos</string>
     <string name="nc_clear_history">Eliminar todas as mensaxes</string>
     <string name="nc_clear_history">Eliminar todas as mensaxes</string>
     <string name="nc_clear_history_success">Elimináronse todas as mensaxes</string>
     <string name="nc_clear_history_success">Elimináronse todas as mensaxes</string>
     <string name="nc_clear_history_warning">Confirma que quere eliminar todas as mensaxes desta conversa?</string>
     <string name="nc_clear_history_warning">Confirma que quere eliminar todas as mensaxes desta conversa?</string>
@@ -293,7 +291,6 @@
     <string name="nc_push_to_talk_desc">Co microfono desactivado, prema e manteña para usar a función «Prema para falar»</string>
     <string name="nc_push_to_talk_desc">Co microfono desactivado, prema e manteña para usar a función «Prema para falar»</string>
     <string name="nc_remind">Lembrarmo más adiante</string>
     <string name="nc_remind">Lembrarmo más adiante</string>
     <string name="nc_remote_audio_off">Son remoto desactivado</string>
     <string name="nc_remote_audio_off">Son remoto desactivado</string>
-    <string name="nc_remove_circle_and_members">Retirar círculo e membros</string>
     <string name="nc_remove_from_favorites">Retirar de favoritos</string>
     <string name="nc_remove_from_favorites">Retirar de favoritos</string>
     <string name="nc_remove_group_and_members">Retirar grupo e membros</string>
     <string name="nc_remove_group_and_members">Retirar grupo e membros</string>
     <string name="nc_remove_participant">Retirar participante</string>
     <string name="nc_remove_participant">Retirar participante</string>

+ 0 - 3
app/src/main/res/values-hr/strings.xml

@@ -72,8 +72,6 @@
     <string name="nc_certificate_dialog_title">Pogledaj vjerodajnicu</string>
     <string name="nc_certificate_dialog_title">Pogledaj vjerodajnicu</string>
     <string name="nc_certificate_error">Vezu je onemogućila vaša postavka SSL-a</string>
     <string name="nc_certificate_error">Vezu je onemogućila vaša postavka SSL-a</string>
     <string name="nc_change_cert_auth">Promijeni vjerodajnicu za autentifikaciju</string>
     <string name="nc_change_cert_auth">Promijeni vjerodajnicu za autentifikaciju</string>
-    <string name="nc_circle">Krug</string>
-    <string name="nc_circles">Krugovi</string>
     <string name="nc_clear_history">Izbriši sve poruke</string>
     <string name="nc_clear_history">Izbriši sve poruke</string>
     <string name="nc_clear_history_success">Izbrisane su sve poruke</string>
     <string name="nc_clear_history_success">Izbrisane su sve poruke</string>
     <string name="nc_clear_history_warning">Želite li zaista izbrisati sve poruke u ovom razgovoru?</string>
     <string name="nc_clear_history_warning">Želite li zaista izbrisati sve poruke u ovom razgovoru?</string>
@@ -217,7 +215,6 @@
     <string name="nc_push_to_talk_desc">Kada je mikrofon onemogućen, kliknite i držite za uporabu značajke Pritisni za govor</string>
     <string name="nc_push_to_talk_desc">Kada je mikrofon onemogućen, kliknite i držite za uporabu značajke Pritisni za govor</string>
     <string name="nc_remind">Podsjeti me kasnije</string>
     <string name="nc_remind">Podsjeti me kasnije</string>
     <string name="nc_remote_audio_off">Udaljeno isključivanje zvuka</string>
     <string name="nc_remote_audio_off">Udaljeno isključivanje zvuka</string>
-    <string name="nc_remove_circle_and_members">Ukloni krug i članove</string>
     <string name="nc_remove_from_favorites">Ukloni iz favorita</string>
     <string name="nc_remove_from_favorites">Ukloni iz favorita</string>
     <string name="nc_remove_group_and_members">Ukloni grupu i članove</string>
     <string name="nc_remove_group_and_members">Ukloni grupu i članove</string>
     <string name="nc_remove_participant">Ukloni sudionika</string>
     <string name="nc_remove_participant">Ukloni sudionika</string>

+ 0 - 3
app/src/main/res/values-hu-rHU/strings.xml

@@ -103,8 +103,6 @@
     <string name="nc_certificate_dialog_title">Ellenőrizze a tanúsítványt</string>
     <string name="nc_certificate_dialog_title">Ellenőrizze a tanúsítványt</string>
     <string name="nc_certificate_error">Az SSL beállítás megakadályozta a kapcsolódást</string>
     <string name="nc_certificate_error">Az SSL beállítás megakadályozta a kapcsolódást</string>
     <string name="nc_change_cert_auth">Hitelesítési tanúsítvány módosítása</string>
     <string name="nc_change_cert_auth">Hitelesítési tanúsítvány módosítása</string>
-    <string name="nc_circle">Kör</string>
-    <string name="nc_circles">Körök</string>
     <string name="nc_clear_history">Összes üzenet törlése</string>
     <string name="nc_clear_history">Összes üzenet törlése</string>
     <string name="nc_clear_history_success">Az összes üzenet törölve lett</string>
     <string name="nc_clear_history_success">Az összes üzenet törölve lett</string>
     <string name="nc_clear_history_warning">Biztos, hogy törli a beszélgetés összes üzenetét?</string>
     <string name="nc_clear_history_warning">Biztos, hogy törli a beszélgetés összes üzenetét?</string>
@@ -283,7 +281,6 @@
     <string name="nc_push_to_talk_desc">A mikrofon le lesz tiltva, a beszédhez tartsa lenyomva</string>
     <string name="nc_push_to_talk_desc">A mikrofon le lesz tiltva, a beszédhez tartsa lenyomva</string>
     <string name="nc_remind">Emlékeztessen később</string>
     <string name="nc_remind">Emlékeztessen később</string>
     <string name="nc_remote_audio_off">Távoli hang kikapcsolása</string>
     <string name="nc_remote_audio_off">Távoli hang kikapcsolása</string>
-    <string name="nc_remove_circle_and_members">Kör és tagok eltávolítása</string>
     <string name="nc_remove_from_favorites">Eltávolítás a kedvencekből</string>
     <string name="nc_remove_from_favorites">Eltávolítás a kedvencekből</string>
     <string name="nc_remove_group_and_members">Csoport és tagok eltávolítása</string>
     <string name="nc_remove_group_and_members">Csoport és tagok eltávolítása</string>
     <string name="nc_remove_participant">Résztvevő eltávolítása</string>
     <string name="nc_remove_participant">Résztvevő eltávolítása</string>

+ 0 - 2
app/src/main/res/values-is/strings.xml

@@ -52,8 +52,6 @@
     <string name="nc_certificate_dialog_title">Sannreyna skilríkið</string>
     <string name="nc_certificate_dialog_title">Sannreyna skilríkið</string>
     <string name="nc_certificate_error">SSL-uppsetningin þín kom í veg fyrir tengingu</string>
     <string name="nc_certificate_error">SSL-uppsetningin þín kom í veg fyrir tengingu</string>
     <string name="nc_change_cert_auth">Skipta um skilríki fyrir auðkenningu</string>
     <string name="nc_change_cert_auth">Skipta um skilríki fyrir auðkenningu</string>
-    <string name="nc_circle">Hringur</string>
-    <string name="nc_circles">Hringir</string>
     <string name="nc_client_cert_change">Skipta um skilríki biðlara</string>
     <string name="nc_client_cert_change">Skipta um skilríki biðlara</string>
     <string name="nc_client_cert_setup">Setja upp skilríki biðlara</string>
     <string name="nc_client_cert_setup">Setja upp skilríki biðlara</string>
     <string name="nc_common_copy">Afrita</string>
     <string name="nc_common_copy">Afrita</string>

+ 0 - 3
app/src/main/res/values-it/strings.xml

@@ -85,8 +85,6 @@
     <string name="nc_certificate_dialog_title">Controlla il certificato</string>
     <string name="nc_certificate_dialog_title">Controlla il certificato</string>
     <string name="nc_certificate_error">La tua configurazione SSL ha impedito la connessione</string>
     <string name="nc_certificate_error">La tua configurazione SSL ha impedito la connessione</string>
     <string name="nc_change_cert_auth">Cambia certificato di autenticazione</string>
     <string name="nc_change_cert_auth">Cambia certificato di autenticazione</string>
-    <string name="nc_circle">Cerchia</string>
-    <string name="nc_circles">Cerchie</string>
     <string name="nc_clear_history">Elimina tutti i messaggi</string>
     <string name="nc_clear_history">Elimina tutti i messaggi</string>
     <string name="nc_clear_history_success">Tutti i messaggi sono stati eliminati</string>
     <string name="nc_clear_history_success">Tutti i messaggi sono stati eliminati</string>
     <string name="nc_clear_history_warning">Vuoi davvero eliminare tutti i messaggi in questa conversazione?</string>
     <string name="nc_clear_history_warning">Vuoi davvero eliminare tutti i messaggi in questa conversazione?</string>
@@ -239,7 +237,6 @@
     <string name="nc_push_to_talk_desc">Con il microfono disabilitato, fai clic e mantieni per utilizzare Premi per parlare</string>
     <string name="nc_push_to_talk_desc">Con il microfono disabilitato, fai clic e mantieni per utilizzare Premi per parlare</string>
     <string name="nc_remind">Ricordamelo più tardi</string>
     <string name="nc_remind">Ricordamelo più tardi</string>
     <string name="nc_remote_audio_off">Audio remoto spento</string>
     <string name="nc_remote_audio_off">Audio remoto spento</string>
-    <string name="nc_remove_circle_and_members">Rimuovi cerchia e membri</string>
     <string name="nc_remove_from_favorites">Rimuovi dai preferiti</string>
     <string name="nc_remove_from_favorites">Rimuovi dai preferiti</string>
     <string name="nc_remove_group_and_members">Rimuovi gruppo e membri</string>
     <string name="nc_remove_group_and_members">Rimuovi gruppo e membri</string>
     <string name="nc_remove_participant">Rimuovi partecipante</string>
     <string name="nc_remove_participant">Rimuovi partecipante</string>

+ 0 - 3
app/src/main/res/values-ja-rJP/strings.xml

@@ -81,8 +81,6 @@
     <string name="nc_certificate_dialog_title">証明書をチェックアウトする</string>
     <string name="nc_certificate_dialog_title">証明書をチェックアウトする</string>
     <string name="nc_certificate_error">SSL設定で接続が妨げられました</string>
     <string name="nc_certificate_error">SSL設定で接続が妨げられました</string>
     <string name="nc_change_cert_auth">認証証明書を変更する</string>
     <string name="nc_change_cert_auth">認証証明書を変更する</string>
-    <string name="nc_circle">サークル</string>
-    <string name="nc_circles">サークル</string>
     <string name="nc_clear_history">すべてのメッセージを削除</string>
     <string name="nc_clear_history">すべてのメッセージを削除</string>
     <string name="nc_clear_history_success">すべてのメッセージが削除されたました。</string>
     <string name="nc_clear_history_success">すべてのメッセージが削除されたました。</string>
     <string name="nc_clear_history_warning">本当にこの会話の全てのメッセージを削除してもよろしいですか?</string>
     <string name="nc_clear_history_warning">本当にこの会話の全てのメッセージを削除してもよろしいですか?</string>
@@ -234,7 +232,6 @@
     <string name="nc_push_to_talk_desc">マイクを無効にして、プッシュツートークを使用する場合は &amp; ホールド</string>
     <string name="nc_push_to_talk_desc">マイクを無効にして、プッシュツートークを使用する場合は &amp; ホールド</string>
     <string name="nc_remind">後で通知する</string>
     <string name="nc_remind">後で通知する</string>
     <string name="nc_remote_audio_off">リモート音声オフ</string>
     <string name="nc_remote_audio_off">リモート音声オフ</string>
-    <string name="nc_remove_circle_and_members">サークルとメンバーを削除</string>
     <string name="nc_remove_from_favorites">お気に入りから削除</string>
     <string name="nc_remove_from_favorites">お気に入りから削除</string>
     <string name="nc_remove_group_and_members">メンバーとグループを削除</string>
     <string name="nc_remove_group_and_members">メンバーとグループを削除</string>
     <string name="nc_remove_participant">参加者を削除</string>
     <string name="nc_remove_participant">参加者を削除</string>

+ 0 - 3
app/src/main/res/values-ko/strings.xml

@@ -87,8 +87,6 @@
     <string name="nc_certificate_dialog_title">인증서 확인</string>
     <string name="nc_certificate_dialog_title">인증서 확인</string>
     <string name="nc_certificate_error">SSL 설정에서 연결을 거부함</string>
     <string name="nc_certificate_error">SSL 설정에서 연결을 거부함</string>
     <string name="nc_change_cert_auth">인증서 변경</string>
     <string name="nc_change_cert_auth">인증서 변경</string>
-    <string name="nc_circle">서클</string>
-    <string name="nc_circles">서클</string>
     <string name="nc_clear_history">모든 메시지 삭제</string>
     <string name="nc_clear_history">모든 메시지 삭제</string>
     <string name="nc_clear_history_success">모든 메시지가 삭제되었습니다.</string>
     <string name="nc_clear_history_success">모든 메시지가 삭제되었습니다.</string>
     <string name="nc_clear_history_warning">이 대화에서 모든 메시지를 삭제하시겠습니까?</string>
     <string name="nc_clear_history_warning">이 대화에서 모든 메시지를 삭제하시겠습니까?</string>
@@ -250,7 +248,6 @@
     <string name="nc_push_to_talk_desc">마이크가 비활성화된 상태에서 &amp;를 누르고 있으면 눌러 말하기 사용</string>
     <string name="nc_push_to_talk_desc">마이크가 비활성화된 상태에서 &amp;를 누르고 있으면 눌러 말하기 사용</string>
     <string name="nc_remind">나중에 다시 알림</string>
     <string name="nc_remind">나중에 다시 알림</string>
     <string name="nc_remote_audio_off">원격 오디오 끄기</string>
     <string name="nc_remote_audio_off">원격 오디오 끄기</string>
-    <string name="nc_remove_circle_and_members">서클과 구성원 제거</string>
     <string name="nc_remove_from_favorites">즐겨찾기에서 제거</string>
     <string name="nc_remove_from_favorites">즐겨찾기에서 제거</string>
     <string name="nc_remove_group_and_members">Remove group and members</string>
     <string name="nc_remove_group_and_members">Remove group and members</string>
     <string name="nc_remove_participant">참가자 삭제</string>
     <string name="nc_remove_participant">참가자 삭제</string>

+ 0 - 2
app/src/main/res/values-lt-rLT/strings.xml

@@ -55,8 +55,6 @@
     <string name="nc_certificate_dialog_text">Ar pasitikite iki šiol nežinomu SSL liudijimu, kurį išdavė %1$s, kuris skirtas %2$s ir galioja nuo %3$s iki %4$s?</string>
     <string name="nc_certificate_dialog_text">Ar pasitikite iki šiol nežinomu SSL liudijimu, kurį išdavė %1$s, kuris skirtas %2$s ir galioja nuo %3$s iki %4$s?</string>
     <string name="nc_certificate_error">Jūsų SSL sąranka neleido ryšio</string>
     <string name="nc_certificate_error">Jūsų SSL sąranka neleido ryšio</string>
     <string name="nc_change_cert_auth">Keisti tapatybės nustatymo liudijimą</string>
     <string name="nc_change_cert_auth">Keisti tapatybės nustatymo liudijimą</string>
-    <string name="nc_circle">Ratas</string>
-    <string name="nc_circles">Ratai</string>
     <string name="nc_client_cert_change">Keisti kliento programėlės liudijimą</string>
     <string name="nc_client_cert_change">Keisti kliento programėlės liudijimą</string>
     <string name="nc_client_cert_setup">Nustatyti kliento programėlės liudijimą</string>
     <string name="nc_client_cert_setup">Nustatyti kliento programėlės liudijimą</string>
     <string name="nc_common_and">ir</string>
     <string name="nc_common_and">ir</string>

+ 5 - 4
app/src/main/res/values-nb-rNO/strings.xml

@@ -22,7 +22,7 @@
     <string name="clear_status_message_after">Fjern statusmelding etter</string>
     <string name="clear_status_message_after">Fjern statusmelding etter</string>
     <string name="close">Lukk</string>
     <string name="close">Lukk</string>
     <string name="continuous_voice_message_recording">Lås opptak for kontinuerlig opptak av talemeldingen</string>
     <string name="continuous_voice_message_recording">Lås opptak for kontinuerlig opptak av talemeldingen</string>
-    <string name="conversation_is_read_only">Denne samtalen er skrivebeskyttet</string>
+    <string name="conversation_is_read_only">Samtalen kan kun leses</string>
     <string name="conversations">Samtaler</string>
     <string name="conversations">Samtaler</string>
     <string name="create_conversation">Opprett samtale</string>
     <string name="create_conversation">Opprett samtale</string>
     <string name="create_issue">Opprett problem</string>
     <string name="create_issue">Opprett problem</string>
@@ -44,6 +44,7 @@
     <string name="file_list_loading">Laster ...</string>
     <string name="file_list_loading">Laster ...</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="fourHours">4 timer</string>
     <string name="fourHours">4 timer</string>
+    <string name="get_invitations_error">Henting av ventende invitasjoner feilet</string>
     <string name="hint_edited_message">(redigert)</string>
     <string name="hint_edited_message">(redigert)</string>
     <string name="invisible">Usynlig</string>
     <string name="invisible">Usynlig</string>
     <string name="languages_error_message">Språk kunne ikke hentes</string>
     <string name="languages_error_message">Språk kunne ikke hentes</string>
@@ -114,8 +115,6 @@
     <string name="nc_certificate_dialog_title">Sjekk sertifikatet</string>
     <string name="nc_certificate_dialog_title">Sjekk sertifikatet</string>
     <string name="nc_certificate_error">Ditt SSL-oppsett forhindret tilkobling</string>
     <string name="nc_certificate_error">Ditt SSL-oppsett forhindret tilkobling</string>
     <string name="nc_change_cert_auth">Endre sertifikat for autentisering</string>
     <string name="nc_change_cert_auth">Endre sertifikat for autentisering</string>
-    <string name="nc_circle">Sirkel</string>
-    <string name="nc_circles">Sirkler</string>
     <string name="nc_clear_edit_button">tøm redigeringsknapp</string>
     <string name="nc_clear_edit_button">tøm redigeringsknapp</string>
     <string name="nc_clear_edit_message">Fjern redigeringsmelding</string>
     <string name="nc_clear_edit_message">Fjern redigeringsmelding</string>
     <string name="nc_clear_history">Slett alle meldinger</string>
     <string name="nc_clear_history">Slett alle meldinger</string>
@@ -341,10 +340,10 @@
     <string name="nc_push_to_talk_desc">Med mikrofonen avslått, klikk &amp; hold for å bruke klikk-for-å-snakke</string>
     <string name="nc_push_to_talk_desc">Med mikrofonen avslått, klikk &amp; hold for å bruke klikk-for-å-snakke</string>
     <string name="nc_remind">Påminnn meg senere</string>
     <string name="nc_remind">Påminnn meg senere</string>
     <string name="nc_remote_audio_off">Ekstern lyd av</string>
     <string name="nc_remote_audio_off">Ekstern lyd av</string>
-    <string name="nc_remove_circle_and_members">Fjern sirkel og medlemmer</string>
     <string name="nc_remove_from_favorites">Fjern fra favoritter</string>
     <string name="nc_remove_from_favorites">Fjern fra favoritter</string>
     <string name="nc_remove_group_and_members">Fjern gruppe og medlemmer</string>
     <string name="nc_remove_group_and_members">Fjern gruppe og medlemmer</string>
     <string name="nc_remove_participant">Fjern deltaker</string>
     <string name="nc_remove_participant">Fjern deltaker</string>
+    <string name="nc_remove_team_and_members">Fjern lag og medlemmer</string>
     <string name="nc_rename">Endre navn på samtale</string>
     <string name="nc_rename">Endre navn på samtale</string>
     <string name="nc_rename_confirm">Endre navn</string>
     <string name="nc_rename_confirm">Endre navn</string>
     <string name="nc_reply">Svar</string>
     <string name="nc_reply">Svar</string>
@@ -467,6 +466,8 @@
     <string name="nc_sort_by">Sorter etter</string>
     <string name="nc_sort_by">Sorter etter</string>
     <string name="nc_start_time">Start tidspunkt</string>
     <string name="nc_start_time">Start tidspunkt</string>
     <string name="nc_switch_account">Bytt konto</string>
     <string name="nc_switch_account">Bytt konto</string>
+    <string name="nc_team">Lag</string>
+    <string name="nc_teams">Lag</string>
     <string name="nc_upload_choose_local_files">Velg filer</string>
     <string name="nc_upload_choose_local_files">Velg filer</string>
     <string name="nc_upload_confirm_send_multiple">Sende disse filene til %1$s?</string>
     <string name="nc_upload_confirm_send_multiple">Sende disse filene til %1$s?</string>
     <string name="nc_upload_confirm_send_single">Sende denne filen til %1$s?</string>
     <string name="nc_upload_confirm_send_single">Sende denne filen til %1$s?</string>

+ 0 - 3
app/src/main/res/values-nl/strings.xml

@@ -85,8 +85,6 @@
     <string name="nc_certificate_dialog_title">Controleer het certificaat</string>
     <string name="nc_certificate_dialog_title">Controleer het certificaat</string>
     <string name="nc_certificate_error">Je SSL-instellingen blokkeerden de verbinding</string>
     <string name="nc_certificate_error">Je SSL-instellingen blokkeerden de verbinding</string>
     <string name="nc_change_cert_auth">Authenticatiecertificaat veranderen</string>
     <string name="nc_change_cert_auth">Authenticatiecertificaat veranderen</string>
-    <string name="nc_circle">Kring</string>
-    <string name="nc_circles">Kringen</string>
     <string name="nc_clear_history">Alle berichten verwijderen</string>
     <string name="nc_clear_history">Alle berichten verwijderen</string>
     <string name="nc_clear_history_success">Alle berichten zijn verwijderd</string>
     <string name="nc_clear_history_success">Alle berichten zijn verwijderd</string>
     <string name="nc_clear_history_warning">Wil je echt dit alle andere berichten in dit gesprek echt verwijderen?</string>
     <string name="nc_clear_history_warning">Wil je echt dit alle andere berichten in dit gesprek echt verwijderen?</string>
@@ -240,7 +238,6 @@ Kies er eentje van een provider.</string>
     <string name="nc_push_to_talk_desc">Met uitgeschakelde microfoon, klik&amp;indrukken om Druk-om-te-praten te gebruiken</string>
     <string name="nc_push_to_talk_desc">Met uitgeschakelde microfoon, klik&amp;indrukken om Druk-om-te-praten te gebruiken</string>
     <string name="nc_remind">Herinner me later</string>
     <string name="nc_remind">Herinner me later</string>
     <string name="nc_remote_audio_off">Externe audio uit</string>
     <string name="nc_remote_audio_off">Externe audio uit</string>
-    <string name="nc_remove_circle_and_members">Verwijderen kring en leden</string>
     <string name="nc_remove_from_favorites">Verwijderen uit favorieten</string>
     <string name="nc_remove_from_favorites">Verwijderen uit favorieten</string>
     <string name="nc_remove_group_and_members">Verwijderen groep en leden</string>
     <string name="nc_remove_group_and_members">Verwijderen groep en leden</string>
     <string name="nc_remove_participant">Verwijder deelnemer</string>
     <string name="nc_remove_participant">Verwijder deelnemer</string>

+ 0 - 3
app/src/main/res/values-pl/strings.xml

@@ -108,8 +108,6 @@
     <string name="nc_certificate_dialog_title">Sprawdź certyfikat</string>
     <string name="nc_certificate_dialog_title">Sprawdź certyfikat</string>
     <string name="nc_certificate_error">Twoje ustawienia SSL uniemożliwiają połaczenie</string>
     <string name="nc_certificate_error">Twoje ustawienia SSL uniemożliwiają połaczenie</string>
     <string name="nc_change_cert_auth">Zmień certyfikat uwierzytelnienia</string>
     <string name="nc_change_cert_auth">Zmień certyfikat uwierzytelnienia</string>
-    <string name="nc_circle">Krąg</string>
-    <string name="nc_circles">Kręgi</string>
     <string name="nc_clear_history">Usuń wszystkie wiadomości</string>
     <string name="nc_clear_history">Usuń wszystkie wiadomości</string>
     <string name="nc_clear_history_success">Wszystkie wiadomości zostały usunięte</string>
     <string name="nc_clear_history_success">Wszystkie wiadomości zostały usunięte</string>
     <string name="nc_clear_history_warning">Czy na pewno chcesz usunąć wszystkie wiadomości z tej rozmowy?</string>
     <string name="nc_clear_history_warning">Czy na pewno chcesz usunąć wszystkie wiadomości z tej rozmowy?</string>
@@ -293,7 +291,6 @@
     <string name="nc_push_to_talk_desc">Gdy mikrofon jest wyłączony, kliknij i przytrzymaj, aby użyć funkcji \"Naciśnij i mów\"</string>
     <string name="nc_push_to_talk_desc">Gdy mikrofon jest wyłączony, kliknij i przytrzymaj, aby użyć funkcji \"Naciśnij i mów\"</string>
     <string name="nc_remind">Przypomnij mi później</string>
     <string name="nc_remind">Przypomnij mi później</string>
     <string name="nc_remote_audio_off">Zdalne wyłączenie dźwięku</string>
     <string name="nc_remote_audio_off">Zdalne wyłączenie dźwięku</string>
-    <string name="nc_remove_circle_and_members">Usuń krąg i członków</string>
     <string name="nc_remove_from_favorites">Usuń z ulubionych</string>
     <string name="nc_remove_from_favorites">Usuń z ulubionych</string>
     <string name="nc_remove_group_and_members">Usuń grupę i członków</string>
     <string name="nc_remove_group_and_members">Usuń grupę i członków</string>
     <string name="nc_remove_participant">Usuń uczestnika</string>
     <string name="nc_remove_participant">Usuń uczestnika</string>

+ 56 - 3
app/src/main/res/values-pt-rBR/strings.xml

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
   <resources>
   <resources>
     <string name="account_icon">Ícone da conta</string>
     <string name="account_icon">Ícone da conta</string>
+    <string name="add_to_notes">Adicionar às Notas</string>
     <string name="added_to_favorites">Conversa adicionada %1$s para favoritos</string>
     <string name="added_to_favorites">Conversa adicionada %1$s para favoritos</string>
     <string name="appbar_search_in">Pesquisar em %s</string>
     <string name="appbar_search_in">Pesquisar em %s</string>
     <string name="audio_call">Chamada de áudio</string>
     <string name="audio_call">Chamada de áudio</string>
@@ -21,8 +22,10 @@
     <string name="clear_status_message_after">Limpar mensagem de status após</string>
     <string name="clear_status_message_after">Limpar mensagem de status após</string>
     <string name="close">Fechar</string>
     <string name="close">Fechar</string>
     <string name="continuous_voice_message_recording">Gravação de bloqueio para gravação contínua da mensagem de voz</string>
     <string name="continuous_voice_message_recording">Gravação de bloqueio para gravação contínua da mensagem de voz</string>
+    <string name="conversation_is_read_only">A conversa é somente leitura</string>
     <string name="conversations">Conversas</string>
     <string name="conversations">Conversas</string>
     <string name="create_conversation">Criando conversa</string>
     <string name="create_conversation">Criando conversa</string>
+    <string name="create_issue">Criar problema</string>
     <string name="custom">Personalizar</string>
     <string name="custom">Personalizar</string>
     <string name="danger_zone">Zona de perigo</string>
     <string name="danger_zone">Zona de perigo</string>
     <string name="delete_avatar">Excluir avatar</string>
     <string name="delete_avatar">Excluir avatar</string>
@@ -30,6 +33,8 @@
     <string name="dnd">Não perturbe</string>
     <string name="dnd">Não perturbe</string>
     <string name="dontClear">Não limpe</string>
     <string name="dontClear">Não limpe</string>
     <string name="edit">Editar</string>
     <string name="edit">Editar</string>
+    <string name="edit_error_24_hours_old_message">Não é possível editar mensagens com mais de 24 horas</string>
+    <string name="edit_message_icon_description">Editar ícone de mensagem</string>
     <string name="emoji_backspace">Retroceder</string>
     <string name="emoji_backspace">Retroceder</string>
     <string name="emoji_category_recent">Recente</string>
     <string name="emoji_category_recent">Recente</string>
     <string name="encrypted">Criptografado</string>
     <string name="encrypted">Criptografado</string>
@@ -39,6 +44,7 @@
     <string name="file_list_loading">Carregando …</string>
     <string name="file_list_loading">Carregando …</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="fourHours">4 horas</string>
     <string name="fourHours">4 horas</string>
+    <string name="get_invitations_error">Falha ao buscar convites pendentes</string>
     <string name="hint_edited_message">(editado)</string>
     <string name="hint_edited_message">(editado)</string>
     <string name="invisible">Invisível</string>
     <string name="invisible">Invisível</string>
     <string name="languages_error_message">Não foi possível recuperar os idiomas</string>
     <string name="languages_error_message">Não foi possível recuperar os idiomas</string>
@@ -109,8 +115,8 @@
     <string name="nc_certificate_dialog_title">Confira o certificado</string>
     <string name="nc_certificate_dialog_title">Confira o certificado</string>
     <string name="nc_certificate_error">Sua configuração SSL impediu a conexão</string>
     <string name="nc_certificate_error">Sua configuração SSL impediu a conexão</string>
     <string name="nc_change_cert_auth">Alterar certificado de autenticação</string>
     <string name="nc_change_cert_auth">Alterar certificado de autenticação</string>
-    <string name="nc_circle">Círculo</string>
-    <string name="nc_circles">Círculos</string>
+    <string name="nc_clear_edit_button">limpar botão Editar</string>
+    <string name="nc_clear_edit_message">Limpar Editar Mensagem</string>
     <string name="nc_clear_history">Excluir todas as mensagens </string>
     <string name="nc_clear_history">Excluir todas as mensagens </string>
     <string name="nc_clear_history_success">Todas as mensagens foram apagadas </string>
     <string name="nc_clear_history_success">Todas as mensagens foram apagadas </string>
     <string name="nc_clear_history_warning">Tem certeza de que deseja excluir todas as mensagens desta conversa? </string>
     <string name="nc_clear_history_warning">Tem certeza de que deseja excluir todas as mensagens desta conversa? </string>
@@ -134,6 +140,7 @@
     <string name="nc_conversation_menu_conversation_info">Informação da conversa</string>
     <string name="nc_conversation_menu_conversation_info">Informação da conversa</string>
     <string name="nc_conversation_menu_video_call">Chamada de vídeo</string>
     <string name="nc_conversation_menu_video_call">Chamada de vídeo</string>
     <string name="nc_conversation_menu_voice_call">Chamada de voz</string>
     <string name="nc_conversation_menu_voice_call">Chamada de voz</string>
+    <string name="nc_conversation_not_found">Conversa não encontrada</string>
     <string name="nc_conversations_empty">Junte-se a uma conversa ou inicie uma nova</string>
     <string name="nc_conversations_empty">Junte-se a uma conversa ou inicie uma nova</string>
     <string name="nc_conversations_empty_details">Diga olá para seus amigos e colegas!</string>
     <string name="nc_conversations_empty_details">Diga olá para seus amigos e colegas!</string>
     <string name="nc_copy_message">Copiar</string>
     <string name="nc_copy_message">Copiar</string>
@@ -152,16 +159,43 @@
     <string name="nc_description_send_message_button">Enviar mensagem</string>
     <string name="nc_description_send_message_button">Enviar mensagem</string>
     <string name="nc_diagnose_account_category_title">Conta atual</string>
     <string name="nc_diagnose_account_category_title">Conta atual</string>
     <string name="nc_diagnose_account_server">Servidor</string>
     <string name="nc_diagnose_account_server">Servidor</string>
+    <string name="nc_diagnose_account_server_notification_app">Aplicativo de notificação do servidor instalado?</string>
     <string name="nc_diagnose_account_user_name">Usuário</string>
     <string name="nc_diagnose_account_user_name">Usuário</string>
+    <string name="nc_diagnose_account_user_status_enabled">Status do usuário ativado?</string>
     <string name="nc_diagnose_android_version_title">Versão do Android</string>
     <string name="nc_diagnose_android_version_title">Versão do Android</string>
     <string name="nc_diagnose_app_category_title">Aplicativo</string>
     <string name="nc_diagnose_app_category_title">Aplicativo</string>
     <string name="nc_diagnose_app_name_title">Nome do aplicativo</string>
     <string name="nc_diagnose_app_name_title">Nome do aplicativo</string>
     <string name="nc_diagnose_app_users_amount">Usuários registrados</string>
     <string name="nc_diagnose_app_users_amount">Usuários registrados</string>
+    <string name="nc_diagnose_app_version_title">Versão do aplicativo</string>
+    <string name="nc_diagnose_battery_optimization_ignored">A otimização da bateria é ignorada, tudo bem</string>
+    <string name="nc_diagnose_battery_optimization_not_ignored">A otimização da bateria não é ignorada. Isso deveria ser mudado!</string>
     <string name="nc_diagnose_battery_optimization_title">Configurações da bateria</string>
     <string name="nc_diagnose_battery_optimization_title">Configurações da bateria</string>
     <string name="nc_diagnose_device_name_title">Dispositivo</string>
     <string name="nc_diagnose_device_name_title">Dispositivo</string>
+    <string name="nc_diagnose_dialog_open_checklist">Abrir lista de verificação de solução de problemas</string>
+    <string name="nc_diagnose_dialog_open_diagnose">Abrir tela de diagnóstico</string>
+    <string name="nc_diagnose_dialog_open_dontkillmyapp_website">Abra dontkillmyapp.com</string>
+    <string name="nc_diagnose_firebase_push_token_latest_fetch">Última busca de token push do Firebase</string>
+    <string name="nc_diagnose_firebase_push_token_latest_generated">Última geração de token push do Firebase</string>
+    <string name="nc_diagnose_firebase_push_token_missing">Nenhum token push do Firebase definido. Por favor, crie um relatório de bug.</string>
+    <string name="nc_diagnose_firebase_push_token_title">Token de envio do Firebase</string>
+    <string name="nc_diagnose_gplay_available_no">Os serviços do Google Play não estão disponíveis. Notificações não são suportadas</string>
+    <string name="nc_diagnose_gplay_available_title">Serviços do Google Play</string>
+    <string name="nc_diagnose_gplay_available_yes">Os serviços do Google Play estão disponíveis</string>
+    <string name="nc_diagnose_latest_push_registration_at_push_proxy">Último registro push no push proxy</string>
+    <string name="nc_diagnose_latest_push_registration_at_push_proxy_fail">Ainda não registrado no push proxy</string>
+    <string name="nc_diagnose_latest_push_registration_at_server">Último registro push no servidor</string>
+    <string name="nc_diagnose_latest_push_registration_at_server_fail">Ainda não cadastrado no servidor</string>
+    <string name="nc_diagnose_meta_category_title">Meta informação</string>
+    <string name="nc_diagnose_meta_system_report_date">Geração de relatório do sistema</string>
+    <string name="nc_diagnose_notification_calls_channel_permission">Canal de notificação de chamadas ativado?</string>
+    <string name="nc_diagnose_notification_messages_channel_permission">Canal de notificação de mensagens ativado?</string>
+    <string name="nc_diagnose_notification_permission">Permissões de notificação</string>
     <string name="nc_diagnose_phone_category_title">Celular</string>
     <string name="nc_diagnose_phone_category_title">Celular</string>
+    <string name="nc_diagnose_server_talk_version">Versão do Server Talk</string>
+    <string name="nc_diagnose_server_version">Versão do servidor</string>
     <string name="nc_diagnose_signaling_mode_extern">Externo</string>
     <string name="nc_diagnose_signaling_mode_extern">Externo</string>
     <string name="nc_diagnose_signaling_mode_intern">Interno</string>
     <string name="nc_diagnose_signaling_mode_intern">Interno</string>
+    <string name="nc_diagnose_signaling_mode_title">Modo de sinalização</string>
     <string name="nc_dialog_invalid_password">Senha inválida</string>
     <string name="nc_dialog_invalid_password">Senha inválida</string>
     <string name="nc_dialog_maintenance_mode">Modo de manutenção</string>
     <string name="nc_dialog_maintenance_mode">Modo de manutenção</string>
     <string name="nc_dialog_maintenance_mode_description">O servidor está atualmente em modo de manutenção.</string>
     <string name="nc_dialog_maintenance_mode_description">O servidor está atualmente em modo de manutenção.</string>
@@ -176,7 +210,11 @@
     <string name="nc_dialog_save_to_storage_yes">Sim</string>
     <string name="nc_dialog_save_to_storage_yes">Sim</string>
     <string name="nc_display_name_not_fetched">Nome de exibição não obtido, interrompendo</string>
     <string name="nc_display_name_not_fetched">Nome de exibição não obtido, interrompendo</string>
     <string name="nc_display_name_not_stored">Não foi possível armazenar o nome de exibição, cancelando</string>
     <string name="nc_display_name_not_stored">Não foi possível armazenar o nome de exibição, cancelando</string>
+    <string name="nc_edit_icon">Editar ícone</string>
     <string name="nc_edit_message">Editar</string>
     <string name="nc_edit_message">Editar</string>
+    <string name="nc_edit_message_text">Editar texto da mensagem</string>
+    <string name="nc_edited_by">Editado por</string>
+    <string name="nc_edited_by_admin">Editado pelo administrador</string>
     <string name="nc_email">E-mail</string>
     <string name="nc_email">E-mail</string>
     <string name="nc_expire_message_eight_hours">8 horas</string>
     <string name="nc_expire_message_eight_hours">8 horas</string>
     <string name="nc_expire_message_four_weeks">4 semanas</string>
     <string name="nc_expire_message_four_weeks">4 semanas</string>
@@ -189,6 +227,9 @@
     <string name="nc_external_server_failed">Falha ao buscar configurações de sinalização</string>
     <string name="nc_external_server_failed">Falha ao buscar configurações de sinalização</string>
     <string name="nc_federation_invitation_accept">Aceitar</string>
     <string name="nc_federation_invitation_accept">Aceitar</string>
     <string name="nc_federation_invitation_reject">Rejeitar</string>
     <string name="nc_federation_invitation_reject">Rejeitar</string>
+    <string name="nc_federation_invited_to_room">de %1$s em%2$s</string>
+    <string name="nc_federation_no_invitations">Nenhum convite pendente</string>
+    <string name="nc_federation_pending_invitation_hint">Você tem convites pendentes</string>
     <string name="nc_file_browser_back">Voltar</string>
     <string name="nc_file_browser_back">Voltar</string>
     <string name="nc_file_storage_permission">É necessária permissão para acessar o arquivo</string>
     <string name="nc_file_storage_permission">É necessária permissão para acessar o arquivo</string>
     <string name="nc_filter">Filter Conversations</string>
     <string name="nc_filter">Filter Conversations</string>
@@ -216,6 +257,8 @@
     <string name="nc_guest_access_resend_invitations_successful">Os convites foram enviados novamente.</string>
     <string name="nc_guest_access_resend_invitations_successful">Os convites foram enviados novamente.</string>
     <string name="nc_guest_access_share_link">Compartilhar o link da conversa</string>
     <string name="nc_guest_access_share_link">Compartilhar o link da conversa</string>
     <string name="nc_hint_enter_a_message">Digite uma mensagem …</string>
     <string name="nc_hint_enter_a_message">Digite uma mensagem …</string>
+    <string name="nc_ignore_battery_optimization_dialog_text">A otimização da bateria não é ignorada. Isso deve ser alterado para garantir que as notificações funcionem em segundo plano! Clique em OK e selecione \"Todos os aplicativos\" -> %1$s -> Não otimizar</string>
+    <string name="nc_ignore_battery_optimization_dialog_title">Ignorar a otimização da bateria</string>
     <string name="nc_important_conversation">Conversa importante</string>
     <string name="nc_important_conversation">Conversa importante</string>
     <string name="nc_important_conversation_desc">As notificações nesta conversa substituirão as configurações de Não perturbe</string>
     <string name="nc_important_conversation_desc">As notificações nesta conversa substituirão as configurações de Não perturbe</string>
     <string name="nc_invitations">Convites</string>
     <string name="nc_invitations">Convites</string>
@@ -267,6 +310,8 @@
     <string name="nc_notification_channel_uploads">Enviados</string>
     <string name="nc_notification_channel_uploads">Enviados</string>
     <string name="nc_notification_channel_uploads_description">Notificar sobre o progresso do envio do arquivo</string>
     <string name="nc_notification_channel_uploads_description">Notificar sobre o progresso do envio do arquivo</string>
     <string name="nc_notification_settings">Configurações de notificação</string>
     <string name="nc_notification_settings">Configurações de notificação</string>
+    <string name="nc_notifications_troubleshooting_dialog_text">A permissão de notificação e as configurações da bateria estão configuradas corretamente para receber notificações. Se você tiver problemas para receber notificações mesmo assim, verifique se os canais de notificação para chamadas e mensagens estão habilitados. Mais ajuda pode ser encontrada em DontKillMyApp.com ou na lista de verificação de solução de problemas. Se isso não ajudar, vá para a tela de diagnóstico e envie um relatório de bug.</string>
+    <string name="nc_notifications_troubleshooting_dialog_title">Solução de problemas de notificação</string>
     <string name="nc_notify_me_always">Sempre notificar</string>
     <string name="nc_notify_me_always">Sempre notificar</string>
     <string name="nc_notify_me_mention">Notificar quando mencionado</string>
     <string name="nc_notify_me_mention">Notificar quando mencionado</string>
     <string name="nc_notify_me_never">Nunca notificar</string>
     <string name="nc_notify_me_never">Nunca notificar</string>
@@ -295,10 +340,10 @@
     <string name="nc_push_to_talk_desc">Com o microfone desativado, clique&amp; para usar Pressione-para-falar</string>
     <string name="nc_push_to_talk_desc">Com o microfone desativado, clique&amp; para usar Pressione-para-falar</string>
     <string name="nc_remind">Lembre-me mais tarde</string>
     <string name="nc_remind">Lembre-me mais tarde</string>
     <string name="nc_remote_audio_off">Áudio remoto desligado</string>
     <string name="nc_remote_audio_off">Áudio remoto desligado</string>
-    <string name="nc_remove_circle_and_members">Remover círculo e membros</string>
     <string name="nc_remove_from_favorites">Remover dos favoritos</string>
     <string name="nc_remove_from_favorites">Remover dos favoritos</string>
     <string name="nc_remove_group_and_members">Remover grupo e membros </string>
     <string name="nc_remove_group_and_members">Remover grupo e membros </string>
     <string name="nc_remove_participant">Excluir participante</string>
     <string name="nc_remove_participant">Excluir participante</string>
+    <string name="nc_remove_team_and_members">Remover equipe e membros</string>
     <string name="nc_rename">Renomear conversa</string>
     <string name="nc_rename">Renomear conversa</string>
     <string name="nc_rename_confirm">Renomear</string>
     <string name="nc_rename_confirm">Renomear</string>
     <string name="nc_reply">Responder</string>
     <string name="nc_reply">Responder</string>
@@ -316,6 +361,7 @@
     <string name="nc_search">Pesquisar</string>
     <string name="nc_search">Pesquisar</string>
     <string name="nc_select_an_account">Selecionar uma conta</string>
     <string name="nc_select_an_account">Selecionar uma conta</string>
     <string name="nc_select_participants">Selecionar participantes</string>
     <string name="nc_select_participants">Selecionar participantes</string>
+    <string name="nc_send_edit_message">Enviar Editar Mensagem</string>
     <string name="nc_sent_a_gif" formatted="true">%1$s enviou um GIF.</string>
     <string name="nc_sent_a_gif" formatted="true">%1$s enviou um GIF.</string>
     <string name="nc_sent_a_gif_you">Você enviou um GIF.</string>
     <string name="nc_sent_a_gif_you">Você enviou um GIF.</string>
     <string name="nc_sent_a_video" formatted="true">%1$s enviou um vídeo.</string>
     <string name="nc_sent_a_video" formatted="true">%1$s enviou um vídeo.</string>
@@ -351,12 +397,17 @@
     <string name="nc_settings_advanced_title">Avançada</string>
     <string name="nc_settings_advanced_title">Avançada</string>
     <string name="nc_settings_appearance">Aparência</string>
     <string name="nc_settings_appearance">Aparência</string>
     <string name="nc_settings_call_ringtone">Chamadas</string>
     <string name="nc_settings_call_ringtone">Chamadas</string>
+    <string name="nc_settings_diagnose_subtitle">Abra a tela de diagnóstico para verificar as configurações ou criar um relatório de bug</string>
+    <string name="nc_settings_diagnose_title">Diagnóstico</string>
     <string name="nc_settings_incognito_keyboard_desc">Instrui o teclado para desativar o aprendizado personalizado (sem garantias)</string>
     <string name="nc_settings_incognito_keyboard_desc">Instrui o teclado para desativar o aprendizado personalizado (sem garantias)</string>
     <string name="nc_settings_incognito_keyboard_title">Teclado incógnito</string>
     <string name="nc_settings_incognito_keyboard_title">Teclado incógnito</string>
     <string name="nc_settings_no_ringtone">Sem som</string>
     <string name="nc_settings_no_ringtone">Sem som</string>
     <string name="nc_settings_no_talk_installed">O aplicativo Talk não está instalado no servidor em que você tentou se autenticar</string>
     <string name="nc_settings_no_talk_installed">O aplicativo Talk não está instalado no servidor em que você tentou se autenticar</string>
     <string name="nc_settings_notification_sounds">Sons de notificação</string>
     <string name="nc_settings_notification_sounds">Sons de notificação</string>
     <string name="nc_settings_notification_sounds_post_oreo">Notificações</string>
     <string name="nc_settings_notification_sounds_post_oreo">Notificações</string>
+    <string name="nc_settings_notifications_declined">As notificações foram recusadas</string>
+    <string name="nc_settings_notifications_declined_hint">As notificações são recusadas. Permita notificações nas configurações do Android</string>
+    <string name="nc_settings_notifications_granted">As notificações são concedidas</string>
     <string name="nc_settings_other_notifications_ringtone">Mensagens</string>
     <string name="nc_settings_other_notifications_ringtone">Mensagens</string>
     <string name="nc_settings_phone_book_integration_desc">Combine os contatos com base no número de telefone para integrar o atalho do Bate Papo no aplicativo de contatos do sistema</string>
     <string name="nc_settings_phone_book_integration_desc">Combine os contatos com base no número de telefone para integrar o atalho do Bate Papo no aplicativo de contatos do sistema</string>
     <string name="nc_settings_phone_book_integration_phone_number_dialog_429">Erro 429 Muitas Solicitações</string>
     <string name="nc_settings_phone_book_integration_phone_number_dialog_429">Erro 429 Muitas Solicitações</string>
@@ -415,6 +466,8 @@
     <string name="nc_sort_by">Ordenar por</string>
     <string name="nc_sort_by">Ordenar por</string>
     <string name="nc_start_time">Hora de início</string>
     <string name="nc_start_time">Hora de início</string>
     <string name="nc_switch_account">Mudar de conta</string>
     <string name="nc_switch_account">Mudar de conta</string>
+    <string name="nc_team">Equipe</string>
+    <string name="nc_teams">Equipes</string>
     <string name="nc_upload_choose_local_files">Escolher arquivos</string>
     <string name="nc_upload_choose_local_files">Escolher arquivos</string>
     <string name="nc_upload_confirm_send_multiple">Enviar estes arquivos para %1$s?</string>
     <string name="nc_upload_confirm_send_multiple">Enviar estes arquivos para %1$s?</string>
     <string name="nc_upload_confirm_send_single">Enviar este arquivo para %1$s?</string>
     <string name="nc_upload_confirm_send_single">Enviar este arquivo para %1$s?</string>

+ 2 - 3
app/src/main/res/values-ru/strings.xml

@@ -102,8 +102,6 @@
     <string name="nc_certificate_dialog_title">Проверьте сертификат</string>
     <string name="nc_certificate_dialog_title">Проверьте сертификат</string>
     <string name="nc_certificate_error">Заданные параметры SSL не позволяют подключиться</string>
     <string name="nc_certificate_error">Заданные параметры SSL не позволяют подключиться</string>
     <string name="nc_change_cert_auth">Изменить сертификат для подтверждения подлинности</string>
     <string name="nc_change_cert_auth">Изменить сертификат для подтверждения подлинности</string>
-    <string name="nc_circle">Круг</string>
-    <string name="nc_circles">Круги</string>
     <string name="nc_clear_history">Удалить все сообщения</string>
     <string name="nc_clear_history">Удалить все сообщения</string>
     <string name="nc_clear_history_success">Все сообщения были удалены</string>
     <string name="nc_clear_history_success">Все сообщения были удалены</string>
     <string name="nc_clear_history_warning">Вы действительно хотите удалить все сообщения в этой беседе?</string>
     <string name="nc_clear_history_warning">Вы действительно хотите удалить все сообщения в этой беседе?</string>
@@ -275,10 +273,10 @@
     <string name="nc_push_to_talk_desc">Нажмите и удерживайте для использования PTT при отключённом микрофоне</string>
     <string name="nc_push_to_talk_desc">Нажмите и удерживайте для использования PTT при отключённом микрофоне</string>
     <string name="nc_remind">Напомнить позже</string>
     <string name="nc_remind">Напомнить позже</string>
     <string name="nc_remote_audio_off">Отключить звук удалённо</string>
     <string name="nc_remote_audio_off">Отключить звук удалённо</string>
-    <string name="nc_remove_circle_and_members">Удалить Круг и его учатников</string>
     <string name="nc_remove_from_favorites">Удалить из избранного</string>
     <string name="nc_remove_from_favorites">Удалить из избранного</string>
     <string name="nc_remove_group_and_members">Удалить группу и её участников</string>
     <string name="nc_remove_group_and_members">Удалить группу и её участников</string>
     <string name="nc_remove_participant">Удалить участника</string>
     <string name="nc_remove_participant">Удалить участника</string>
+    <string name="nc_remove_team_and_members">Исключить команду и её участников</string>
     <string name="nc_rename">Переименовать разговор</string>
     <string name="nc_rename">Переименовать разговор</string>
     <string name="nc_rename_confirm">Переименовать</string>
     <string name="nc_rename_confirm">Переименовать</string>
     <string name="nc_reply">Ответить</string>
     <string name="nc_reply">Ответить</string>
@@ -394,6 +392,7 @@
     <string name="nc_sort_by">Сортировать по</string>
     <string name="nc_sort_by">Сортировать по</string>
     <string name="nc_start_time">Время начала</string>
     <string name="nc_start_time">Время начала</string>
     <string name="nc_switch_account">Сменить аккаунт</string>
     <string name="nc_switch_account">Сменить аккаунт</string>
+    <string name="nc_teams">Команды</string>
     <string name="nc_upload_choose_local_files">Выберите файлы</string>
     <string name="nc_upload_choose_local_files">Выберите файлы</string>
     <string name="nc_upload_confirm_send_multiple">Отправить эти файлы %1$s?</string>
     <string name="nc_upload_confirm_send_multiple">Отправить эти файлы %1$s?</string>
     <string name="nc_upload_confirm_send_single">Отправить этот файл %1$s?</string>
     <string name="nc_upload_confirm_send_single">Отправить этот файл %1$s?</string>

+ 0 - 3
app/src/main/res/values-sc/strings.xml

@@ -68,8 +68,6 @@
     <string name="nc_certificate_dialog_title">Controlla su tzertificadu</string>
     <string name="nc_certificate_dialog_title">Controlla su tzertificadu</string>
     <string name="nc_certificate_error">Sa cunfiguratzione SSL at refudadu sa connessione</string>
     <string name="nc_certificate_error">Sa cunfiguratzione SSL at refudadu sa connessione</string>
     <string name="nc_change_cert_auth">Càmbia tzertificadu autenticatzione</string>
     <string name="nc_change_cert_auth">Càmbia tzertificadu autenticatzione</string>
-    <string name="nc_circle">Giru</string>
-    <string name="nc_circles">Giros</string>
     <string name="nc_clear_history">Cantzella totu is messàgios</string>
     <string name="nc_clear_history">Cantzella totu is messàgios</string>
     <string name="nc_clear_history_success">Cantzellados totu is messàgios</string>
     <string name="nc_clear_history_success">Cantzellados totu is messàgios</string>
     <string name="nc_clear_history_warning">A beru boles cantzellare totu is messàgios in custa resonada?</string>
     <string name="nc_clear_history_warning">A beru boles cantzellare totu is messàgios in custa resonada?</string>
@@ -207,7 +205,6 @@
     <string name="nc_push_to_talk_desc">Cun su micròfonu disativadu, mantene incarcadu&amp;pro impreare su cumandu de trasmissione</string>
     <string name="nc_push_to_talk_desc">Cun su micròfonu disativadu, mantene incarcadu&amp;pro impreare su cumandu de trasmissione</string>
     <string name="nc_remind">Regorda•mi•ddu a coa</string>
     <string name="nc_remind">Regorda•mi•ddu a coa</string>
     <string name="nc_remote_audio_off">Àudiu remotu istudadu </string>
     <string name="nc_remote_audio_off">Àudiu remotu istudadu </string>
-    <string name="nc_remove_circle_and_members">Boga·nche giru e partetzipantes</string>
     <string name="nc_remove_from_favorites">Boga dae preferidos</string>
     <string name="nc_remove_from_favorites">Boga dae preferidos</string>
     <string name="nc_remove_group_and_members">Boga·nche grupu e partetzipantes</string>
     <string name="nc_remove_group_and_members">Boga·nche grupu e partetzipantes</string>
     <string name="nc_remove_participant"> Boga·nche partetzipante</string>
     <string name="nc_remove_participant"> Boga·nche partetzipante</string>

+ 17 - 3
app/src/main/res/values-sk-rSK/strings.xml

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
   <resources>
   <resources>
     <string name="account_icon">Ikona účtu</string>
     <string name="account_icon">Ikona účtu</string>
+    <string name="add_to_notes">Pridať do poznámok</string>
     <string name="added_to_favorites">Pridať konverzáciu %1$s k obľúbeným</string>
     <string name="added_to_favorites">Pridať konverzáciu %1$s k obľúbeným</string>
     <string name="appbar_search_in">Hľadať v %s</string>
     <string name="appbar_search_in">Hľadať v %s</string>
     <string name="audio_call">Audio hovor</string>
     <string name="audio_call">Audio hovor</string>
@@ -20,8 +21,10 @@
     <string name="clear_status_message">Vyčistiť správu o stave</string>
     <string name="clear_status_message">Vyčistiť správu o stave</string>
     <string name="clear_status_message_after">Vyčistiť správu o stave po</string>
     <string name="clear_status_message_after">Vyčistiť správu o stave po</string>
     <string name="close">Zatvoriť</string>
     <string name="close">Zatvoriť</string>
+    <string name="continuous_voice_message_recording">Zamknúť nahrávanie pre nepretržité nahrávanie hlasovej správy</string>
     <string name="conversations">Konverzácie</string>
     <string name="conversations">Konverzácie</string>
     <string name="create_conversation">Vytvoriť konverzáciu</string>
     <string name="create_conversation">Vytvoriť konverzáciu</string>
+    <string name="create_issue">Vytvoriť problém</string>
     <string name="custom">Vlastný</string>
     <string name="custom">Vlastný</string>
     <string name="danger_zone">Nebezpečná oblasť</string>
     <string name="danger_zone">Nebezpečná oblasť</string>
     <string name="delete_avatar">Zmazať avatara</string>
     <string name="delete_avatar">Zmazať avatara</string>
@@ -29,6 +32,8 @@
     <string name="dnd">Nerušiť</string>
     <string name="dnd">Nerušiť</string>
     <string name="dontClear">Nemazať</string>
     <string name="dontClear">Nemazať</string>
     <string name="edit">Upraviť</string>
     <string name="edit">Upraviť</string>
+    <string name="edit_error_24_hours_old_message">Nemôžete upravovať správy staršie ako 24 hodín.</string>
+    <string name="edit_message_icon_description">Upraviť ikonu správy</string>
     <string name="emoji_backspace">Spätná lomka</string>
     <string name="emoji_backspace">Spätná lomka</string>
     <string name="emoji_category_recent">Nedávne</string>
     <string name="emoji_category_recent">Nedávne</string>
     <string name="encrypted">Šifrované</string>
     <string name="encrypted">Šifrované</string>
@@ -38,7 +43,10 @@
     <string name="file_list_loading">Načítavam …</string>
     <string name="file_list_loading">Načítavam …</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="fourHours">4 hodiny</string>
     <string name="fourHours">4 hodiny</string>
+    <string name="hint_edited_message">(editované)</string>
     <string name="invisible">Neviditeľný</string>
     <string name="invisible">Neviditeľný</string>
+    <string name="languages_error_message">Jazyky sa nedali získať</string>
+    <string name="languages_error_title">Získanie zlyhalo</string>
     <string name="later_today">Neskôr dnes</string>
     <string name="later_today">Neskôr dnes</string>
     <string name="left_conversation">Opustili ste konverzáciu %1$s</string>
     <string name="left_conversation">Opustili ste konverzáciu %1$s</string>
     <string name="load_more_results">Načítať viac výsledkov</string>
     <string name="load_more_results">Načítať viac výsledkov</string>
@@ -53,6 +61,7 @@
     <string name="menu_item_sort_by_name_z_a">Z - A</string>
     <string name="menu_item_sort_by_name_z_a">Z - A</string>
     <string name="menu_item_sort_by_size_biggest_first">Najväčšie prvé</string>
     <string name="menu_item_sort_by_size_biggest_first">Najväčšie prvé</string>
     <string name="menu_item_sort_by_size_smallest_first">Najmenšie prvé</string>
     <string name="menu_item_sort_by_size_smallest_first">Najmenšie prvé</string>
+    <string name="message_expiration_title">Vypršanie platnosti správy</string>
     <string name="message_poll_tap_to_open">Klepnutím otvoríte anketu</string>
     <string name="message_poll_tap_to_open">Klepnutím otvoríte anketu</string>
     <string name="message_search_begin_empty">Žiadne výsledky vyhľadávania</string>
     <string name="message_search_begin_empty">Žiadne výsledky vyhľadávania</string>
     <string name="message_search_begin_typing">Začnite písať pre vyhľadanie …</string>
     <string name="message_search_begin_typing">Začnite písať pre vyhľadanie …</string>
@@ -101,8 +110,6 @@
     <string name="nc_certificate_dialog_title">Skontrolujte certifikát</string>
     <string name="nc_certificate_dialog_title">Skontrolujte certifikát</string>
     <string name="nc_certificate_error">Vaša konfigurácia SSL zabránila pripojeniu</string>
     <string name="nc_certificate_error">Vaša konfigurácia SSL zabránila pripojeniu</string>
     <string name="nc_change_cert_auth">Zmeniť autentifikačný certifikát</string>
     <string name="nc_change_cert_auth">Zmeniť autentifikačný certifikát</string>
-    <string name="nc_circle">Kruh</string>
-    <string name="nc_circles">Kruhy</string>
     <string name="nc_clear_history">Vymazať všetky správy</string>
     <string name="nc_clear_history">Vymazať všetky správy</string>
     <string name="nc_clear_history_success">Všetky správy boli vymazané</string>
     <string name="nc_clear_history_success">Všetky správy boli vymazané</string>
     <string name="nc_clear_history_warning">Naozaj chcete vymazať všetky správy v tejto konverzácii?</string>
     <string name="nc_clear_history_warning">Naozaj chcete vymazať všetky správy v tejto konverzácii?</string>
@@ -151,6 +158,7 @@
     <string name="nc_diagnose_battery_optimization_title">Nastavenia batérie.</string>
     <string name="nc_diagnose_battery_optimization_title">Nastavenia batérie.</string>
     <string name="nc_diagnose_device_name_title">Zariadenie</string>
     <string name="nc_diagnose_device_name_title">Zariadenie</string>
     <string name="nc_diagnose_phone_category_title">Telefón</string>
     <string name="nc_diagnose_phone_category_title">Telefón</string>
+    <string name="nc_diagnose_server_talk_version">Verzia servera Talk /Rozhovor/</string>
     <string name="nc_diagnose_signaling_mode_extern">Externý</string>
     <string name="nc_diagnose_signaling_mode_extern">Externý</string>
     <string name="nc_diagnose_signaling_mode_intern">Interné</string>
     <string name="nc_diagnose_signaling_mode_intern">Interné</string>
     <string name="nc_dialog_invalid_password">Neplatné heslo</string>
     <string name="nc_dialog_invalid_password">Neplatné heslo</string>
@@ -280,10 +288,10 @@
     <string name="nc_push_to_talk_desc">S vypnutým mikrofónom, kliknite &amp;podržte pre použitie funkcie Stlač a hovor PTT</string>
     <string name="nc_push_to_talk_desc">S vypnutým mikrofónom, kliknite &amp;podržte pre použitie funkcie Stlač a hovor PTT</string>
     <string name="nc_remind">Pripomenúť neskôr</string>
     <string name="nc_remind">Pripomenúť neskôr</string>
     <string name="nc_remote_audio_off">Vypnúť vzdialené audio</string>
     <string name="nc_remote_audio_off">Vypnúť vzdialené audio</string>
-    <string name="nc_remove_circle_and_members">Vymazať kruh a členov</string>
     <string name="nc_remove_from_favorites">Odstrániť z obľúbených</string>
     <string name="nc_remove_from_favorites">Odstrániť z obľúbených</string>
     <string name="nc_remove_group_and_members">Odobrať skupinu a členov</string>
     <string name="nc_remove_group_and_members">Odobrať skupinu a členov</string>
     <string name="nc_remove_participant">Odobrať účastníka</string>
     <string name="nc_remove_participant">Odobrať účastníka</string>
+    <string name="nc_remove_team_and_members">Odstrániť tím a členov.</string>
     <string name="nc_rename">Premenovať konverzáciu</string>
     <string name="nc_rename">Premenovať konverzáciu</string>
     <string name="nc_rename_confirm">Premenovať</string>
     <string name="nc_rename_confirm">Premenovať</string>
     <string name="nc_reply">Odpoveď</string>
     <string name="nc_reply">Odpoveď</string>
@@ -398,6 +406,8 @@
     <string name="nc_sort_by">Zoradiť podľa</string>
     <string name="nc_sort_by">Zoradiť podľa</string>
     <string name="nc_start_time">Čas začiatku</string>
     <string name="nc_start_time">Čas začiatku</string>
     <string name="nc_switch_account">Prepnúť účet</string>
     <string name="nc_switch_account">Prepnúť účet</string>
+    <string name="nc_team">Tím</string>
+    <string name="nc_teams">Tímy</string>
     <string name="nc_upload_choose_local_files">Vyberte súbory</string>
     <string name="nc_upload_choose_local_files">Vyberte súbory</string>
     <string name="nc_upload_confirm_send_multiple">Poslať tieto súbory do %1$s?</string>
     <string name="nc_upload_confirm_send_multiple">Poslať tieto súbory do %1$s?</string>
     <string name="nc_upload_confirm_send_single">Poslať tento súbor do %1$s?</string>
     <string name="nc_upload_confirm_send_single">Poslať tento súbor do %1$s?</string>
@@ -453,6 +463,10 @@
     <string name="record_stop_confirm_title">Zastaviť nahrávanie hovoru</string>
     <string name="record_stop_confirm_title">Zastaviť nahrávanie hovoru</string>
     <string name="record_stop_description">Zastaviť nahrávanie</string>
     <string name="record_stop_description">Zastaviť nahrávanie</string>
     <string name="record_stopping">Zastavujem nahrávanie...</string>
     <string name="record_stopping">Zastavujem nahrávanie...</string>
+    <string name="recording_consent_all">Súhlas so záznamom je potrebný pre všetky hovory.</string>
+    <string name="recording_consent_for_conversation_description">Vyžadovať súhlas so záznamom pred pripojením hovoru v tejto konverzácii</string>
+    <string name="recording_consent_for_conversation_title">Súhlas so záznamom</string>
+    <string name="recording_consent_title">Hovor môže byť zaznamenaný.</string>
     <string name="recording_settings_title">Záznam</string>
     <string name="recording_settings_title">Záznam</string>
     <string name="removed_from_favorites">Konverzácia %1$s bola odstránená z obľúbených</string>
     <string name="removed_from_favorites">Konverzácia %1$s bola odstránená z obľúbených</string>
     <string name="renamed_conversation">Konverzácia %1$s bola premenovaná</string>
     <string name="renamed_conversation">Konverzácia %1$s bola premenovaná</string>

+ 0 - 3
app/src/main/res/values-sl/strings.xml

@@ -93,8 +93,6 @@
     <string name="nc_certificate_dialog_title">Preveri potrdilo</string>
     <string name="nc_certificate_dialog_title">Preveri potrdilo</string>
     <string name="nc_certificate_error">Nastavitve SSL onemogočajo vzpostavitev povezave</string>
     <string name="nc_certificate_error">Nastavitve SSL onemogočajo vzpostavitev povezave</string>
     <string name="nc_change_cert_auth">Spremeni potrdilo za overitev</string>
     <string name="nc_change_cert_auth">Spremeni potrdilo za overitev</string>
-    <string name="nc_circle">Krog</string>
-    <string name="nc_circles">Krogi</string>
     <string name="nc_clear_history">Izbriši vsa sporočila</string>
     <string name="nc_clear_history">Izbriši vsa sporočila</string>
     <string name="nc_clear_history_success">Vsa sporočilo so izbrisana</string>
     <string name="nc_clear_history_success">Vsa sporočilo so izbrisana</string>
     <string name="nc_clear_history_warning">Ali res želite izbrisati vsa sporočila tega pogovora?</string>
     <string name="nc_clear_history_warning">Ali res želite izbrisati vsa sporočila tega pogovora?</string>
@@ -262,7 +260,6 @@
     <string name="nc_push_to_talk_desc">Pri onemogočenem mikrofonu lahko za začetek govora kliknete in zadržite gumb</string>
     <string name="nc_push_to_talk_desc">Pri onemogočenem mikrofonu lahko za začetek govora kliknete in zadržite gumb</string>
     <string name="nc_remind">Opomni me kasneje</string>
     <string name="nc_remind">Opomni me kasneje</string>
     <string name="nc_remote_audio_off">Oddaljen zvok je onemogočen</string>
     <string name="nc_remote_audio_off">Oddaljen zvok je onemogočen</string>
-    <string name="nc_remove_circle_and_members">Odstrani krog in člane</string>
     <string name="nc_remove_from_favorites">Odstrani iz priljubljenih</string>
     <string name="nc_remove_from_favorites">Odstrani iz priljubljenih</string>
     <string name="nc_remove_group_and_members">Odstrani skupino in člane</string>
     <string name="nc_remove_group_and_members">Odstrani skupino in člane</string>
     <string name="nc_remove_participant">Odstrani udeležence</string>
     <string name="nc_remove_participant">Odstrani udeležence</string>

+ 4 - 3
app/src/main/res/values-sr/strings.xml

@@ -44,6 +44,7 @@
     <string name="file_list_loading">Учитавање…</string>
     <string name="file_list_loading">Учитавање…</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="fourHours">4 сата</string>
     <string name="fourHours">4 сата</string>
+    <string name="get_invitations_error">Није успело добављање позивница на чекању</string>
     <string name="hint_edited_message">(уређено)</string>
     <string name="hint_edited_message">(уређено)</string>
     <string name="invisible">Невидљива</string>
     <string name="invisible">Невидљива</string>
     <string name="languages_error_message">Није успело преузимање језика</string>
     <string name="languages_error_message">Није успело преузимање језика</string>
@@ -114,8 +115,6 @@
     <string name="nc_certificate_dialog_title">Провери сертификат</string>
     <string name="nc_certificate_dialog_title">Провери сертификат</string>
     <string name="nc_certificate_error">Ваша ССЛ постава је онемогућила повезивање</string>
     <string name="nc_certificate_error">Ваша ССЛ постава је онемогућила повезивање</string>
     <string name="nc_change_cert_auth">Измени сертификат за пријаву</string>
     <string name="nc_change_cert_auth">Измени сертификат за пријаву</string>
-    <string name="nc_circle">Круг</string>
-    <string name="nc_circles">Кругови</string>
     <string name="nc_clear_edit_button">Обриши дугме за уређивање</string>
     <string name="nc_clear_edit_button">Обриши дугме за уређивање</string>
     <string name="nc_clear_edit_message">Обриши Уреди поруку</string>
     <string name="nc_clear_edit_message">Обриши Уреди поруку</string>
     <string name="nc_clear_history">Обриши све поруке</string>
     <string name="nc_clear_history">Обриши све поруке</string>
@@ -341,10 +340,10 @@
     <string name="nc_push_to_talk_desc">Са онемогућеним микрофоном, кликните &amp; држите да користите притисак за разговор</string>
     <string name="nc_push_to_talk_desc">Са онемогућеним микрофоном, кликните &amp; држите да користите притисак за разговор</string>
     <string name="nc_remind">Подсети ме касније</string>
     <string name="nc_remind">Подсети ме касније</string>
     <string name="nc_remote_audio_off">Удаљени аудио је искључен</string>
     <string name="nc_remote_audio_off">Удаљени аудио је искључен</string>
-    <string name="nc_remove_circle_and_members">Уклони круг и чланове</string>
     <string name="nc_remove_from_favorites">Уклони из омиљених</string>
     <string name="nc_remove_from_favorites">Уклони из омиљених</string>
     <string name="nc_remove_group_and_members">Уклони групу и чланове</string>
     <string name="nc_remove_group_and_members">Уклони групу и чланове</string>
     <string name="nc_remove_participant">Уклони учесника</string>
     <string name="nc_remove_participant">Уклони учесника</string>
+    <string name="nc_remove_team_and_members">Уклони тим и чланове</string>
     <string name="nc_rename">Преименуј разговор</string>
     <string name="nc_rename">Преименуј разговор</string>
     <string name="nc_rename_confirm">Преименуј</string>
     <string name="nc_rename_confirm">Преименуј</string>
     <string name="nc_reply">Одговори</string>
     <string name="nc_reply">Одговори</string>
@@ -467,6 +466,8 @@
     <string name="nc_sort_by">Разврстај</string>
     <string name="nc_sort_by">Разврстај</string>
     <string name="nc_start_time">Време почетка</string>
     <string name="nc_start_time">Време почетка</string>
     <string name="nc_switch_account">Пребаци налог</string>
     <string name="nc_switch_account">Пребаци налог</string>
+    <string name="nc_team">Тим</string>
+    <string name="nc_teams">Тимови</string>
     <string name="nc_upload_choose_local_files">Изаберите фајлове</string>
     <string name="nc_upload_choose_local_files">Изаберите фајлове</string>
     <string name="nc_upload_confirm_send_multiple">Да ли да пошаљем ове фајлове %1$s?</string>
     <string name="nc_upload_confirm_send_multiple">Да ли да пошаљем ове фајлове %1$s?</string>
     <string name="nc_upload_confirm_send_single">Да ли да пошаљем овај фајл %1$s?</string>
     <string name="nc_upload_confirm_send_single">Да ли да пошаљем овај фајл %1$s?</string>

+ 1 - 2
app/src/main/res/values-sv/strings.xml

@@ -62,8 +62,6 @@
     <string name="nc_certificate_dialog_title">Kontrollera certifikatet</string>
     <string name="nc_certificate_dialog_title">Kontrollera certifikatet</string>
     <string name="nc_certificate_error">Dina SSL-inställningar förhindrade anslutning</string>
     <string name="nc_certificate_error">Dina SSL-inställningar förhindrade anslutning</string>
     <string name="nc_change_cert_auth">Ändra autentiseringscertifikat</string>
     <string name="nc_change_cert_auth">Ändra autentiseringscertifikat</string>
-    <string name="nc_circle">Cirkel</string>
-    <string name="nc_circles">Cirklar</string>
     <string name="nc_clear_history">Radera alla meddelanden</string>
     <string name="nc_clear_history">Radera alla meddelanden</string>
     <string name="nc_client_cert_change">Ändra klientcertifikat</string>
     <string name="nc_client_cert_change">Ändra klientcertifikat</string>
     <string name="nc_client_cert_setup">Konfigurera klientcertifikat</string>
     <string name="nc_client_cert_setup">Konfigurera klientcertifikat</string>
@@ -287,6 +285,7 @@
     <string name="nc_sort_by">Sortera efter</string>
     <string name="nc_sort_by">Sortera efter</string>
     <string name="nc_start_time">Starttid</string>
     <string name="nc_start_time">Starttid</string>
     <string name="nc_switch_account">Växla konto</string>
     <string name="nc_switch_account">Växla konto</string>
+    <string name="nc_team">Team</string>
     <string name="nc_upload_from_device">Ladda upp från enheten</string>
     <string name="nc_upload_from_device">Ladda upp från enheten</string>
     <string name="nc_upload_in_progess">Laddar upp</string>
     <string name="nc_upload_in_progess">Laddar upp</string>
     <string name="nc_upload_picture_from_cam">Ta en bild</string>
     <string name="nc_upload_picture_from_cam">Ta en bild</string>

+ 7 - 3
app/src/main/res/values-tr/strings.xml

@@ -32,6 +32,8 @@
     <string name="dnd">Rahatsız etmeyin</string>
     <string name="dnd">Rahatsız etmeyin</string>
     <string name="dontClear">Kaldırılmasın</string>
     <string name="dontClear">Kaldırılmasın</string>
     <string name="edit">Düzenle</string>
     <string name="edit">Düzenle</string>
+    <string name="edit_error_24_hours_old_message">24 saat öncesine ait mesajları düzenleyemezsiniz.</string>
+    <string name="edit_message_icon_description">Düzenleme İleti Simgesi</string>
     <string name="emoji_backspace">Geriye silme</string>
     <string name="emoji_backspace">Geriye silme</string>
     <string name="emoji_category_recent">Son kullanılan</string>
     <string name="emoji_category_recent">Son kullanılan</string>
     <string name="encrypted">Şifrelenmiş</string>
     <string name="encrypted">Şifrelenmiş</string>
@@ -41,6 +43,7 @@
     <string name="file_list_loading">Yükleniyor…</string>
     <string name="file_list_loading">Yükleniyor…</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="fourHours">4 saat</string>
     <string name="fourHours">4 saat</string>
+    <string name="get_invitations_error">Tamamlanamayan davetiyeleri al ve beklet</string>
     <string name="hint_edited_message">(düzenlendi)</string>
     <string name="hint_edited_message">(düzenlendi)</string>
     <string name="invisible">Görünmez</string>
     <string name="invisible">Görünmez</string>
     <string name="languages_error_message">Diller alınamadı</string>
     <string name="languages_error_message">Diller alınamadı</string>
@@ -111,8 +114,8 @@
     <string name="nc_certificate_dialog_title">Sertifikayı denetleyin</string>
     <string name="nc_certificate_dialog_title">Sertifikayı denetleyin</string>
     <string name="nc_certificate_error">SSL kurulumunuz bağlantı kurulmasını engelliyor</string>
     <string name="nc_certificate_error">SSL kurulumunuz bağlantı kurulmasını engelliyor</string>
     <string name="nc_change_cert_auth">Kimlik doğrulama sertifikasını değiştir</string>
     <string name="nc_change_cert_auth">Kimlik doğrulama sertifikasını değiştir</string>
-    <string name="nc_circle">Çevre</string>
-    <string name="nc_circles">Çevreler</string>
+    <string name="nc_clear_edit_button">Düzenleme Butonunu temizle</string>
+    <string name="nc_clear_edit_message">İletiyi düzenle</string>
     <string name="nc_clear_history">Tüm iletileri sil</string>
     <string name="nc_clear_history">Tüm iletileri sil</string>
     <string name="nc_clear_history_success">Tüm iletiler silindi</string>
     <string name="nc_clear_history_success">Tüm iletiler silindi</string>
     <string name="nc_clear_history_warning">Bu görüşmedeki tüm iletileri silmek istediğinize emin misiniz?</string>
     <string name="nc_clear_history_warning">Bu görüşmedeki tüm iletileri silmek istediğinize emin misiniz?</string>
@@ -136,6 +139,7 @@
     <string name="nc_conversation_menu_conversation_info">Görüşme bilgileri</string>
     <string name="nc_conversation_menu_conversation_info">Görüşme bilgileri</string>
     <string name="nc_conversation_menu_video_call">Görüntülü çağrı</string>
     <string name="nc_conversation_menu_video_call">Görüntülü çağrı</string>
     <string name="nc_conversation_menu_voice_call">Sesli çağrı</string>
     <string name="nc_conversation_menu_voice_call">Sesli çağrı</string>
+    <string name="nc_conversation_not_found">Görüşme bulunamadı</string>
     <string name="nc_conversations_empty">Bir görüşmeye katılın ya da yeni bir görüşme başlatın</string>
     <string name="nc_conversations_empty">Bir görüşmeye katılın ya da yeni bir görüşme başlatın</string>
     <string name="nc_conversations_empty_details">Tanıdık ve çalışma arkadaşlarınıza selam verin!</string>
     <string name="nc_conversations_empty_details">Tanıdık ve çalışma arkadaşlarınıza selam verin!</string>
     <string name="nc_copy_message">Kopyala</string>
     <string name="nc_copy_message">Kopyala</string>
@@ -205,6 +209,7 @@
     <string name="nc_dialog_save_to_storage_yes">Evet</string>
     <string name="nc_dialog_save_to_storage_yes">Evet</string>
     <string name="nc_display_name_not_fetched">Görüntülenecek ad alınamadı, vazgeçiliyor</string>
     <string name="nc_display_name_not_fetched">Görüntülenecek ad alınamadı, vazgeçiliyor</string>
     <string name="nc_display_name_not_stored">Görüntülenecek ad kaydedilemedi, vazgeçiliyor</string>
     <string name="nc_display_name_not_stored">Görüntülenecek ad kaydedilemedi, vazgeçiliyor</string>
+    <string name="nc_edit_icon">Düzenle simgesi</string>
     <string name="nc_edit_message">Düzenle</string>
     <string name="nc_edit_message">Düzenle</string>
     <string name="nc_email">E-posta</string>
     <string name="nc_email">E-posta</string>
     <string name="nc_expire_message_eight_hours">8 saat</string>
     <string name="nc_expire_message_eight_hours">8 saat</string>
@@ -328,7 +333,6 @@
     <string name="nc_push_to_talk_desc">Mikrofon devre dışı iken, Bas-konuş üzerine tıklayıp basılı tutun</string>
     <string name="nc_push_to_talk_desc">Mikrofon devre dışı iken, Bas-konuş üzerine tıklayıp basılı tutun</string>
     <string name="nc_remind">Sonra hatırlat</string>
     <string name="nc_remind">Sonra hatırlat</string>
     <string name="nc_remote_audio_off">Uzak ses kapalı</string>
     <string name="nc_remote_audio_off">Uzak ses kapalı</string>
-    <string name="nc_remove_circle_and_members">Çevreyi ve üyelerini sil</string>
     <string name="nc_remove_from_favorites">Sık kullanılanlardan kaldır</string>
     <string name="nc_remove_from_favorites">Sık kullanılanlardan kaldır</string>
     <string name="nc_remove_group_and_members">Grup ve üyelerini sil</string>
     <string name="nc_remove_group_and_members">Grup ve üyelerini sil</string>
     <string name="nc_remove_participant">Katılımcıyı çıkar</string>
     <string name="nc_remove_participant">Katılımcıyı çıkar</string>

+ 0 - 3
app/src/main/res/values-uk/strings.xml

@@ -93,8 +93,6 @@
     <string name="nc_certificate_dialog_title">Перевірка сертифікату</string>
     <string name="nc_certificate_dialog_title">Перевірка сертифікату</string>
     <string name="nc_certificate_error">Ваші налаштування SSL завадили з’єднанню</string>
     <string name="nc_certificate_error">Ваші налаштування SSL завадили з’єднанню</string>
     <string name="nc_change_cert_auth">Змінити сертифікат авторизації</string>
     <string name="nc_change_cert_auth">Змінити сертифікат авторизації</string>
-    <string name="nc_circle">Коло</string>
-    <string name="nc_circles">Кола</string>
     <string name="nc_clear_history">Вилучити усі повідомлення</string>
     <string name="nc_clear_history">Вилучити усі повідомлення</string>
     <string name="nc_clear_history_success">Всі повідомлення видалено</string>
     <string name="nc_clear_history_success">Всі повідомлення видалено</string>
     <string name="nc_clear_history_warning">Ви дійсно бажаєте вилучити усі повідомлення у цій розмові?</string>
     <string name="nc_clear_history_warning">Ви дійсно бажаєте вилучити усі повідомлення у цій розмові?</string>
@@ -258,7 +256,6 @@
     <string name="nc_push_to_talk_desc">Натисніть і утримуйте &amp; для використання PTT при вимкненому мікрофоні</string>
     <string name="nc_push_to_talk_desc">Натисніть і утримуйте &amp; для використання PTT при вимкненому мікрофоні</string>
     <string name="nc_remind">Нагадати пізніше</string>
     <string name="nc_remind">Нагадати пізніше</string>
     <string name="nc_remote_audio_off">Віддалене аудіо відключено</string>
     <string name="nc_remote_audio_off">Віддалене аудіо відключено</string>
-    <string name="nc_remove_circle_and_members">Вилучити кола та учасників</string>
     <string name="nc_remove_from_favorites">Вилучено з улюбленого</string>
     <string name="nc_remove_from_favorites">Вилучено з улюбленого</string>
     <string name="nc_remove_group_and_members">Вилучити групи та учасників</string>
     <string name="nc_remove_group_and_members">Вилучити групи та учасників</string>
     <string name="nc_remove_participant">Вилучити учасника</string>
     <string name="nc_remove_participant">Вилучити учасника</string>

+ 0 - 3
app/src/main/res/values-zh-rCN/strings.xml

@@ -105,8 +105,6 @@
     <string name="nc_certificate_dialog_title">检查证书</string>
     <string name="nc_certificate_dialog_title">检查证书</string>
     <string name="nc_certificate_error">您的 SSL 设置阻止了连接</string>
     <string name="nc_certificate_error">您的 SSL 设置阻止了连接</string>
     <string name="nc_change_cert_auth">更换验证证书</string>
     <string name="nc_change_cert_auth">更换验证证书</string>
-    <string name="nc_circle">圈子 </string>
-    <string name="nc_circles">圈子</string>
     <string name="nc_clear_history">删除所有消息</string>
     <string name="nc_clear_history">删除所有消息</string>
     <string name="nc_clear_history_success">已删除所有消息</string>
     <string name="nc_clear_history_success">已删除所有消息</string>
     <string name="nc_clear_history_warning">你真想删除对话中的所有信息吗?</string>
     <string name="nc_clear_history_warning">你真想删除对话中的所有信息吗?</string>
@@ -289,7 +287,6 @@
     <string name="nc_push_to_talk_desc">禁用麦克风的情况下,点击&amp;并按住使用“按键讲话”功能</string>
     <string name="nc_push_to_talk_desc">禁用麦克风的情况下,点击&amp;并按住使用“按键讲话”功能</string>
     <string name="nc_remind">以后提醒我 </string>
     <string name="nc_remind">以后提醒我 </string>
     <string name="nc_remote_audio_off">远程音频关闭</string>
     <string name="nc_remote_audio_off">远程音频关闭</string>
-    <string name="nc_remove_circle_and_members">删除圈子和成员</string>
     <string name="nc_remove_from_favorites">取消收藏</string>
     <string name="nc_remove_from_favorites">取消收藏</string>
     <string name="nc_remove_group_and_members">移除群组和成员</string>
     <string name="nc_remove_group_and_members">移除群组和成员</string>
     <string name="nc_remove_participant">移除参与者</string>
     <string name="nc_remove_participant">移除参与者</string>

+ 4 - 3
app/src/main/res/values-zh-rHK/strings.xml

@@ -44,6 +44,7 @@
     <string name="file_list_loading">加載中 …</string>
     <string name="file_list_loading">加載中 …</string>
     <string name="filename_progress">%1$s(%2$d)</string>
     <string name="filename_progress">%1$s(%2$d)</string>
     <string name="fourHours">4 小時</string>
     <string name="fourHours">4 小時</string>
+    <string name="get_invitations_error">無法擷取待定的邀請</string>
     <string name="hint_edited_message">(已編輯)</string>
     <string name="hint_edited_message">(已編輯)</string>
     <string name="invisible">隱藏</string>
     <string name="invisible">隱藏</string>
     <string name="languages_error_message">無法擷取語言</string>
     <string name="languages_error_message">無法擷取語言</string>
@@ -114,8 +115,6 @@
     <string name="nc_certificate_dialog_title">請檢查憑證</string>
     <string name="nc_certificate_dialog_title">請檢查憑證</string>
     <string name="nc_certificate_error">您的SSL設定阻擋這連線。</string>
     <string name="nc_certificate_error">您的SSL設定阻擋這連線。</string>
     <string name="nc_change_cert_auth">更改驗證證書</string>
     <string name="nc_change_cert_auth">更改驗證證書</string>
-    <string name="nc_circle">社交圈子</string>
-    <string name="nc_circles">圈子</string>
     <string name="nc_clear_edit_button">清除編輯按鈕</string>
     <string name="nc_clear_edit_button">清除編輯按鈕</string>
     <string name="nc_clear_edit_message">清除編輯訊息</string>
     <string name="nc_clear_edit_message">清除編輯訊息</string>
     <string name="nc_clear_history">刪除所有訊息</string>
     <string name="nc_clear_history">刪除所有訊息</string>
@@ -341,10 +340,10 @@
     <string name="nc_push_to_talk_desc">在停用米高風的情況下,單擊並按住即可使用一鍵通</string>
     <string name="nc_push_to_talk_desc">在停用米高風的情況下,單擊並按住即可使用一鍵通</string>
     <string name="nc_remind">稍後提醒我</string>
     <string name="nc_remind">稍後提醒我</string>
     <string name="nc_remote_audio_off">遠端語音關閉</string>
     <string name="nc_remote_audio_off">遠端語音關閉</string>
-    <string name="nc_remove_circle_and_members">移除社交圈子及組員</string>
     <string name="nc_remove_from_favorites">取消我的最愛</string>
     <string name="nc_remove_from_favorites">取消我的最愛</string>
     <string name="nc_remove_group_and_members">移除群組及組員</string>
     <string name="nc_remove_group_and_members">移除群組及組員</string>
     <string name="nc_remove_participant">移除參與者</string>
     <string name="nc_remove_participant">移除參與者</string>
+    <string name="nc_remove_team_and_members">移除團隊和成員</string>
     <string name="nc_rename">重新命名對話</string>
     <string name="nc_rename">重新命名對話</string>
     <string name="nc_rename_confirm">重新命名</string>
     <string name="nc_rename_confirm">重新命名</string>
     <string name="nc_reply">回覆</string>
     <string name="nc_reply">回覆</string>
@@ -467,6 +466,8 @@
     <string name="nc_sort_by">排序方式</string>
     <string name="nc_sort_by">排序方式</string>
     <string name="nc_start_time">開始時間</string>
     <string name="nc_start_time">開始時間</string>
     <string name="nc_switch_account">切換賬戶</string>
     <string name="nc_switch_account">切換賬戶</string>
+    <string name="nc_team">團隊</string>
+    <string name="nc_teams">團隊</string>
     <string name="nc_upload_choose_local_files">選擇檔案</string>
     <string name="nc_upload_choose_local_files">選擇檔案</string>
     <string name="nc_upload_confirm_send_multiple">將這些檔案發送到 %1$s?</string>
     <string name="nc_upload_confirm_send_multiple">將這些檔案發送到 %1$s?</string>
     <string name="nc_upload_confirm_send_single">將此檔案發送到 %1$s?</string>
     <string name="nc_upload_confirm_send_single">將此檔案發送到 %1$s?</string>

+ 5 - 4
app/src/main/res/values-zh-rTW/strings.xml

@@ -22,7 +22,7 @@
     <string name="clear_status_message_after">在……之後清空狀態訊息</string>
     <string name="clear_status_message_after">在……之後清空狀態訊息</string>
     <string name="close">關閉</string>
     <string name="close">關閉</string>
     <string name="continuous_voice_message_recording">鎖定錄音以連續錄製語音訊息</string>
     <string name="continuous_voice_message_recording">鎖定錄音以連續錄製語音訊息</string>
-    <string name="conversation_is_read_only">對話唯讀</string>
+    <string name="conversation_is_read_only">對話唯讀</string>
     <string name="conversations">對話</string>
     <string name="conversations">對話</string>
     <string name="create_conversation">建立對話</string>
     <string name="create_conversation">建立對話</string>
     <string name="create_issue">建立問題</string>
     <string name="create_issue">建立問題</string>
@@ -44,6 +44,7 @@
     <string name="file_list_loading">正在載入……</string>
     <string name="file_list_loading">正在載入……</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="filename_progress">%1$s (%2$d)</string>
     <string name="fourHours">4小時</string>
     <string name="fourHours">4小時</string>
+    <string name="get_invitations_error">擷取擱置中的邀請失敗</string>
     <string name="hint_edited_message">(已編輯)</string>
     <string name="hint_edited_message">(已編輯)</string>
     <string name="invisible">隱藏</string>
     <string name="invisible">隱藏</string>
     <string name="languages_error_message">無法擷取語言</string>
     <string name="languages_error_message">無法擷取語言</string>
@@ -114,8 +115,6 @@
     <string name="nc_certificate_dialog_title">請檢查憑證</string>
     <string name="nc_certificate_dialog_title">請檢查憑證</string>
     <string name="nc_certificate_error">您的SSL設定阻擋這連線。</string>
     <string name="nc_certificate_error">您的SSL設定阻擋這連線。</string>
     <string name="nc_change_cert_auth">變更驗證憑證</string>
     <string name="nc_change_cert_auth">變更驗證憑證</string>
-    <string name="nc_circle">圈子</string>
-    <string name="nc_circles">圈子</string>
     <string name="nc_clear_edit_button">清除編輯按鈕</string>
     <string name="nc_clear_edit_button">清除編輯按鈕</string>
     <string name="nc_clear_edit_message">清除編輯訊息</string>
     <string name="nc_clear_edit_message">清除編輯訊息</string>
     <string name="nc_clear_history">刪除所有訊息</string>
     <string name="nc_clear_history">刪除所有訊息</string>
@@ -341,10 +340,10 @@
     <string name="nc_push_to_talk_desc">在停用麥克風的情況下,點擊並按住即可使用按住以說話</string>
     <string name="nc_push_to_talk_desc">在停用麥克風的情況下,點擊並按住即可使用按住以說話</string>
     <string name="nc_remind">稍後提醒我</string>
     <string name="nc_remind">稍後提醒我</string>
     <string name="nc_remote_audio_off">遠端音訊關閉</string>
     <string name="nc_remote_audio_off">遠端音訊關閉</string>
-    <string name="nc_remove_circle_and_members">移除小圈圈與成員</string>
     <string name="nc_remove_from_favorites">取消我的最愛</string>
     <string name="nc_remove_from_favorites">取消我的最愛</string>
     <string name="nc_remove_group_and_members">移除群組與成員</string>
     <string name="nc_remove_group_and_members">移除群組與成員</string>
     <string name="nc_remove_participant">移除參與者</string>
     <string name="nc_remove_participant">移除參與者</string>
+    <string name="nc_remove_team_and_members">移除團隊與成員</string>
     <string name="nc_rename">重新命名對話</string>
     <string name="nc_rename">重新命名對話</string>
     <string name="nc_rename_confirm">重新命名</string>
     <string name="nc_rename_confirm">重新命名</string>
     <string name="nc_reply">回覆</string>
     <string name="nc_reply">回覆</string>
@@ -467,6 +466,8 @@
     <string name="nc_sort_by">排序</string>
     <string name="nc_sort_by">排序</string>
     <string name="nc_start_time">開始時間</string>
     <string name="nc_start_time">開始時間</string>
     <string name="nc_switch_account">切換帳號</string>
     <string name="nc_switch_account">切換帳號</string>
+    <string name="nc_team">團隊</string>
+    <string name="nc_teams">團隊</string>
     <string name="nc_upload_choose_local_files">選擇檔案</string>
     <string name="nc_upload_choose_local_files">選擇檔案</string>
     <string name="nc_upload_confirm_send_multiple">傳送這些檔案給 %1$s?</string>
     <string name="nc_upload_confirm_send_multiple">傳送這些檔案給 %1$s?</string>
     <string name="nc_upload_confirm_send_single">傳送檔案給 %1$s?</string>
     <string name="nc_upload_confirm_send_single">傳送檔案給 %1$s?</string>

+ 2 - 1
app/src/main/res/values/strings.xml

@@ -791,7 +791,7 @@ How to translate with transifex:
     <string name="nc_send_edit_message">Send Edit Message</string>
     <string name="nc_send_edit_message">Send Edit Message</string>
     <string name="nc_clear_edit_message">Clear Edit Message</string>
     <string name="nc_clear_edit_message">Clear Edit Message</string>
     <string name="edit_error_24_hours_old_message">Cannot Edit Messages older than 24 hours</string>
     <string name="edit_error_24_hours_old_message">Cannot Edit Messages older than 24 hours</string>
-    <string name="conversation_is_read_only">Conversation is read Only</string>
+    <string name="conversation_is_read_only">Conversation is read only</string>
     <string name="nc_edit_message_text">Edit Message Text</string>
     <string name="nc_edit_message_text">Edit Message Text</string>
     <string name="hint_edited_message">(edited)</string>
     <string name="hint_edited_message">(edited)</string>
     <string name="nc_conversation_not_found">Conversation not found</string>
     <string name="nc_conversation_not_found">Conversation not found</string>
@@ -800,4 +800,5 @@ How to translate with transifex:
     <string name="nc_edited_by">"Edited by "</string>
     <string name="nc_edited_by">"Edited by "</string>
     <string name="nc_clear_edit_button">clear Edit Button</string>
     <string name="nc_clear_edit_button">clear Edit Button</string>
     <string name="nc_edit_icon">Edit Icon</string>
     <string name="nc_edit_icon">Edit Icon</string>
+    <string name="get_invitations_error">Failed to fetch pending invitations</string>
 </resources>
 </resources>

+ 1 - 1
build.gradle

@@ -24,7 +24,7 @@
 buildscript {
 buildscript {
 
 
     ext {
     ext {
-        kotlinVersion = '1.9.22'
+        kotlinVersion = '1.9.23'
     }
     }
 
 
     repositories {
     repositories {

+ 94 - 88
gradle/verification-metadata.xml

@@ -111,6 +111,7 @@
             <trusting group="androidx.core"/>
             <trusting group="androidx.core"/>
             <trusting group="androidx.emoji2"/>
             <trusting group="androidx.emoji2"/>
             <trusting group="androidx.lifecycle"/>
             <trusting group="androidx.lifecycle"/>
+            <trusting group="androidx.media" name="media" version="1.7.0"/>
             <trusting group="androidx.preference"/>
             <trusting group="androidx.preference"/>
             <trusting group="androidx.recyclerview"/>
             <trusting group="androidx.recyclerview"/>
             <trusting group="androidx.room"/>
             <trusting group="androidx.room"/>
@@ -138,7 +139,10 @@
          <trusted-key id="A33A0B49A4C1AB590B0A4DDC1364C5E2DF3E99C5" group="org.reactivestreams" name="reactive-streams" version="1.0.3"/>
          <trusted-key id="A33A0B49A4C1AB590B0A4DDC1364C5E2DF3E99C5" group="org.reactivestreams" name="reactive-streams" version="1.0.3"/>
          <trusted-key id="A413F67D71BEEC23ADD0CE0ACB43338E060CF9FA" group="com.google.code.findbugs" name="jsr305" version="2.0.2"/>
          <trusted-key id="A413F67D71BEEC23ADD0CE0ACB43338E060CF9FA" group="com.google.code.findbugs" name="jsr305" version="2.0.2"/>
          <trusted-key id="A5BD02B93E7A40482EB1D66A5F69AD087600B22C" group="org.ow2.asm"/>
          <trusted-key id="A5BD02B93E7A40482EB1D66A5F69AD087600B22C" group="org.ow2.asm"/>
-         <trusted-key id="A5F483CD733A4EBAEA378B2AE88979FB9B30ACF2" group="^androidx[.]compose($|([.].*))" regex="true"/>
+         <trusted-key id="A5F483CD733A4EBAEA378B2AE88979FB9B30ACF2">
+            <trusting group="androidx.camera"/>
+            <trusting group="^androidx[.]compose($|([.].*))" regex="true"/>
+         </trusted-key>
          <trusted-key id="A6D6C97108B8585F91B158748671A8DF71296252" group="com.squareup" name="javapoet" version="1.10.0"/>
          <trusted-key id="A6D6C97108B8585F91B158748671A8DF71296252" group="com.squareup" name="javapoet" version="1.10.0"/>
          <trusted-key id="A7892505CF1A58076453E52D7999BEFBA1039E8B" group="net.bytebuddy"/>
          <trusted-key id="A7892505CF1A58076453E52D7999BEFBA1039E8B" group="net.bytebuddy"/>
          <trusted-key id="AA417737BD805456DB3CBDDE6601E5C08DCCBB96" group="info.picocli" name="picocli" version="4.7.5"/>
          <trusted-key id="AA417737BD805456DB3CBDDE6601E5C08DCCBB96" group="info.picocli" name="picocli" version="4.7.5"/>
@@ -450,6 +454,11 @@
             <sha256 value="a1fd8a9bd0a80c9f203065d01b76616d6675a3874c6b8bd1e87736dbfb318005" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="a1fd8a9bd0a80c9f203065d01b76616d6675a3874c6b8bd1e87736dbfb318005" origin="Generated by Gradle" reason="Artifact is not signed"/>
          </artifact>
          </artifact>
       </component>
       </component>
+      <component group="androidx.compose" name="compose-bom" version="2024.02.02">
+         <artifact name="compose-bom-2024.02.02.pom">
+            <sha256 value="9bfe92a8fa26491d64fc4c94621a8bdd0f61375fb815515236204503ec7cae6b" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="androidx.concurrent" name="concurrent-futures" version="1.0.0">
       <component group="androidx.concurrent" name="concurrent-futures" version="1.0.0">
          <artifact name="concurrent-futures-1.0.0.pom">
          <artifact name="concurrent-futures-1.0.0.pom">
             <sha256 value="4505b9a5e30a9418b59a9ad6702c3e4193aea6e691a3d03cf220c7640ad083e2" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="4505b9a5e30a9418b59a9ad6702c3e4193aea6e691a3d03cf220c7640ad083e2" origin="Generated by Gradle" reason="Artifact is not signed"/>
@@ -903,6 +912,14 @@
             <sha256 value="24f572989e6cb86468a0c7ef74b8b5df11d6d9fcb8f7a0d1c24d8bf017d77eb2" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="24f572989e6cb86468a0c7ef74b8b5df11d6d9fcb8f7a0d1c24d8bf017d77eb2" origin="Generated by Gradle" reason="Artifact is not signed"/>
          </artifact>
          </artifact>
       </component>
       </component>
+      <component group="androidx.media3" name="media3-common" version="1.3.0">
+         <artifact name="media3-common-1.3.0.aar">
+            <sha256 value="52997e0955075083a7121b86b61a199ccf582eb5d262061d9f4f397b4f6d8fe1" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+         <artifact name="media3-common-1.3.0.module">
+            <sha256 value="c9fac2836d01caa29aa98be9c3d22f4ca7246d62f2c815f256a8f0100a5e3c02" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+      </component>
       <component group="androidx.media3" name="media3-container" version="1.2.1">
       <component group="androidx.media3" name="media3-container" version="1.2.1">
          <artifact name="media3-container-1.2.1.aar">
          <artifact name="media3-container-1.2.1.aar">
             <sha256 value="e67d8b50fdb174aa23238f79b3583a485caca9658524b506b5ead6e9c47d1b64" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="e67d8b50fdb174aa23238f79b3583a485caca9658524b506b5ead6e9c47d1b64" origin="Generated by Gradle" reason="Artifact is not signed"/>
@@ -911,6 +928,14 @@
             <sha256 value="9005eb3c4693e829d3393c849f90a27138bc0ef3ccfbb7ca5f1c6d74ddcd3771" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="9005eb3c4693e829d3393c849f90a27138bc0ef3ccfbb7ca5f1c6d74ddcd3771" origin="Generated by Gradle" reason="Artifact is not signed"/>
          </artifact>
          </artifact>
       </component>
       </component>
+      <component group="androidx.media3" name="media3-container" version="1.3.0">
+         <artifact name="media3-container-1.3.0.aar">
+            <sha256 value="c6103c11666e03ceabeb6454b5bf0b9b51fdc93647f84dd02ee869a9c086269e" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+         <artifact name="media3-container-1.3.0.module">
+            <sha256 value="def5bc92680c5da8b93c09c089fcb979c6c358df2a40e1923831160c9db3c4ce" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+      </component>
       <component group="androidx.media3" name="media3-database" version="1.2.1">
       <component group="androidx.media3" name="media3-database" version="1.2.1">
          <artifact name="media3-database-1.2.1.aar">
          <artifact name="media3-database-1.2.1.aar">
             <sha256 value="254d600819ea03ec4c21e83c3abfefd22c1d1864074e5caaa753188f6c451195" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="254d600819ea03ec4c21e83c3abfefd22c1d1864074e5caaa753188f6c451195" origin="Generated by Gradle" reason="Artifact is not signed"/>
@@ -919,6 +944,14 @@
             <sha256 value="d932fb4d0f211264a98f128240fa1e5eb55a4db233b333b89c0b65f6a1d61e18" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="d932fb4d0f211264a98f128240fa1e5eb55a4db233b333b89c0b65f6a1d61e18" origin="Generated by Gradle" reason="Artifact is not signed"/>
          </artifact>
          </artifact>
       </component>
       </component>
+      <component group="androidx.media3" name="media3-database" version="1.3.0">
+         <artifact name="media3-database-1.3.0.aar">
+            <sha256 value="8386d2c445d194268d4af2d63abb31b028da5f742fc38c6365bc2c40ab641383" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+         <artifact name="media3-database-1.3.0.module">
+            <sha256 value="a5b29d8786c606ad85979c214d3a4a851fea1592dfc068f840ab666c0ed1c044" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+      </component>
       <component group="androidx.media3" name="media3-datasource" version="1.2.1">
       <component group="androidx.media3" name="media3-datasource" version="1.2.1">
          <artifact name="media3-datasource-1.2.1.aar">
          <artifact name="media3-datasource-1.2.1.aar">
             <sha256 value="6da0f6885c853a1ff9e2874f8ecf684d7b8d18d45d8c18bc1b7c495f05a5b4d5" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="6da0f6885c853a1ff9e2874f8ecf684d7b8d18d45d8c18bc1b7c495f05a5b4d5" origin="Generated by Gradle" reason="Artifact is not signed"/>
@@ -927,6 +960,14 @@
             <sha256 value="1f4c6af52a332bc85f729f10e7a49e1fbdb884293bdfa9c0149d9b88e1640f78" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="1f4c6af52a332bc85f729f10e7a49e1fbdb884293bdfa9c0149d9b88e1640f78" origin="Generated by Gradle" reason="Artifact is not signed"/>
          </artifact>
          </artifact>
       </component>
       </component>
+      <component group="androidx.media3" name="media3-datasource" version="1.3.0">
+         <artifact name="media3-datasource-1.3.0.aar">
+            <sha256 value="ad94437e3c3dc5b9fb4a5c2dc64aa912a91125519742ec2fc3ae9ebfacc62381" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+         <artifact name="media3-datasource-1.3.0.module">
+            <sha256 value="b195d1c5a69d8fe08401b3286e521ab306691f59b37685f890eb7a37e9928e5d" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+      </component>
       <component group="androidx.media3" name="media3-decoder" version="1.2.1">
       <component group="androidx.media3" name="media3-decoder" version="1.2.1">
          <artifact name="media3-decoder-1.2.1.aar">
          <artifact name="media3-decoder-1.2.1.aar">
             <sha256 value="8e448a83aff47c7eadb4dbdbfce48086adcdf850bec833450ae69206f83e276d" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="8e448a83aff47c7eadb4dbdbfce48086adcdf850bec833450ae69206f83e276d" origin="Generated by Gradle" reason="Artifact is not signed"/>
@@ -935,6 +976,14 @@
             <sha256 value="bf37a49e17e4589ceb3148c0c9314cf4b5d87903c78b316de3809cd21daf70bc" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="bf37a49e17e4589ceb3148c0c9314cf4b5d87903c78b316de3809cd21daf70bc" origin="Generated by Gradle" reason="Artifact is not signed"/>
          </artifact>
          </artifact>
       </component>
       </component>
+      <component group="androidx.media3" name="media3-decoder" version="1.3.0">
+         <artifact name="media3-decoder-1.3.0.aar">
+            <sha256 value="c4799cd411061a654ad9c73fbc3d1a95945fce40f1bbceaf219e17b8a56fa1c1" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+         <artifact name="media3-decoder-1.3.0.module">
+            <sha256 value="ff516f879984c1dafd1140f6ba6cf4a0bc29ce17c8f07d4a5020a7d8ae4b5076" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+      </component>
       <component group="androidx.media3" name="media3-exoplayer" version="1.2.1">
       <component group="androidx.media3" name="media3-exoplayer" version="1.2.1">
          <artifact name="media3-exoplayer-1.2.1.aar">
          <artifact name="media3-exoplayer-1.2.1.aar">
             <sha256 value="85204c2fbcb4ea68fd11b9c45da16b691898147a21e3e9d95796ad5b45c41f30" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="85204c2fbcb4ea68fd11b9c45da16b691898147a21e3e9d95796ad5b45c41f30" origin="Generated by Gradle" reason="Artifact is not signed"/>
@@ -943,6 +992,14 @@
             <sha256 value="197a1c69d1aeb7a71b8c60a79579a7e8db19c53c780d32b129747d5a54a7ad34" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="197a1c69d1aeb7a71b8c60a79579a7e8db19c53c780d32b129747d5a54a7ad34" origin="Generated by Gradle" reason="Artifact is not signed"/>
          </artifact>
          </artifact>
       </component>
       </component>
+      <component group="androidx.media3" name="media3-exoplayer" version="1.3.0">
+         <artifact name="media3-exoplayer-1.3.0.aar">
+            <sha256 value="68b96cea88fca07141db6d126e4c182b424be6a650571e4c52d8de1d01b4f3e8" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+         <artifact name="media3-exoplayer-1.3.0.module">
+            <sha256 value="83720486de4c5bfd784d3ca30877dedba513d0dd4a097a69fabddd8cd00f10f9" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+      </component>
       <component group="androidx.media3" name="media3-extractor" version="1.2.1">
       <component group="androidx.media3" name="media3-extractor" version="1.2.1">
          <artifact name="media3-extractor-1.2.1.aar">
          <artifact name="media3-extractor-1.2.1.aar">
             <sha256 value="66955b7f5bcd09d34999723b77ccc727abcdb96fda914dc2e663c282718feeed" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="66955b7f5bcd09d34999723b77ccc727abcdb96fda914dc2e663c282718feeed" origin="Generated by Gradle" reason="Artifact is not signed"/>
@@ -951,6 +1008,14 @@
             <sha256 value="626d3549cb3d820e7788499d2d435bb93a74b9b92357acb494cf0912db1c9df5" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="626d3549cb3d820e7788499d2d435bb93a74b9b92357acb494cf0912db1c9df5" origin="Generated by Gradle" reason="Artifact is not signed"/>
          </artifact>
          </artifact>
       </component>
       </component>
+      <component group="androidx.media3" name="media3-extractor" version="1.3.0">
+         <artifact name="media3-extractor-1.3.0.aar">
+            <sha256 value="bc6e578c7e5c6d0cb88914f2d5c6210f2e1319716aba1a66737463b1bf937783" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+         <artifact name="media3-extractor-1.3.0.module">
+            <sha256 value="e8b9401da3cbd0556aaf39c20417432438321dbe0020e947df73080b80dcc057" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+      </component>
       <component group="androidx.media3" name="media3-ui" version="1.2.1">
       <component group="androidx.media3" name="media3-ui" version="1.2.1">
          <artifact name="media3-ui-1.2.1.aar">
          <artifact name="media3-ui-1.2.1.aar">
             <sha256 value="d20c0cfb29b9e412e1941fc26d856318d1af912848e3deb972856950f661cadf" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="d20c0cfb29b9e412e1941fc26d856318d1af912848e3deb972856950f661cadf" origin="Generated by Gradle" reason="Artifact is not signed"/>
@@ -959,6 +1024,14 @@
             <sha256 value="e2531707a9e6c2f64b2a2b182ba110de08e9c96201abffcf6432d4261c7ac016" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="e2531707a9e6c2f64b2a2b182ba110de08e9c96201abffcf6432d4261c7ac016" origin="Generated by Gradle" reason="Artifact is not signed"/>
          </artifact>
          </artifact>
       </component>
       </component>
+      <component group="androidx.media3" name="media3-ui" version="1.3.0">
+         <artifact name="media3-ui-1.3.0.aar">
+            <sha256 value="b1e10cc99da4db61ef29dd07e2c42bb0ee55e1b6e21ed577f94a545bd116c448" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+         <artifact name="media3-ui-1.3.0.module">
+            <sha256 value="3c43fd4ebe4fcfcf94651db3213f96b8621ee2ba848a0f69c55091adae4ac237" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+      </component>
       <component group="androidx.multidex" name="multidex" version="2.0.1">
       <component group="androidx.multidex" name="multidex" version="2.0.1">
          <artifact name="multidex-2.0.1.aar">
          <artifact name="multidex-2.0.1.aar">
             <sha256 value="42dd32ff9f97f85771b82a20003a8d70f68ab7b4ba328964312ce0732693db09" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="42dd32ff9f97f85771b82a20003a8d70f68ab7b4ba328964312ce0732693db09" origin="Generated by Gradle" reason="Artifact is not signed"/>
@@ -2407,100 +2480,28 @@
             <sha256 value="8567749803d3d0a5c63fc5186992017f2dd3dff66ffd4140bd2b58ce0a176ef0" origin="Generated by Gradle" reason="Artifact is not signed"/>
             <sha256 value="8567749803d3d0a5c63fc5186992017f2dd3dff66ffd4140bd2b58ce0a176ef0" origin="Generated by Gradle" reason="Artifact is not signed"/>
          </artifact>
          </artifact>
       </component>
       </component>
-      <component group="com.github.nextcloud.android-common" name="core" version="0.14.0">
-         <artifact name="core-0.14.0.aar">
-            <sha256 value="d370010eeae5928f525f31c09e33f9c78ed5e610af4b9f84b1ba68ce0727267b" origin="Generated by Gradle" reason="Artifact is not signed"/>
+      <component group="com.github.nextcloud.android-common" name="core" version="0.18.0">
+         <artifact name="core-0.18.0.aar">
+            <sha256 value="6df9110e5ab50846414102cc75d541fcb488d36a10b7c8b6c12908c344ad3a82" origin="Generated by Gradle" reason="Artifact is not signed"/>
          </artifact>
          </artifact>
-         <artifact name="core-0.14.0.module">
-            <sha256 value="89c21ebe5a3aedd8c910bbe0f7c0c6ea6f30dc9dba58d68b39bee3759a7dc52f" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         <artifact name="core-0.18.0.module">
+            <sha256 value="1e92c76d638cb275a3f9432641a0c5664b1eaabcc2da67bd809e787c3371fca5" origin="Generated by Gradle" reason="Artifact is not signed"/>
          </artifact>
          </artifact>
       </component>
       </component>
-      <component group="com.github.nextcloud.android-common" name="core" version="0.15.0">
-         <artifact name="core-0.15.0.aar">
-            <sha256 value="d370010eeae5928f525f31c09e33f9c78ed5e610af4b9f84b1ba68ce0727267b" origin="Generated by Gradle" reason="Artifact is not signed"/>
+      <component group="com.github.nextcloud.android-common" name="material-color-utilities" version="0.18.0">
+         <artifact name="material-color-utilities-0.18.0.jar">
+            <sha256 value="e04a3f4a3caff6e4b2ce3f14f91f0485ab1f012af652102eba61ab6bcf3d8240" origin="Generated by Gradle" reason="Artifact is not signed"/>
          </artifact>
          </artifact>
-         <artifact name="core-0.15.0.module">
-            <sha256 value="609090237e7d6c9745dcb883819e53bb4c9337b89740aa88fd1c56d73ecfa56b" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         <artifact name="material-color-utilities-0.18.0.module">
+            <sha256 value="708823ec85484322da28afa177689bc2adadf0d88f766407328353e0c755e63b" origin="Generated by Gradle" reason="Artifact is not signed"/>
          </artifact>
          </artifact>
       </component>
       </component>
-      <component group="com.github.nextcloud.android-common" name="core" version="0.16.0">
-         <artifact name="core-0.16.0.aar">
-            <sha256 value="d370010eeae5928f525f31c09e33f9c78ed5e610af4b9f84b1ba68ce0727267b" origin="Generated by Gradle" reason="Artifact is not signed"/>
+      <component group="com.github.nextcloud.android-common" name="ui" version="0.18.0">
+         <artifact name="ui-0.18.0.aar">
+            <sha256 value="7d900a930d7ad1f7de91177b8b661abef13deef032493cee99fe9842f85bcf16" origin="Generated by Gradle" reason="Artifact is not signed"/>
          </artifact>
          </artifact>
-         <artifact name="core-0.16.0.module">
-            <sha256 value="2b9fe04f11de743212d44d35aeb084996637cf9dcc7a25bcf7b76b4af23e8479" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-      </component>
-      <component group="com.github.nextcloud.android-common" name="core" version="0.17.0">
-         <artifact name="core-0.17.0.aar">
-            <sha256 value="65d89207886467066072a394c07cc8d58bb80f115704a427306c27c08c6e8344" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-         <artifact name="core-0.17.0.module">
-            <sha256 value="c566a8a9d41b8e804c52539975cfc017d105e9fe2730e74f936ed948f55bc6dc" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-      </component>
-      <component group="com.github.nextcloud.android-common" name="material-color-utilities" version="0.14.0">
-         <artifact name="material-color-utilities-0.14.0.jar">
-            <sha256 value="bfcd5205b056b948bc6ff9a556898188f4a4e92179c723906e10f1164b776eed" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-         <artifact name="material-color-utilities-0.14.0.module">
-            <sha256 value="b12eadfbfe39b7fb6e62a13c9aca93b468e66a0cf0a2d841b849fe86ebc2d605" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-      </component>
-      <component group="com.github.nextcloud.android-common" name="material-color-utilities" version="0.15.0">
-         <artifact name="material-color-utilities-0.15.0.jar">
-            <sha256 value="ced5cd660ebfa6aa7461a2157f67a8e76ae12830f759adec0b51631de4ac5434" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-         <artifact name="material-color-utilities-0.15.0.module">
-            <sha256 value="edc221870d47808e96595f11d58dc6f45e50a9d8979658f024ae9a816778ecfb" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-      </component>
-      <component group="com.github.nextcloud.android-common" name="material-color-utilities" version="0.16.0">
-         <artifact name="material-color-utilities-0.16.0.jar">
-            <sha256 value="f402b2986f1a524dcb90d004e066541f16a3cb792b281482f623bd973a0adcd0" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-         <artifact name="material-color-utilities-0.16.0.module">
-            <sha256 value="9f78238c228e06485c0f9409b0825064a2bbd8f381db964b129b76587b03277c" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-      </component>
-      <component group="com.github.nextcloud.android-common" name="material-color-utilities" version="0.17.0">
-         <artifact name="material-color-utilities-0.17.0.jar">
-            <sha256 value="188a63e6c1d0d7f4c999e2f4a7476a16f6da0ee8969cc5b489449baf3477619d" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-         <artifact name="material-color-utilities-0.17.0.module">
-            <sha256 value="c6239f76c0d68b7126c4233e84fd3de9063b86e76084c602f296010192536a74" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-      </component>
-      <component group="com.github.nextcloud.android-common" name="ui" version="0.14.0">
-         <artifact name="ui-0.14.0.aar">
-            <sha256 value="2ff1b8ca1ce4d4151ce967c4704a4def19a128d3f710491872e007217f3ac84f" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-         <artifact name="ui-0.14.0.module">
-            <sha256 value="a600ef42a3ffe9a5900893f7f68052272ed8749ae2c5c44471f792f9d1d9d01f" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-      </component>
-      <component group="com.github.nextcloud.android-common" name="ui" version="0.15.0">
-         <artifact name="ui-0.15.0.aar">
-            <sha256 value="7e520034d730a11f5089548a8f15fbdd5d5054f8f0465f711664235b3939b78d" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-         <artifact name="ui-0.15.0.module">
-            <sha256 value="ac04b3a93aae2e9e8585d01447210fe0c5c85dec13e241b5e7c8956a3ed8a962" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-      </component>
-      <component group="com.github.nextcloud.android-common" name="ui" version="0.16.0">
-         <artifact name="ui-0.16.0.aar">
-            <sha256 value="1c9ed8fed68e46c0aa9c63aefda3f18349ff590b1069fd286fa322bfc66c6307" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-         <artifact name="ui-0.16.0.module">
-            <sha256 value="c588c69cd8540cb9bd57899df0b833eb9bb3787e10ac9ea3476b2005c98d9543" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-      </component>
-      <component group="com.github.nextcloud.android-common" name="ui" version="0.17.0">
-         <artifact name="ui-0.17.0.aar">
-            <sha256 value="179a48b24d5e0b9f4bfdd567d2ec8a66f6816689d745aab9b528b022932fb9fe" origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-         <artifact name="ui-0.17.0.module">
-            <sha256 value="2ac34079e37123543bfc0fa78271424978b81baa5866d21884ec4084d6157573" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         <artifact name="ui-0.18.0.module">
+            <sha256 value="abbece3fec4a3a1b706401b26e10d0290ac394d04d89343d32da682527579846" origin="Generated by Gradle" reason="Artifact is not signed"/>
          </artifact>
          </artifact>
       </component>
       </component>
       <component group="com.github.wooplr" name="Spotlight" version="1.3">
       <component group="com.github.wooplr" name="Spotlight" version="1.3">
@@ -2851,6 +2852,11 @@
             <sha256 value="9193d07bf4f660108d7358e58b27d21b44e34e80d6734e98e21916376f270de2" origin="Generated by Gradle"/>
             <sha256 value="9193d07bf4f660108d7358e58b27d21b44e34e80d6734e98e21916376f270de2" origin="Generated by Gradle"/>
          </artifact>
          </artifact>
       </component>
       </component>
+      <component group="com.google.guava" name="guava" version="32.1.3-android">
+         <artifact name="guava-32.1.3-jre.jar">
+            <sha256 value="6d4e2b5a118aab62e6e5e29d185a0224eed82c85c40ac3d33cf04a270c3b3744" origin="Generated by Gradle" reason="Artifact is not signed"/>
+         </artifact>
+      </component>
       <component group="com.google.guava" name="guava-parent" version="26.0-android">
       <component group="com.google.guava" name="guava-parent" version="26.0-android">
          <artifact name="guava-parent-26.0-android.pom">
          <artifact name="guava-parent-26.0-android.pom">
             <sha256 value="f8698ab46ca996ce889c1afc8ca4f25eb8ac6b034dc898d4583742360016cc04" origin="Generated by Gradle"/>
             <sha256 value="f8698ab46ca996ce889c1afc8ca4f25eb8ac6b034dc898d4583742360016cc04" origin="Generated by Gradle"/>