Skip to content

Commit a50d4bc

Browse files
mahibiclaude
andcommitted
Move channel-preset capability check into ConversationUtils.isChannel
isChannel() was a raw attribute check, so every caller had to repeat "conversation.isChannel() && hasSpreedFeatureCapability(..., ANNOUNCEMENT_PRESET)" themselves. Renamed the raw checks to isChannelAttribute()/ isAnnouncementAttribute() (mirroring isClassifiedAttribute()) and added a capability-gated isChannel(conversation, spreedCapabilities), mirroring the existing isClassified()/isClassifiedAttribute() split. Callers now call ConversationUtils.isChannel(...) directly. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
1 parent 5410c0a commit a50d4bc

5 files changed

Lines changed: 13 additions & 17 deletions

File tree

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,6 @@ import com.nextcloud.talk.utils.CapabilitiesUtil.retentionOfSIPRoom
175175
import com.nextcloud.talk.utils.ContactUtils
176176
import com.nextcloud.talk.utils.ConversationUtils
177177
import com.nextcloud.talk.utils.ConversationUtils.checkIfVoiceRoom
178-
import com.nextcloud.talk.utils.ConversationUtils.isChannel
179178
import com.nextcloud.talk.utils.DateConstants
180179
import com.nextcloud.talk.utils.DateUtils
181180
import com.nextcloud.talk.utils.DisplayUtils
@@ -1973,10 +1972,7 @@ class ChatActivity :
19731972
!ConversationUtils.isNoteToSelfConversation(conversation) &&
19741973
!isReadOnlyConversation() &&
19751974
!shouldShowLobby() &&
1976-
!(
1977-
conversation.isChannel() &&
1978-
hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.ANNOUNCEMENT_PRESET)
1979-
)
1975+
!ConversationUtils.isChannel(conversation, spreedCapabilities)
19801976

19811977
private fun isSearchAvailable(capabilitiesReady: Boolean, conversation: ConversationModel?): Boolean =
19821978
capabilitiesReady &&
@@ -2249,8 +2245,7 @@ class ChatActivity :
22492245

22502246
private fun checkShowMessageInputView() {
22512247
val permissions = participantPermissionsFlow.value
2252-
val isChannel = currentConversation.isChannel() &&
2253-
hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.ANNOUNCEMENT_PRESET)
2248+
val isChannel = ConversationUtils.isChannel(currentConversation, spreedCapabilities)
22542249

