From 7fbf1db96312f599fd705ffedbd404b7325cd49b Mon Sep 17 00:00:00 2001 From: fr4nz Date: Sat, 4 Oct 2025 12:13:05 +0200 Subject: [PATCH 1/3] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index de33ccb..be71a64 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ ~ 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: [![Build Status](https://drone.nextcloud.com/api/badges/nextcloud/talk-android/status.svg)](https://drone.nextcloud.com/nextcloud/talk-android) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/b89a720efbd24754984a776804913bca)](https://www.codacy.com/gh/nextcloud/talk-android/dashboard) [![Releases](https://img.shields.io/github/release/nextcloud/talk-android.svg)](https://github.com/nextcloud/talk-android/releases/latest) [![REUSE status](https://api.reuse.software/badge/github.com/nextcloud/talk-android)](https://api.reuse.software/info/github.com/nextcloud/talk-android) From df332bafd845c16dbead292079d3175b9a0aeb65 Mon Sep 17 00:00:00 2001 From: Fr4nzD13trich Date: Wed, 8 Oct 2025 13:14:29 +0200 Subject: [PATCH 2/3] updated to 22.0.2 --- README.md | 8 +- app/build.gradle | 42 +++---- .../nextcloud/talk/activities/CallActivity.kt | 4 +- .../com/nextcloud/talk/chat/ChatActivity.kt | 3 +- .../talk/contextchat/ContextChatViewModel.kt | 2 +- .../ConversationsListActivity.kt | 23 ++-- .../nextcloud/talk/jobs/NotificationWorker.kt | 2 +- .../nextcloud/talk/profile/ProfileActivity.kt | 2 +- .../talk/settings/SettingsActivity.kt | 2 +- .../nextcloud/talk/utils/CapabilitiesUtil.kt | 27 +++-- .../nextcloud/talk/utils/ConversationUtils.kt | 4 +- .../talk/utils/ParticipantPermissions.kt | 2 +- app/src/main/res/values-ja-rJP/strings.xml | 1 + app/src/main/res/values-pt-rBR/strings.xml | 12 +- build.gradle | 2 +- gradle/verification-metadata.xml | 106 ------------------ gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 3 + gradlew.bat | 3 +- 19 files changed, 75 insertions(+), 175 deletions(-) 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: [![Build Status](https://drone.nextcloud.com/api/badges/nextcloud/talk-android/status.svg)](https://drone.nextcloud.com/nextcloud/talk-android) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/b89a720efbd24754984a776804913bca)](https://www.codacy.com/gh/nextcloud/talk-android/dashboard) [![Releases](https://img.shields.io/github/release/nextcloud/talk-android.svg)](https://github.com/nextcloud/talk-android/releases/latest) [![REUSE status](https://api.reuse.software/badge/github.com/nextcloud/talk-android)](https://api.reuse.software/info/github.com/nextcloud/talk-android) @@ -14,10 +12,6 @@ [Get it on F-Droid](https://f-droid.org/packages/com.nextcloud.talk2/) - [Get it with Obtainium](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 From 6e0e30f637c669a5a24e8313239e5303bd4991d7 Mon Sep 17 00:00:00 2001 From: fr4nz Date: Thu, 20 Nov 2025 16:48:32 +0100 Subject: [PATCH 3/3] Update README.md --- README.md | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/README.md b/README.md index 8bd80b0..13e913b 100644 --- a/README.md +++ b/README.md @@ -6,14 +6,7 @@ [![Build Status](https://drone.nextcloud.com/api/badges/nextcloud/talk-android/status.svg)](https://drone.nextcloud.com/nextcloud/talk-android) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/b89a720efbd24754984a776804913bca)](https://www.codacy.com/gh/nextcloud/talk-android/dashboard) [![Releases](https://img.shields.io/github/release/nextcloud/talk-android.svg)](https://github.com/nextcloud/talk-android/releases/latest) [![REUSE status](https://api.reuse.software/badge/github.com/nextcloud/talk-android)](https://api.reuse.software/info/github.com/nextcloud/talk-android) -[Download from Google Play](https://play.google.com/store/apps/details?id=com.nextcloud.talk2) -[Get it on F-Droid](https://f-droid.org/packages/com.nextcloud.talk2/) - -Please note that Notifications won't work with the F-Droid version due to missing Google Play Services. +Please note that Notifications won't work with the gFree version due to missing Google Play Services. ||||||| |---|---|---|---|---|---|