Skip to content

Commit b12267e

Browse files
GarzasMohamadJaara
andauthored
feat: chat bubble feature flag [WPB-19449] (#4296)
Co-authored-by: Mohamad Jaara <mohamad.jaara@wire.com>
1 parent 8f62faa commit b12267e

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

app/src/main/kotlin/com/wire/android/di/accountScoped/UserModule.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import com.wire.kalium.logic.feature.asset.DeleteAssetUseCase
2525
import com.wire.kalium.logic.feature.asset.GetAssetSizeLimitUseCase
2626
import com.wire.kalium.logic.feature.asset.GetAvatarAssetUseCase
2727
import com.wire.kalium.logic.feature.client.FinalizeMLSClientAfterE2EIEnrollment
28+
import com.wire.kalium.logic.feature.client.IsChatBubblesEnabledUseCase
2829
import com.wire.kalium.logic.feature.client.IsWireCellsEnabledForConversationUseCase
2930
import com.wire.kalium.logic.feature.client.IsWireCellsEnabledUseCase
3031
import com.wire.kalium.logic.feature.conversation.GetAllContactsNotInConversationUseCase
@@ -250,6 +251,10 @@ class UserModule {
250251
@Provides
251252
fun provideCellsConfigUseCase(userScope: UserScope): IsWireCellsEnabledUseCase = userScope.isWireCellsEnabled
252253

254+
@ViewModelScoped
255+
@Provides
256+
fun provideChatBubblesConfigUseCase(userScope: UserScope): IsChatBubblesEnabledUseCase = userScope.isChatBubblesEnabled
257+
253258
@ViewModelScoped
254259
@Provides
255260
fun provideIsWireCellsEnabledForConversationUseCase(userScope: UserScope): IsWireCellsEnabledForConversationUseCase =

app/src/main/kotlin/com/wire/android/ui/home/conversations/info/ConversationInfoViewModel.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import com.wire.kalium.logic.data.id.QualifiedID
3939
import com.wire.kalium.logic.data.id.QualifiedIdMapper
4040
import com.wire.kalium.logic.data.user.ConnectionState
4141
import com.wire.kalium.logic.data.user.UserId
42+
import com.wire.kalium.logic.feature.client.IsChatBubblesEnabledUseCase
4243
import com.wire.kalium.logic.feature.client.IsWireCellsEnabledUseCase
4344
import com.wire.kalium.logic.feature.conversation.ObserveConversationDetailsUseCase
4445
import com.wire.kalium.logic.feature.e2ei.usecase.FetchConversationMLSVerificationStatusUseCase
@@ -56,6 +57,7 @@ class ConversationInfoViewModel @Inject constructor(
5657
private val globalDataStore: GlobalDataStore,
5758
private val fetchConversationMLSVerificationStatus: FetchConversationMLSVerificationStatusUseCase,
5859
private val isWireCellFeatureEnabled: IsWireCellsEnabledUseCase,
60+
private val isChatBubblesEnabledUseCase: IsChatBubblesEnabledUseCase,
5961
@CurrentAccount private val selfUserId: UserId,
6062
) : ViewModel() {
6163

@@ -128,7 +130,7 @@ class ConversationInfoViewModel @Inject constructor(
128130
)
129131
}
130132

131-
private suspend fun isBubbleUiEnabled() = globalDataStore.observeIsBubbleUI().firstOrNull() ?: false
133+
private suspend fun isBubbleUiEnabled() = (globalDataStore.observeIsBubbleUI().firstOrNull() ?: false) || isChatBubblesEnabledUseCase()
132134

133135
private fun getAccentId(conversationDetails: ConversationDetails): Int {
134136
return if (conversationDetails is ConversationDetails.OneOne) {
@@ -172,6 +174,7 @@ class ConversationInfoViewModel @Inject constructor(
172174
val isPrivate = conversationDetails.access == ConversationDetails.Group.Channel.ChannelAccess.PRIVATE
173175
ConversationAvatar.Group.Channel(conversationDetails.conversation.id, isPrivate)
174176
}
177+
175178
else -> ConversationAvatar.None
176179
}
177180

app/src/test/kotlin/com/wire/android/ui/home/conversations/info/ConversationInfoViewModelArrangement.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import com.wire.kalium.logic.data.id.ConversationId
3030
import com.wire.kalium.logic.data.id.QualifiedID
3131
import com.wire.kalium.logic.data.id.QualifiedIdMapper
3232
import com.wire.kalium.logic.data.user.UserId
33+
import com.wire.kalium.logic.feature.client.IsChatBubblesEnabledUseCase
3334
import com.wire.kalium.logic.feature.client.IsWireCellsEnabledUseCase
3435
import com.wire.kalium.logic.feature.conversation.ObserveConversationDetailsUseCase
3536
import com.wire.kalium.logic.feature.e2ei.usecase.FetchConversationMLSVerificationStatusUseCase
@@ -66,6 +67,9 @@ class ConversationInfoViewModelArrangement {
6667
@MockK
6768
lateinit var globalDataStore: GlobalDataStore
6869

70+
@MockK
71+
lateinit var isChatBubblesEnabled: IsChatBubblesEnabledUseCase
72+
6973
private val viewModel: ConversationInfoViewModel by lazy {
7074
ConversationInfoViewModel(
7175
qualifiedIdMapper = qualifiedIdMapper,
@@ -75,6 +79,7 @@ class ConversationInfoViewModelArrangement {
7579
selfUserId = TestUser.SELF_USER_ID,
7680
isWireCellFeatureEnabled = isCellsEnabled,
7781
globalDataStore = globalDataStore,
82+
isChatBubblesEnabledUseCase = isChatBubblesEnabled
7883
)
7984
}
8085

@@ -92,6 +97,7 @@ class ConversationInfoViewModelArrangement {
9297
coEvery { fetchConversationMLSVerificationStatus.invoke(any()) } returns Unit
9398
coEvery { isCellsEnabled() } returns false
9499
coEvery { globalDataStore.observeIsBubbleUI() } returns flowOf(false)
100+
coEvery { isChatBubblesEnabled() } returns false
95101
}
96102

97103
suspend fun withConversationDetailUpdate(conversationDetails: ConversationDetails) = apply {

0 commit comments

Comments
 (0)