22552250
if (isReadOnlyConversation() ||
22562251
(permissions?.hasChatPermission() == false && (!isChannel || permissions.hasReactPermission() == false))

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ import com.nextcloud.talk.users.UserManager
8282
import com.nextcloud.talk.utils.ApiUtils
8383
import com.nextcloud.talk.utils.CapabilitiesUtil
8484
import com.nextcloud.talk.utils.CharPolicy
85-
import com.nextcloud.talk.utils.ConversationUtils.isChannel
85+
import com.nextcloud.talk.utils.ConversationUtils
8686
import com.nextcloud.talk.utils.DateUtils
8787
import com.nextcloud.talk.utils.DisplayUtils
8888
import com.nextcloud.talk.utils.EmojiTextInputEditText
@@ -1310,8 +1310,7 @@ class MessageInputFragment : Fragment() {
13101310
private fun isReactionOnlyMode(spreedCapabilities: SpreedCapability): Boolean {
13111311
val conversation = chatActivity.currentConversation
13121312
val permissions = chatActivity.participantPermissionsFlow.value
1313-
val isChannel = conversation.isChannel() &&
1314-
CapabilitiesUtil.hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.ANNOUNCEMENT_PRESET)
1313+
val isChannel = ConversationUtils.isChannel(conversation, spreedCapabilities)
13151314
return isChannel && permissions?.hasChatPermission() == false && permissions.hasReactPermission() == true
13161315
}
13171316

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ import com.nextcloud.talk.ui.PlaybackSpeed
6767
import com.nextcloud.talk.utils.ApiUtils
6868
import com.nextcloud.talk.utils.CapabilitiesUtil.hasSpreedFeatureCapability
6969
import com.nextcloud.talk.utils.ConversationUtils
70-
import com.nextcloud.talk.utils.ConversationUtils.isChannel
7170
import com.nextcloud.talk.utils.ParticipantPermissions
7271
import com.nextcloud.talk.utils.SpreedFeatures
7372
import com.nextcloud.talk.utils.UserIdUtils
@@ -1375,7 +1374,7 @@ class ChatViewModel @AssistedInject constructor(
13751374
conversation: ConversationModel?,
13761375
capabilities: SpreedCapability?
13771376
): List<ChatMessage> {
1378-
if (conversation.isChannel() && hasSpreedFeatureCapability(capabilities, SpreedFeatures.ANNOUNCEMENT_PRESET)) {
1377+
if (ConversationUtils.isChannel(conversation, capabilities)) {
13791378
return chatMessageList.filter { !it.isSystemMessage }
13801379
}
13811380

app/src/main/java/com/nextcloud/talk/conversationinfo/viewmodel/ConversationInfoViewModel.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ import com.nextcloud.talk.utils.ApiUtils.getUrlForRooms
4444
import com.nextcloud.talk.utils.CapabilitiesUtil
4545
import com.nextcloud.talk.utils.CapabilitiesUtil.hasSpreedFeatureCapability
4646
import com.nextcloud.talk.utils.ConversationUtils
47-
import com.nextcloud.talk.utils.ConversationUtils.isChannel
4847
import com.nextcloud.talk.utils.DateConstants
4948
import com.nextcloud.talk.utils.DisplayUtils
5049
import com.nextcloud.talk.utils.SpreedFeatures
@@ -422,8 +421,7 @@ class ConversationInfoViewModel @Inject constructor(
422421
val showMessageExpiration = isModerator &&
423422
hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.MESSAGE_EXPIRATION)
424423

425-
val isChannel = conversationModel.isChannel() &&
426-
hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.ANNOUNCEMENT_PRESET)
424+
val isChannel = ConversationUtils.isChannel(conversationModel, spreedCapabilities)
427425
val showParticipants = if (isChannel) isModerator else true
428426

429427
val credentials = ApiUtils.getCredentials(user.username, user.token) ?: ""

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,13 @@ object ConversationUtils {
6565

6666
fun ConversationModel?.checkIfVoiceRoom(): Boolean = hasAttribute(ConversationEnums.ATTRIBUTE_IS_VOICE_ROOM)
6767
fun ConversationModel?.isClassifiedAttribute(): Boolean = hasAttribute(ConversationEnums.ATTRIBUTE_IS_CLASSIFIED)
68-
fun ConversationModel?.isChannel(): Boolean = hasAttribute(ConversationEnums.ATTRIBUTE_IS_CHANNEL)
69-
fun ConversationModel?.isAnnouncement(): Boolean = hasAttribute(ConversationEnums.ATTRIBUTE_IS_ANNOUNCEMENT)
68+
fun ConversationModel?.isChannelAttribute(): Boolean = hasAttribute(ConversationEnums.ATTRIBUTE_IS_CHANNEL)
69+
fun ConversationModel?.isAnnouncementAttribute(): Boolean =
70+
hasAttribute(ConversationEnums.ATTRIBUTE_IS_ANNOUNCEMENT)
71+
72+
fun isChannel(conversation: ConversationModel?, spreedCapabilities: SpreedCapability?): Boolean =
73+
conversation.isChannelAttribute() &&
74+
CapabilitiesUtil.hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.ANNOUNCEMENT_PRESET)
7075

7176
fun isClassified(conversation: ConversationModel, spreedCapabilities: SpreedCapability?): Boolean =
7277
CapabilitiesUtil.hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.CLASSIFIED_CONVERSATIONS) &&

0 commit comments

Comments
 (0)