diff --git a/README.md b/README.md
index be71a64..8bd80b0 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,6 @@
~ SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
~ SPDX-License-Identifier: GPL-3.0-or-later
-->
-# Only a copy of the Nextcloud Repository on GitHub
-
# [Nextcloud](https://nextcloud.com) Talk for Android :speech_balloon:
[](https://drone.nextcloud.com/nextcloud/talk-android) [](https://www.codacy.com/gh/nextcloud/talk-android/dashboard) [](https://github.com/nextcloud/talk-android/releases/latest) [](https://api.reuse.software/info/github.com/nextcloud/talk-android)
@@ -14,10 +12,6 @@
[
](https://f-droid.org/packages/com.nextcloud.talk2/)
- [
](https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22com.nextcloud.talk2%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2Fnextcloud%2Ftalk-android%22%2C%22author%22%3A%22nextcloud%22%2C%22name%22%3A%22Talk%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Atrue%2C%5C%22sortMethodChoice%5C%22%3A%5C%22date%5C%22%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22releaseTitleAsVersion%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%22%5C%22%2C%5C%22versionDetection%5C%22%3Atrue%2C%5C%22releaseDateAsVersion%5C%22%3Afalse%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22%5Enextcloud.*%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22Nextcloud%20Talk%5C%22%2C%5C%22appAuthor%5C%22%3A%5C%22%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22allowInsecure%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22%5C%22%2C%5C%22refreshBeforeDownload%5C%22%3Atrue%7D%22%2C%22overrideSource%22%3Anull%7D)
-
Please note that Notifications won't work with the F-Droid version due to missing Google Play Services.
@@ -118,4 +112,4 @@ If you have problems to receive talk notifications on your android phone, please
## Remarks :scroll:
-Google Play and the Google Play logo are trademarks of Google Inc.
+Google Play and the Google Play logo are trademarks of Google Inc.
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index c510cbb..a3d958b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,9 +13,9 @@ import com.github.spotbugs.snom.Effort
import com.github.spotbugs.snom.SpotBugsTask
plugins {
- id "org.jetbrains.kotlin.plugin.compose" version "2.2.20"
+ id "org.jetbrains.kotlin.plugin.compose" version "2.2.10"
id "org.jetbrains.kotlin.kapt"
- id 'com.google.devtools.ksp' version '2.2.20-2.0.3'
+ id 'com.google.devtools.ksp' version '2.2.10-2.0.2'
}
apply plugin: 'com.android.application'
@@ -39,8 +39,8 @@ android {
// mayor.minor.hotfix.increment (for increment: 01-50=Alpha / 51-89=RC / 90-99=stable)
// xx .xxx .xx .xx
- versionCode 230000009
- versionName "23.0.0 Alpha 09"
+ versionCode 220000290
+ versionName "22.0.2"
flavorDimensions "default"
renderscriptTargetApi = 19
@@ -156,20 +156,20 @@ kapt {
}
ext {
- androidxCameraVersion = "1.5.0"
+ androidxCameraVersion = "1.4.2"
coilKtVersion = "2.7.0"
- daggerVersion = "2.57.2"
- emojiVersion = "1.6.0"
+ daggerVersion = "2.57.1"
+ emojiVersion = "1.5.0"
fidoVersion = "4.1.0-patch2"
- lifecycleVersion = '2.9.4'
+ lifecycleVersion = '2.9.3'
okhttpVersion = "4.12.0"
markwonVersion = "4.6.2"
materialDialogsVersion = "3.3.0"
parcelerVersion = "1.1.13"
prismVersion = "2.0.0"
retrofit2Version = "3.0.0"
- roomVersion = "2.8.0"
- workVersion = "2.10.5"
+ roomVersion = "2.7.2"
+ workVersion = "2.10.3"
espressoVersion = "3.7.0"
androidxTestVersion = "1.5.0"
media3_version = "1.8.0"
@@ -186,12 +186,12 @@ configurations.configureEach {
dependencies {
implementation "androidx.room:room-testing-android:${roomVersion}"
- implementation 'androidx.compose.foundation:foundation-layout:1.9.2'
+ implementation 'androidx.compose.foundation:foundation-layout:1.9.0'
spotbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.14.0'
spotbugsPlugins 'com.mebigfatguy.fb-contrib:fb-contrib:7.6.14'
detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:1.23.8")
- implementation("androidx.compose.runtime:runtime:1.9.2")
+ implementation("androidx.compose.runtime:runtime:1.9.0")
implementation 'androidx.preference:preference-ktx:1.2.1'
implementation 'androidx.datastore:datastore-core:1.1.7'
implementation 'androidx.datastore:datastore-preferences:1.1.7'
@@ -289,7 +289,7 @@ dependencies {
implementation "com.afollestad.material-dialogs:bottomsheets:${materialDialogsVersion}"
implementation "com.afollestad.material-dialogs:lifecycle:${materialDialogsVersion}"
- implementation 'com.google.code.gson:gson:2.13.2'
+ implementation 'com.google.code.gson:gson:2.13.1'
implementation "androidx.media3:media3-exoplayer:$media3_version"
implementation "androidx.media3:media3-ui:$media3_version"
@@ -315,11 +315,11 @@ dependencies {
implementation 'com.github.nextcloud.android-common:ui:0.28.0'
implementation 'com.github.nextcloud-deps:android-talk-webrtc:132.6834.0'
- gplayImplementation 'com.google.android.gms:play-services-base:18.8.0'
- gplayImplementation "com.google.firebase:firebase-messaging:25.0.1"
+ gplayImplementation 'com.google.android.gms:play-services-base:18.6.0'
+ gplayImplementation "com.google.firebase:firebase-messaging:24.1.2"
//compose
- implementation(platform("androidx.compose:compose-bom:2025.09.00"))
+ implementation(platform("androidx.compose:compose-bom:2025.08.01"))
implementation("androidx.compose.ui:ui")
implementation 'androidx.compose.material3:material3:1.3.2'
implementation("androidx.compose.ui:ui-tooling-preview")
@@ -328,18 +328,18 @@ dependencies {
//tests
testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.13.4'
- androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.9.2")
+ androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.9.0")
debugImplementation("androidx.compose.ui:ui-test-manifest")
testImplementation 'junit:junit:4.13.2'
- testImplementation 'org.mockito:mockito-core:5.20.0'
+ testImplementation 'org.mockito:mockito-core:5.19.0'
testImplementation 'androidx.arch.core:core-testing:2.2.0'
androidTestImplementation "androidx.test:core:1.7.0"
androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.2"
androidTestImplementation 'androidx.test:core-ktx:1.7.0'
- androidTestImplementation 'org.mockito:mockito-android:5.20.0'
+ androidTestImplementation 'org.mockito:mockito-android:5.19.0'
androidTestImplementation "androidx.work:work-testing:${workVersion}"
// Espresso core
androidTestImplementation ("androidx.test.espresso:espresso-core:$espressoVersion", {
@@ -353,14 +353,14 @@ dependencies {
androidTestImplementation('com.android.support.test.espresso:espresso-intents:3.0.2')
- androidTestImplementation(platform("androidx.compose:compose-bom:2025.09.00"))
+ androidTestImplementation(platform("androidx.compose:compose-bom:2025.08.01"))
testImplementation "org.mockito.kotlin:mockito-kotlin:$mockitoKotlinVersion"
testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines_version"
testImplementation 'org.junit.vintage:junit-vintage-engine:5.13.4' // DO NOT REMOVE
testImplementation "androidx.room:room-testing:${roomVersion}"
testImplementation("com.squareup.okhttp3:mockwebserver:$okhttpVersion")
- testImplementation("com.google.dagger:hilt-android-testing:2.57.2")
+ testImplementation("com.google.dagger:hilt-android-testing:2.57.1")
testImplementation("org.robolectric:robolectric:4.16")
}
diff --git a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt
index 6eb2c4f..16e2683 100644
--- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt
+++ b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt
@@ -532,12 +532,12 @@ class CallActivity : CallBaseActivity() {
)
}
- when (CapabilitiesUtil.getRecordingConsentType(conversationUser!!.capabilities!!.spreedCapability!!)) {
+ when (CapabilitiesUtil.getRecordingConsentType(conversationUser.capabilities!!.spreedCapability!!)) {
CapabilitiesUtil.RECORDING_CONSENT_NOT_REQUIRED -> initiateCall()
CapabilitiesUtil.RECORDING_CONSENT_REQUIRED -> askForRecordingConsent()
CapabilitiesUtil.RECORDING_CONSENT_DEPEND_ON_CONVERSATION -> {
val getRoomApiVersion = ApiUtils.getConversationApiVersion(
- conversationUser!!,
+ conversationUser,
intArrayOf(ApiUtils.API_V4, 1)
)
ncApi!!.getRoom(credentials, ApiUtils.getUrlForRoom(getRoomApiVersion, baseUrl, roomToken))
diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
index aecdd39..7b6d685 100644
--- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
+++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
@@ -3255,7 +3255,8 @@ class ChatActivity :
}
val searchItem = menu.findItem(R.id.conversation_search)
- searchItem.isVisible = CapabilitiesUtil.isUnifiedSearchAvailable(spreedCapabilities) &&
+ searchItem.isVisible =
+ hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.UNIFIED_SEARCH) &&
currentConversation!!.remoteServer.isNullOrEmpty() &&
!isChatThread()
diff --git a/app/src/main/java/com/nextcloud/talk/contextchat/ContextChatViewModel.kt b/app/src/main/java/com/nextcloud/talk/contextchat/ContextChatViewModel.kt
index 462725d..e1aaf17 100644
--- a/app/src/main/java/com/nextcloud/talk/contextchat/ContextChatViewModel.kt
+++ b/app/src/main/java/com/nextcloud/talk/contextchat/ContextChatViewModel.kt
@@ -60,7 +60,7 @@ class ContextChatViewModel @Inject constructor(private val chatNetworkDataSource
token = token,
messageId = messageId,
limit = LIMIT,
- threadId = threadId?.toInt()
+ threadId = threadId?.toIntOrNull()
)
if (threadId.isNullOrEmpty()) {
diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt
index b7d0c3a..926bafd 100644
--- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt
+++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt
@@ -89,6 +89,8 @@ import com.nextcloud.talk.contacts.ContactsActivity
import com.nextcloud.talk.contacts.ContactsUiState
import com.nextcloud.talk.contacts.ContactsViewModel
import com.nextcloud.talk.contacts.RoomUiState
+import com.nextcloud.talk.contextchat.ContextChatView
+import com.nextcloud.talk.contextchat.ContextChatViewModel
import com.nextcloud.talk.conversationlist.viewmodels.ConversationsListViewModel
import com.nextcloud.talk.data.network.NetworkMonitor
import com.nextcloud.talk.data.user.model.User
@@ -113,8 +115,6 @@ import com.nextcloud.talk.threadsoverview.ThreadsOverviewActivity
import com.nextcloud.talk.ui.BackgroundVoiceMessageCard
import com.nextcloud.talk.ui.dialog.ChooseAccountDialogFragment
import com.nextcloud.talk.ui.dialog.ChooseAccountShareToDialogFragment
-import com.nextcloud.talk.contextchat.ContextChatView
-import com.nextcloud.talk.contextchat.ContextChatViewModel
import com.nextcloud.talk.ui.dialog.ConversationsListBottomDialog
import com.nextcloud.talk.ui.dialog.FilterConversationFragment
import com.nextcloud.talk.ui.dialog.FilterConversationFragment.Companion.ARCHIVE
@@ -125,7 +125,6 @@ import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.BrandingUtils
import com.nextcloud.talk.utils.CapabilitiesUtil.hasSpreedFeatureCapability
import com.nextcloud.talk.utils.CapabilitiesUtil.isServerEOL
-import com.nextcloud.talk.utils.CapabilitiesUtil.isUnifiedSearchAvailable
import com.nextcloud.talk.utils.ClosedInterfaceImpl
import com.nextcloud.talk.utils.ConversationUtils
import com.nextcloud.talk.utils.FileUtils
@@ -319,7 +318,7 @@ class ConversationsListActivity :
return
}
currentUser?.capabilities?.spreedCapability?.let { spreedCapabilities ->
- if (isUnifiedSearchAvailable(spreedCapabilities)) {
+ if (hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.UNIFIED_SEARCH)) {
searchHelper = MessageSearchHelper(unifiedSearchRepository)
}
}
@@ -1072,7 +1071,7 @@ class ConversationsListActivity :
}
private fun fetchPendingInvitations() {
- if (hasSpreedFeatureCapability(currentUser!!.capabilities!!.spreedCapability!!, SpreedFeatures.FEDERATION_V1)) {
+ if (hasSpreedFeatureCapability(currentUser?.capabilities?.spreedCapability, SpreedFeatures.FEDERATION_V1)) {
binding.conversationListHintInclude.conversationListHintLayout.setOnClickListener {
val intent = Intent(this, InvitationsActivity::class.java)
startActivity(intent)
@@ -1203,7 +1202,7 @@ class ConversationsListActivity :
searchableConversationItems.clear()
searchableConversationItems.addAll(conversationItemsWithHeader)
if (hasSpreedFeatureCapability(
- currentUser!!.capabilities!!.spreedCapability!!,
+ currentUser?.capabilities?.spreedCapability,
SpreedFeatures.LISTABLE_ROOMS
)
) {
@@ -1464,7 +1463,11 @@ class ConversationsListActivity :
adapter?.filterItems()
}
- if (isUnifiedSearchAvailable(currentUser!!.capabilities!!.spreedCapability!!)) {
+ if (hasSpreedFeatureCapability(
+ currentUser?.capabilities?.spreedCapability,
+ SpreedFeatures.UNIFIED_SEARCH
+ )
+ ) {
startMessageSearch(filter)
}
} else {
@@ -1584,7 +1587,7 @@ class ConversationsListActivity :
selectedConversation = conversation
if (selectedConversation != null) {
val hasChatPermission = ParticipantPermissions(
- currentUser!!.capabilities!!.spreedCapability!!,
+ currentUser?.capabilities?.spreedCapability,
selectedConversation!!
)
.hasChatPermission()
@@ -1612,11 +1615,11 @@ class ConversationsListActivity :
private fun shouldShowLobby(conversation: ConversationModel): Boolean {
val participantPermissions = ParticipantPermissions(
- currentUser!!.capabilities?.spreedCapability!!,
+ currentUser?.capabilities?.spreedCapability,
selectedConversation!!
)
return conversation.lobbyState == ConversationEnums.LobbyState.LOBBY_STATE_MODERATORS_ONLY &&
- !ConversationUtils.canModerate(conversation, currentUser!!.capabilities!!.spreedCapability!!) &&
+ !ConversationUtils.canModerate(conversation, currentUser?.capabilities?.spreedCapability) &&
!participantPermissions.canIgnoreLobby()
}
diff --git a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.kt
index 4a996cb..0e2c715 100644
--- a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.kt
+++ b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.kt
@@ -232,7 +232,7 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
bundle.putInt(BundleKeys.KEY_CALL_FLAG, conversation.callFlag)
val participantPermission = ParticipantPermissions(
- userBeingCalled!!.capabilities!!.spreedCapability!!,
+ userBeingCalled?.capabilities?.spreedCapability,
conversation
)
bundle.putBoolean(
diff --git a/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt b/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt
index 5786ca4..d5ba256 100644
--- a/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt
+++ b/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt
@@ -244,7 +244,7 @@ class ProfileActivity : BaseActivity() {
binding.emptyList.root.visibility = View.GONE
binding.userinfoList.visibility = View.VISIBLE
if (CapabilitiesUtil.hasSpreedFeatureCapability(
- currentUser!!.capabilities!!.spreedCapability!!,
+ currentUser?.capabilities?.spreedCapability,
SpreedFeatures.TEMP_USER_AVATAR_API
)
) {
diff --git a/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt b/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt
index 21e8f56..c30df1d 100644
--- a/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt
+++ b/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt
@@ -945,7 +945,7 @@ class SettingsActivity :
binding.settingsShowNotificationWarning.visibility = View.GONE
}
- if (CapabilitiesUtil.isReadStatusAvailable(currentUser!!.capabilities!!.spreedCapability!!)) {
+ if (CapabilitiesUtil.isReadStatusAvailable(currentUser?.capabilities?.spreedCapability)) {
binding.settingsReadPrivacySwitch.isChecked = !CapabilitiesUtil.isReadStatusPrivate(currentUser!!)
} else {
binding.settingsReadPrivacy.visibility = View.GONE
diff --git a/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt b/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt
index 75af1dd..4eda16d 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt
+++ b/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt
@@ -100,11 +100,13 @@ object CapabilitiesUtil {
//region SpreedCapabilities
@JvmStatic
- fun hasSpreedFeatureCapability(spreedCapabilities: SpreedCapability, spreedFeatures: SpreedFeatures): Boolean {
- if (spreedCapabilities.features != null) {
- return spreedCapabilities.features!!.contains(spreedFeatures.value)
+ fun hasSpreedFeatureCapability(spreedCapabilities: SpreedCapability?, spreedFeatures: SpreedFeatures): Boolean {
+ if (spreedCapabilities == null) {
+ Log.e(TAG, "spreedCapabilities were null when checking capability ${spreedFeatures.value}")
+ return false
}
- return false
+
+ return spreedCapabilities.features?.contains(spreedFeatures.value) == true
}
fun isSharedItemsAvailable(spreedCapabilities: SpreedCapability): Boolean =
@@ -136,12 +138,16 @@ object CapabilitiesUtil {
return CONVERSATION_DESCRIPTION_LENGTH_FOR_OLD_SERVER
}
- fun isReadStatusAvailable(spreedCapabilities: SpreedCapability): Boolean {
- if (spreedCapabilities.config?.containsKey("chat") == true) {
- val map: Map? = spreedCapabilities.config!!["chat"]
- return map != null && map.containsKey("read-privacy")
+ fun isReadStatusAvailable(spreedCapabilities: SpreedCapability?): Boolean {
+ val chatConfig = spreedCapabilities?.config?.get("chat") as? Map<*, *>
+ return if (chatConfig?.containsKey("read-privacy") == true) {
+ true
+ } else {
+ if (spreedCapabilities == null) {
+ Log.e(TAG, "spreedCapabilities were null when checking capability isReadStatusAvailable")
+ }
+ false
}
- return false
}
fun retentionOfEventRooms(spreedCapabilities: SpreedCapability): Int {
@@ -201,9 +207,6 @@ object CapabilitiesUtil {
fun isConversationDescriptionEndpointAvailable(spreedCapabilities: SpreedCapability): Boolean =
hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.ROOM_DESCRIPTION)
- fun isUnifiedSearchAvailable(spreedCapabilities: SpreedCapability): Boolean =
- hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.UNIFIED_SEARCH)
-
fun isAbleToCall(spreedCapabilities: SpreedCapability): Boolean =
if (
spreedCapabilities.config?.containsKey("call") == true &&
diff --git a/app/src/main/java/com/nextcloud/talk/utils/ConversationUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/ConversationUtils.kt
index 3142709..85e89b0 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/ConversationUtils.kt
+++ b/app/src/main/java/com/nextcloud/talk/utils/ConversationUtils.kt
@@ -27,11 +27,11 @@ object ConversationUtils {
Participant.ParticipantType.GUEST_MODERATOR == conversation.participantType ||
Participant.ParticipantType.MODERATOR == conversation.participantType
- fun isLockedOneToOne(conversation: ConversationModel, spreedCapabilities: SpreedCapability): Boolean =
+ fun isLockedOneToOne(conversation: ConversationModel, spreedCapabilities: SpreedCapability?): Boolean =
conversation.type == ConversationEnums.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL &&
CapabilitiesUtil.hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.LOCKED_ONE_TO_ONE)
- fun canModerate(conversation: ConversationModel, spreedCapabilities: SpreedCapability): Boolean =
+ fun canModerate(conversation: ConversationModel, spreedCapabilities: SpreedCapability?): Boolean =
isParticipantOwnerOrModerator(conversation) &&
!isLockedOneToOne(conversation, spreedCapabilities) &&
conversation.type != ConversationEnums.ConversationType.FORMER_ONE_TO_ONE &&
diff --git a/app/src/main/java/com/nextcloud/talk/utils/ParticipantPermissions.kt b/app/src/main/java/com/nextcloud/talk/utils/ParticipantPermissions.kt
index a46bfa7..4e57300 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/ParticipantPermissions.kt
+++ b/app/src/main/java/com/nextcloud/talk/utils/ParticipantPermissions.kt
@@ -14,7 +14,7 @@ import com.nextcloud.talk.models.json.capabilities.SpreedCapability
* see https://nextcloud-talk.readthedocs.io/en/latest/constants/#attendee-permissions
*/
class ParticipantPermissions(
- private val spreedCapabilities: SpreedCapability,
+ private val spreedCapabilities: SpreedCapability?,
private val conversation: ConversationModel
) {
val isDefault = (conversation.permissions and DEFAULT) == DEFAULT
diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml
index d0fba1d..c63c258 100644
--- a/app/src/main/res/values-ja-rJP/strings.xml
+++ b/app/src/main/res/values-ja-rJP/strings.xml
@@ -565,6 +565,7 @@
音声番号
お気に入り
通話を開始することが許可されていません
+ スレッドを作成する
会話を開始
ステータスメッセージ
ブレイクアウトルームに切り替える
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index cfba471..186a5fb 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -83,7 +83,7 @@
Por favor, ative-a nas configurações do aplicativo
Serviços de localização desativados
Ative os serviços de localização (GPS) para usar este recurso
- Bloquear conversa
+ Trancar conversa
Símbolo de cadeado
Baixar mão
Conversa %1$s marcada como lida
@@ -118,7 +118,7 @@
Adicionar aos favoritos
OK, tudo pronto!
PIN: %1$s
- Desbloquear %1$s
+ Destrancar %1$s
Para ativar os alto-falantes bluetooth, conceda a permissão \"Dispositivos próximos\".
Atender como chamada de vídeo
Atender apenas como chamada de voz
@@ -316,8 +316,8 @@
Sua localização atual
permissão de localização é necessária
Posição desconhecida
- Bloqueado
- Toque para desbloquear
+ Trancado
+ Toque para destrancar
Não definido
Marcar como lido
Marcar como não lido
@@ -484,9 +484,9 @@
Excluir
Excluir conta
Confirme se quer realmente excluir a conta atual.
- Bloquear %1$s com o bloqueio de tela do Android ou um método biométrico suportado
+ Trancar %1$s com o bloqueio de tela do Android ou um método biométrico suportado
Tempo limite para bloqueio de tela
- Bloquear tela
+ Bloqueio de tela
Impede capturas de tela na lista recente e dentro do aplicativo
Segurança da tela
A versão do servidor é muito antiga e não será suportada na próxima versão!
diff --git a/build.gradle b/build.gradle
index 5c7a6f0..180a439 100644
--- a/build.gradle
+++ b/build.gradle
@@ -24,7 +24,7 @@ buildscript {
classpath 'com.android.tools.build:gradle:8.13.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}"
classpath "org.jetbrains.kotlin:kotlin-serialization:${kotlinVersion}"
- classpath 'com.github.spotbugs.snom:spotbugs-gradle-plugin:6.4.2'
+ classpath 'com.github.spotbugs.snom:spotbugs-gradle-plugin:6.2.7'
classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.8"
classpath "org.jlleitschuh.gradle:ktlint-gradle:13.1.0"
// NOTE: Do not place your application dependencies here; they belong
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index 85186c8..37c8365 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -15,8 +15,6 @@
-
-
@@ -41,10 +39,8 @@
-
-
@@ -52,7 +48,6 @@
-
@@ -62,7 +57,6 @@
-
@@ -620,11 +614,6 @@
-
-
-
-
-
@@ -1143,11 +1132,6 @@
-
-
-
-
-
@@ -2618,9 +2602,6 @@
-
-
-
@@ -3935,11 +3916,6 @@
-
-
-
-
-
@@ -3948,11 +3924,6 @@
-
-
-
-
-
@@ -12795,14 +12766,6 @@
-
-
-
-
-
-
-
-
@@ -14815,14 +14778,6 @@
-
-
-
-
-
-
-
-
@@ -17310,22 +17265,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -20218,11 +20157,6 @@
-
-
-
-
-
@@ -20401,11 +20335,6 @@
-
-
-
-
-
@@ -20496,11 +20425,6 @@
-
-
-
-
-
@@ -20711,11 +20635,6 @@
-
-
-
-
-
@@ -21841,11 +21760,6 @@
-
-
-
-
-
@@ -21872,11 +21786,6 @@
-
-
-
-
-
@@ -21898,11 +21807,6 @@
-
-
-
-
-
@@ -21929,11 +21833,6 @@
-
-
-
-
-
@@ -21955,11 +21854,6 @@
-
-
-
-
-
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 2e11132..2a84e18 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
index adff685..ef07e01 100755
--- a/gradlew
+++ b/gradlew
@@ -114,6 +114,7 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
+CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@@ -171,6 +172,7 @@ fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
@@ -210,6 +212,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
diff --git a/gradlew.bat b/gradlew.bat
index e509b2d..5eed7ee 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -70,10 +70,11 @@ goto fail
:execute
@rem Setup the command line
+set CLASSPATH=
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell