Skip to content

Commit 3832e84

Browse files
authored
Merge pull request #3698 from nextcloud/feature/noid/handleFederationFeaturesByCapabilities
hide some features if federation is not available
2 parents 11a7764 + 625de65 commit 3832e84

4 files changed

Lines changed: 34 additions & 19 deletions

File tree

app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,7 @@ class ChatActivity :
601601
spreedCapabilities = state.spreedCapabilities
602602
chatApiVersion = ApiUtils.getChatApiVersion(spreedCapabilities, intArrayOf(1))
603603

604+
invalidateOptionsMenu()
604605
initMessageInputView()
605606

606607
if (conversationUser?.userId != "?" &&
@@ -3923,17 +3924,16 @@ class ChatActivity :
39233924
val searchItem = menu.findItem(R.id.conversation_search)
39243925
searchItem.isVisible = CapabilitiesUtil.isUnifiedSearchAvailable(spreedCapabilities)
39253926

3926-
if (CapabilitiesUtil.hasSpreedFeatureCapability(
3927-
spreedCapabilities,
3928-
SpreedFeatures.RICH_OBJECT_LIST_MEDIA
3929-
)
3927+
if (currentConversation!!.remoteServer != null ||
3928+
!CapabilitiesUtil.isSharedItemsAvailable(spreedCapabilities)
39303929
) {
3931-
conversationSharedItemsItem = menu.findItem(R.id.shared_items)
3932-
} else {
39333930
menu.removeItem(R.id.shared_items)
39343931
}
39353932

3936-
if (CapabilitiesUtil.isAbleToCall(spreedCapabilities)) {
3933+
if (currentConversation!!.remoteServer != null) {
3934+
menu.removeItem(R.id.conversation_video_call)
3935+
menu.removeItem(R.id.conversation_voice_call)
3936+
} else if (CapabilitiesUtil.isAbleToCall(spreedCapabilities)) {
39373937
conversationVoiceCallMenuItem = menu.findItem(R.id.conversation_voice_call)
39383938
conversationVideoMenuItem = menu.findItem(R.id.conversation_video_call)
39393939

app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -754,15 +754,13 @@ class ConversationsListActivity :
754754
}
755755

756756
private fun fetchPendingInvitations() {
757-
binding.conversationListHintInclude.conversationListHintLayout.setOnClickListener {
758-
val intent = Intent(this, InvitationsActivity::class.java)
759-
startActivity(intent)
757+
if (hasSpreedFeatureCapability(currentUser!!.capabilities!!.spreedCapability!!, SpreedFeatures.FEDERATION_V1)) {
758+
binding.conversationListHintInclude.conversationListHintLayout.setOnClickListener {
759+
val intent = Intent(this, InvitationsActivity::class.java)
760+
startActivity(intent)
761+
}
762+
conversationsListViewModel.getFederationInvitations()
760763
}
761-
762-
// TODO create mvvm, fetch pending invitations for all users and store in database for users, if current user
763-
// has invitation -> show hint, if one or more other users have invitations -> show badge
764-
765-
conversationsListViewModel.getFederationInvitations()
766764
}
767765

768766
private fun initOverallLayout(isConversationListNotEmpty: Boolean) {

app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,9 @@ class MessageActionsDialog(
165165
!(message.isDeletedCommentMessage || message.isDeleted)
166166
)
167167
initMenuRemindMessage(
168-
!message.isDeleted && CapabilitiesUtil.hasSpreedFeatureCapability
169-
(spreedCapabilities, SpreedFeatures.REMIND_ME_LATER)
168+
!message.isDeleted &&
169+
hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.REMIND_ME_LATER) &&
170+
currentConversation!!.remoteServer.isNullOrEmpty()
170171
)
171172
initMenuMarkAsUnread(
172173
message.previousMessageId > NO_PREVIOUS_MESSAGE_ID &&
@@ -251,7 +252,8 @@ class MessageActionsDialog(
251252
private fun initEmojiBar(hasChatPermission: Boolean) {
252253
if (hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.REACTIONS) &&
253254
isPermitted(hasChatPermission) &&
254-
isReactableMessageType(message)
255+
isReactableMessageType(message) &&
256+
currentConversation!!.remoteServer.isNullOrEmpty()
255257
) {
256258
checkAndSetEmojiSelfReaction(dialogMessageActionsBinding.emojiThumbsUp)
257259
dialogMessageActionsBinding.emojiThumbsUp.setOnClickListener {

app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ enum class SpreedFeatures(val value: String) {
6565
UNIFIED_SEARCH("unified-search"),
6666
LOCKED_ONE_TO_ONE("locked-one-to-one-rooms"),
6767
CHAT_PERMISSION("chat-permission"),
68-
CONVERSATION_PERMISSION("conversation-permissions")
68+
CONVERSATION_PERMISSION("conversation-permissions"),
69+
FEDERATION_V1("federation-v1")
6970
}
7071

7172
@Suppress("TooManyFunctions")
@@ -102,6 +103,10 @@ object CapabilitiesUtil {
102103
return false
103104
}
104105

106+
fun isSharedItemsAvailable(spreedCapabilities: SpreedCapability): Boolean {
107+
return hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.RICH_OBJECT_LIST_MEDIA)
108+
}
109+
105110
fun getMessageMaxLength(spreedCapabilities: SpreedCapability): Int {
106111
if (spreedCapabilities.config?.containsKey("chat") == true) {
107112
val chatConfigHashMap = spreedCapabilities.config!!["chat"]
@@ -155,6 +160,9 @@ object CapabilitiesUtil {
155160
}
156161

157162
fun isUnifiedSearchAvailable(spreedCapabilities: SpreedCapability): Boolean {
163+
if (hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.FEDERATION_V1)) {
164+
return false
165+
}
158166
return hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.UNIFIED_SEARCH)
159167
}
160168

@@ -238,6 +246,13 @@ object CapabilitiesUtil {
238246
return false
239247
}
240248

249+
fun isFederationAvailable(user: User): Boolean {
250+
return hasSpreedFeatureCapability(user.capabilities!!.spreedCapability!!, SpreedFeatures.FEDERATION_V1) &&
251+
user.capabilities!!.spreedCapability!!.config?.containsKey("federation") == true &&
252+
user.capabilities!!.spreedCapability!!.config!!["federation"] != null &&
253+
user.capabilities!!.spreedCapability!!.config!!["federation"]!!.containsKey("enabled")
254+
}
255+
241256
// endregion
242257

243258
//region ThemingCapabilities

0 commit comments

Comments
 (0)