Merge pull request #4427 from nextcloud/bugfix/noid/archiveConversationsHandleOldNcServers

Bugfix/noid/archive conversations handle old nc servers
This commit is contained in:
Marcel Hibbe 2024-11-11 16:00:10 +01:00 committed by GitHub
commit 681e941682
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 37 additions and 43 deletions

View File

@ -77,6 +77,7 @@ import com.nextcloud.talk.shareditems.activities.SharedItemsActivity
import com.nextcloud.talk.ui.dialog.DialogBanListFragment import com.nextcloud.talk.ui.dialog.DialogBanListFragment
import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.CapabilitiesUtil import com.nextcloud.talk.utils.CapabilitiesUtil
import com.nextcloud.talk.utils.CapabilitiesUtil.hasSpreedFeatureCapability
import com.nextcloud.talk.utils.ConversationUtils import com.nextcloud.talk.utils.ConversationUtils
import com.nextcloud.talk.utils.DateConstants import com.nextcloud.talk.utils.DateConstants
import com.nextcloud.talk.utils.DateUtils import com.nextcloud.talk.utils.DateUtils
@ -403,10 +404,9 @@ class ConversationInfoActivity :
} }
} }
private fun webinaryRoomType(conversation: ConversationModel): Boolean { private fun webinaryRoomType(conversation: ConversationModel): Boolean =
return conversation.type == ConversationEnums.ConversationType.ROOM_GROUP_CALL || conversation.type == ConversationEnums.ConversationType.ROOM_GROUP_CALL ||
conversation.type == ConversationEnums.ConversationType.ROOM_PUBLIC_CALL conversation.type == ConversationEnums.ConversationType.ROOM_PUBLIC_CALL
}
private fun reconfigureLobbyTimerView(dateTime: Calendar? = null) { private fun reconfigureLobbyTimerView(dateTime: Calendar? = null) {
val isChecked = binding.webinarInfoView.lobbySwitch.isChecked val isChecked = binding.webinarInfoView.lobbySwitch.isChecked
@ -792,8 +792,9 @@ class ConversationInfoActivity :
} }
} }
if (!CapabilitiesUtil.isArchiveConversationsAvailable(spreedCapabilities)) { if (!hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.ARCHIVE_CONVERSATIONS)) {
binding.archiveConversationBtn.visibility = GONE binding.archiveConversationBtn.visibility = GONE
binding.archiveConversationTextHint.visibility = GONE
} }
binding.archiveConversationBtn.setOnClickListener { binding.archiveConversationBtn.setOnClickListener {

View File

@ -22,6 +22,8 @@ import com.nextcloud.talk.conversationlist.ConversationsListActivity
import com.nextcloud.talk.databinding.DialogFilterConversationBinding import com.nextcloud.talk.databinding.DialogFilterConversationBinding
import com.nextcloud.talk.ui.theme.ViewThemeUtils import com.nextcloud.talk.ui.theme.ViewThemeUtils
import com.nextcloud.talk.users.UserManager import com.nextcloud.talk.users.UserManager
import com.nextcloud.talk.utils.CapabilitiesUtil.hasSpreedFeatureCapability
import com.nextcloud.talk.utils.SpreedFeatures
import com.nextcloud.talk.utils.UserIdUtils import com.nextcloud.talk.utils.UserIdUtils
import javax.inject.Inject import javax.inject.Inject
@ -104,7 +106,14 @@ class FilterConversationFragment : DialogFragment() {
private fun setUpChips() { private fun setUpChips() {
binding.unreadFilterChip.isChecked = filterState[UNREAD]!! binding.unreadFilterChip.isChecked = filterState[UNREAD]!!
binding.mentionedFilterChip.isChecked = filterState[MENTION]!! binding.mentionedFilterChip.isChecked = filterState[MENTION]!!
binding.archivedFilterChip.isChecked = filterState[ARCHIVE]!!
binding.archivedFilterChip.visibility = View.GONE
userManager.currentUser.blockingGet().capabilities?.spreedCapability?.let {
if (hasSpreedFeatureCapability(it, SpreedFeatures.ARCHIVE_CONVERSATIONS)) {
binding.archivedFilterChip.visibility = View.VISIBLE
binding.archivedFilterChip.isChecked = filterState[ARCHIVE]!!
}
}
} }
private fun processSubmit() { private fun processSubmit() {

View File

@ -56,7 +56,7 @@ enum class SpreedFeatures(val value: String) {
DELETE_MESSAGES_UNLIMITED("delete-messages-unlimited"), DELETE_MESSAGES_UNLIMITED("delete-messages-unlimited"),
BAN_V1("ban-v1"), BAN_V1("ban-v1"),
EDIT_MESSAGES_NOTE_TO_SELF("edit-messages-note-to-self"), EDIT_MESSAGES_NOTE_TO_SELF("edit-messages-note-to-self"),
ARCHIVE_CONVERSATIONS("archived-conversations") ARCHIVE_CONVERSATIONS("archived-conversations-v2")
} }
@Suppress("TooManyFunctions") @Suppress("TooManyFunctions")
@ -84,14 +84,11 @@ object CapabilitiesUtil {
//region CoreCapabilities //region CoreCapabilities
@JvmStatic @JvmStatic
fun isLinkPreviewAvailable(user: User): Boolean { fun isLinkPreviewAvailable(user: User): Boolean =
return user.capabilities?.coreCapability?.referenceApi != null && user.capabilities?.coreCapability?.referenceApi != null &&
user.capabilities?.coreCapability?.referenceApi == "true" user.capabilities?.coreCapability?.referenceApi == "true"
}
fun canGeneratePrettyURL(user: User): Boolean { fun canGeneratePrettyURL(user: User): Boolean = user.capabilities?.coreCapability?.modRewriteWorking == true
return user.capabilities?.coreCapability?.modRewriteWorking == true
}
// endregion // endregion
@ -105,9 +102,8 @@ object CapabilitiesUtil {
return false return false
} }
fun isSharedItemsAvailable(spreedCapabilities: SpreedCapability): Boolean { fun isSharedItemsAvailable(spreedCapabilities: SpreedCapability): Boolean =
return hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.RICH_OBJECT_LIST_MEDIA) hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.RICH_OBJECT_LIST_MEDIA)
}
fun getMessageMaxLength(spreedCapabilities: SpreedCapability): Int { fun getMessageMaxLength(spreedCapabilities: SpreedCapability): Int {
if (spreedCapabilities.config?.containsKey("chat") == true) { if (spreedCapabilities.config?.containsKey("chat") == true) {
@ -157,16 +153,14 @@ object CapabilitiesUtil {
return "/Talk" return "/Talk"
} }
fun isConversationDescriptionEndpointAvailable(spreedCapabilities: SpreedCapability): Boolean { fun isConversationDescriptionEndpointAvailable(spreedCapabilities: SpreedCapability): Boolean =
return hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.ROOM_DESCRIPTION) hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.ROOM_DESCRIPTION)
}
fun isUnifiedSearchAvailable(spreedCapabilities: SpreedCapability): Boolean { fun isUnifiedSearchAvailable(spreedCapabilities: SpreedCapability): Boolean =
return hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.UNIFIED_SEARCH) hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.UNIFIED_SEARCH)
}
fun isAbleToCall(spreedCapabilities: SpreedCapability): Boolean { fun isAbleToCall(spreedCapabilities: SpreedCapability): Boolean =
return if ( if (
spreedCapabilities.config?.containsKey("call") == true && spreedCapabilities.config?.containsKey("call") == true &&
spreedCapabilities.config!!["call"] != null && spreedCapabilities.config!!["call"] != null &&
spreedCapabilities.config!!["call"]!!.containsKey("enabled") spreedCapabilities.config!!["call"]!!.containsKey("enabled")
@ -176,7 +170,6 @@ object CapabilitiesUtil {
// older nextcloud versions without the capability can't disable the calls // older nextcloud versions without the capability can't disable the calls
true true
} }
}
fun isCallReactionsSupported(user: User?): Boolean { fun isCallReactionsSupported(user: User?): Boolean {
if (user?.capabilities != null) { if (user?.capabilities != null) {
@ -188,12 +181,11 @@ object CapabilitiesUtil {
return false return false
} }
fun isTranslationsSupported(spreedCapabilities: SpreedCapability): Boolean { fun isTranslationsSupported(spreedCapabilities: SpreedCapability): Boolean =
return spreedCapabilities.config?.containsKey("chat") == true && spreedCapabilities.config?.containsKey("chat") == true &&
spreedCapabilities.config!!["chat"] != null && spreedCapabilities.config!!["chat"] != null &&
spreedCapabilities.config!!["chat"]!!.containsKey("has-translation-providers") && spreedCapabilities.config!!["chat"]!!.containsKey("has-translation-providers") &&
spreedCapabilities.config!!["chat"]!!["has-translation-providers"] == true spreedCapabilities.config!!["chat"]!!["has-translation-providers"] == true
}
fun getRecordingConsentType(spreedCapabilities: SpreedCapability): Int { fun getRecordingConsentType(spreedCapabilities: SpreedCapability): Int {
if ( if (
@ -213,9 +205,8 @@ object CapabilitiesUtil {
return RECORDING_CONSENT_NOT_REQUIRED return RECORDING_CONSENT_NOT_REQUIRED
} }
fun isBanningAvailable(spreedCapabilities: SpreedCapability): Boolean { fun isBanningAvailable(spreedCapabilities: SpreedCapability): Boolean =
return hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.BAN_V1) hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.BAN_V1)
}
// endregion // endregion
@ -249,16 +240,11 @@ object CapabilitiesUtil {
return false return false
} }
fun isFederationAvailable(user: User): Boolean { fun isFederationAvailable(user: User): Boolean =
return hasSpreedFeatureCapability(user.capabilities!!.spreedCapability!!, SpreedFeatures.FEDERATION_V1) && hasSpreedFeatureCapability(user.capabilities!!.spreedCapability!!, SpreedFeatures.FEDERATION_V1) &&
user.capabilities!!.spreedCapability!!.config?.containsKey("federation") == true && user.capabilities!!.spreedCapability!!.config?.containsKey("federation") == true &&
user.capabilities!!.spreedCapability!!.config!!["federation"] != null && user.capabilities!!.spreedCapability!!.config!!["federation"] != null &&
user.capabilities!!.spreedCapability!!.config!!["federation"]!!.containsKey("enabled") user.capabilities!!.spreedCapability!!.config!!["federation"]!!.containsKey("enabled")
}
fun isArchiveConversationsAvailable(spreedCapabilities: SpreedCapability): Boolean {
return hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.ARCHIVE_CONVERSATIONS)
}
// endregion // endregion
@ -275,20 +261,18 @@ object CapabilitiesUtil {
//region ProvisioningCapabilities //region ProvisioningCapabilities
fun canEditScopes(user: User): Boolean { fun canEditScopes(user: User): Boolean =
return user.capabilities?.provisioningCapability?.accountPropertyScopesVersion != null && user.capabilities?.provisioningCapability?.accountPropertyScopesVersion != null &&
user.capabilities!!.provisioningCapability!!.accountPropertyScopesVersion!! > 1 user.capabilities!!.provisioningCapability!!.accountPropertyScopesVersion!! > 1
}
// endregion // endregion
//region UserStatusCapabilities //region UserStatusCapabilities
@JvmStatic @JvmStatic
fun isUserStatusAvailable(user: User): Boolean { fun isUserStatusAvailable(user: User): Boolean =
return user.capabilities?.userStatusCapability?.enabled == true && user.capabilities?.userStatusCapability?.enabled == true &&
user.capabilities?.userStatusCapability?.supportsEmoji == true user.capabilities?.userStatusCapability?.supportsEmoji == true
}
// endregion // endregion