Skip to content

Commit 73b2bf8

Browse files
committed
feat: disable profile qr code feature flag (WPB-20230)
1 parent b457b58 commit 73b2bf8

File tree

8 files changed

+34
-11
lines changed

8 files changed

+34
-11
lines changed

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

Lines changed: 6 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.IsProfileQRCodeDisabledUseCase
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
@@ -254,4 +255,9 @@ class UserModule {
254255
@Provides
255256
fun provideIsWireCellsEnabledForConversationUseCase(userScope: UserScope): IsWireCellsEnabledForConversationUseCase =
256257
userScope.isWireCellsEnabledForConversation
258+
259+
@ViewModelScoped
260+
@Provides
261+
fun provideProfileQRCodeConfigUseCase(userScope: UserScope): IsProfileQRCodeDisabledUseCase =
262+
userScope.isProfileQRCodeDisabled
257263
}

app/src/main/kotlin/com/wire/android/ui/debug/featureflags/DebugFeatureFlagsViewModel.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ class DebugFeatureFlagsViewModel @Inject constructor(
6868
addFeature("Consumable Notifications", consumableNotificationsModel?.status)
6969
addFeature("Allowed Global Operations", allowedGlobalOperationsModel?.status, allowedGlobalOperationsModel)
7070
addFeature("Wire Cells", cellsModel?.status)
71+
addFeature("Disable Profile QR code", disableUserProfileQRCodeConfigModel?.status)
7172

7273
add(
7374
Feature(

app/src/main/kotlin/com/wire/android/ui/userprofile/common/UserProfileInfo.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
package com.wire.android.ui.userprofile.common
2020

21-
import android.annotation.SuppressLint
2221
import androidx.compose.animation.AnimatedVisibility
2322
import androidx.compose.animation.Crossfade
2423
import androidx.compose.foundation.background
@@ -98,7 +97,7 @@ import kotlin.time.Duration.Companion.hours
9897
import kotlin.time.Duration.Companion.milliseconds
9998
import kotlin.time.Duration.Companion.minutes
10099

101-
@SuppressLint("ComposeParameterOrder")
100+
@Suppress("ComposeParameterOrder", "CyclomaticComplexMethod")
102101
@Composable
103102
fun UserProfileInfo(
104103
userId: UserId?,
@@ -117,7 +116,8 @@ fun UserProfileInfo(
117116
isMLSVerified: Boolean = false,
118117
expiresAt: Instant? = null,
119118
onQrCodeClick: (() -> Unit)? = null,
120-
accentId: Int = -1
119+
accentId: Int = -1,
120+
showQrCode: Boolean = true,
121121
) {
122122
Column(
123123
horizontalAlignment = CenterHorizontally,
@@ -258,7 +258,7 @@ fun UserProfileInfo(
258258
bottom.linkTo(displayName.bottom)
259259
}
260260
) {
261-
if (QRCodeEnabled && isLoading.not()) {
261+
if (QRCodeEnabled && showQrCode && isLoading.not()) {
262262
onQrCodeClick?.let { QRCodeIcon(it) }
263263
}
264264
}

app/src/main/kotlin/com/wire/android/ui/userprofile/self/SelfUserProfileScreen.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,8 @@ private fun SelfUserProfileContent(
292292
onUserProfileClick = onChangeUserProfilePicture,
293293
editableState = EditableState.IsEditable(onEditClick),
294294
onQrCodeClick = onQrCodeClick,
295-
accentId = accentId
295+
accentId = accentId,
296+
showQrCode = state.showQrCode,
296297
)
297298
}
298299
if (state.legalHoldStatus != LegalHoldUIState.None) {

app/src/main/kotlin/com/wire/android/ui/userprofile/self/SelfUserProfileState.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,6 @@ data class SelfUserProfileState(
4343
val isAbleToMigrateToTeamAccount: Boolean = false,
4444
val isLoggingOut: Boolean = false,
4545
val legalHoldStatus: LegalHoldUIState = LegalHoldUIState.None,
46-
val accentId: Int = -1
46+
val accentId: Int = -1,
47+
val showQrCode: Boolean = false,
4748
)

app/src/main/kotlin/com/wire/android/ui/userprofile/self/SelfUserProfileViewModel.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ import com.wire.kalium.logic.data.user.type.UserType
5353
import com.wire.kalium.logic.feature.auth.LogoutUseCase
5454
import com.wire.kalium.logic.feature.call.usecase.EndCallUseCase
5555
import com.wire.kalium.logic.feature.call.usecase.ObserveEstablishedCallsUseCase
56+
import com.wire.kalium.logic.feature.client.IsProfileQRCodeDisabledUseCase
5657
import com.wire.kalium.logic.feature.legalhold.LegalHoldStateForSelfUser
5758
import com.wire.kalium.logic.feature.legalhold.ObserveLegalHoldStateForSelfUserUseCase
5859
import com.wire.kalium.logic.feature.personaltoteamaccount.CanMigrateFromPersonalToTeamUseCase
@@ -101,7 +102,8 @@ class SelfUserProfileViewModel @Inject constructor(
101102
private val globalDataStore: GlobalDataStore,
102103
private val qualifiedIdMapper: QualifiedIdMapper,
103104
private val anonymousAnalyticsManager: AnonymousAnalyticsManager,
104-
private val getTeamUrl: GetTeamUrlUseCase
105+
private val getTeamUrl: GetTeamUrlUseCase,
106+
private val isProfileQRCodeDisabled: IsProfileQRCodeDisabledUseCase,
105107
) : ViewModel() {
106108

107109
var userProfileState by mutableStateOf(SelfUserProfileState(userId = selfUserId, isAvatarLoading = true))
@@ -116,9 +118,15 @@ class SelfUserProfileViewModel @Inject constructor(
116118
fetchIsReadOnlyAccount()
117119
observeLegalHoldStatus()
118120
markCreateTeamNoticeAsRead()
121+
fetchProfileQRCodeState()
119122
}
120123
}
121124

125+
fun fetchProfileQRCodeState() = viewModelScope.launch {
126+
val isDisabled = isProfileQRCodeDisabled()
127+
userProfileState = userProfileState.copy(showQrCode = !isDisabled)
128+
}
129+
122130
suspend fun checkIfUserAbleToMigrateToTeamAccount() {
123131
val canMigrate = canMigrateFromPersonalToTeam()
124132
userProfileState = userProfileState.copy(isAbleToMigrateToTeamAccount = canMigrate)

app/src/test/kotlin/com/wire/android/ui/userprofile/self/SelfUserProfileViewModelArrangement.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,21 @@ import com.wire.android.framework.TestUser
2828
import com.wire.android.mapper.OtherAccountMapper
2929
import com.wire.android.notification.WireNotificationManager
3030
import com.wire.android.util.dispatchers.DispatcherProvider
31+
import com.wire.kalium.common.functional.Either
3132
import com.wire.kalium.logic.data.id.QualifiedIdMapper
3233
import com.wire.kalium.logic.feature.auth.LogoutUseCase
3334
import com.wire.kalium.logic.feature.call.usecase.EndCallUseCase
3435
import com.wire.kalium.logic.feature.call.usecase.ObserveEstablishedCallsUseCase
36+
import com.wire.kalium.logic.feature.client.IsProfileQRCodeDisabledUseCase
3537
import com.wire.kalium.logic.feature.legalhold.LegalHoldStateForSelfUser
3638
import com.wire.kalium.logic.feature.legalhold.ObserveLegalHoldStateForSelfUserUseCase
3739
import com.wire.kalium.logic.feature.personaltoteamaccount.CanMigrateFromPersonalToTeamUseCase
3840
import com.wire.kalium.logic.feature.server.GetTeamUrlUseCase
3941
import com.wire.kalium.logic.feature.team.GetUpdatedSelfTeamUseCase
40-
import com.wire.kalium.logic.feature.user.ObserveSelfUserUseCase
4142
import com.wire.kalium.logic.feature.user.IsReadOnlyAccountUseCase
43+
import com.wire.kalium.logic.feature.user.ObserveSelfUserUseCase
4244
import com.wire.kalium.logic.feature.user.ObserveValidAccountsUseCase
4345
import com.wire.kalium.logic.feature.user.UpdateSelfAvailabilityStatusUseCase
44-
import com.wire.kalium.common.functional.Either
4546
import io.mockk.MockKAnnotations
4647
import io.mockk.coEvery
4748
import io.mockk.impl.annotations.MockK
@@ -105,6 +106,9 @@ class SelfUserProfileViewModelArrangement {
105106
@MockK
106107
lateinit var getTeamUrl: GetTeamUrlUseCase
107108

109+
@MockK
110+
lateinit var profileQRCodeEnabledUseCase: IsProfileQRCodeDisabledUseCase
111+
108112
private val viewModel by lazy {
109113
SelfUserProfileViewModel(
110114
selfUserId = TestUser.SELF_USER.id,
@@ -126,7 +130,8 @@ class SelfUserProfileViewModelArrangement {
126130
qualifiedIdMapper = qualifiedIdMapper,
127131
anonymousAnalyticsManager = anonymousAnalyticsManager,
128132
canMigrateFromPersonalToTeam = canMigrateFromPersonalToTeam,
129-
getTeamUrl = getTeamUrl
133+
getTeamUrl = getTeamUrl,
134+
isProfileQRCodeDisabled = profileQRCodeEnabledUseCase,
130135
)
131136
}
132137

@@ -142,6 +147,7 @@ class SelfUserProfileViewModelArrangement {
142147
coEvery { observeEstablishedCalls.invoke() } returns flowOf(emptyList())
143148
coEvery { canMigrateFromPersonalToTeam.invoke() } returns true
144149
coEvery { getTeamUrl.invoke() } returns ""
150+
coEvery { profileQRCodeEnabledUseCase.invoke() } returns true
145151
}
146152

147153
fun withLegalHoldStatus(result: LegalHoldStateForSelfUser) = apply {

kalium

Submodule kalium updated 113 files

0 commit comments

Comments
 (0)