Skip to content

Commit

Permalink
fix: release: Enrolling E2EI crash [WPB-6788] (#2728)
Browse files Browse the repository at this point in the history
  • Loading branch information
borichellow authored Feb 27, 2024
1 parent 295d618 commit fadfac3
Show file tree
Hide file tree
Showing 17 changed files with 356 additions and 286 deletions.

This file was deleted.

This file was deleted.

16 changes: 12 additions & 4 deletions app/src/main/kotlin/com/wire/android/ui/WireActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ import com.wire.android.ui.destinations.OtherUserProfileScreenDestination
import com.wire.android.ui.destinations.SelfDevicesScreenDestination
import com.wire.android.ui.destinations.SelfUserProfileScreenDestination
import com.wire.android.ui.destinations.WelcomeScreenDestination
import com.wire.android.ui.e2eiEnrollment.GetE2EICertificateUI
import com.wire.android.ui.home.E2EICertificateRevokedDialog
import com.wire.android.ui.home.E2EIRequiredDialog
import com.wire.android.ui.home.E2EIResultDialog
Expand Down Expand Up @@ -165,8 +166,8 @@ class WireActivity : AppCompatActivity() {
InitialAppState.NOT_MIGRATED -> MigrationScreenDestination
InitialAppState.NOT_LOGGED_IN -> WelcomeScreenDestination
InitialAppState.ENROLL_E2EI -> E2EIEnrollmentScreenDestination
InitialAppState.LOGGED_IN -> HomeScreenDestination
}
InitialAppState.LOGGED_IN -> HomeScreenDestination
}
appLogger.i("$TAG composable content")
setComposableContent(startDestination) {
appLogger.i("$TAG splash hide")
Expand Down Expand Up @@ -370,7 +371,7 @@ class WireActivity : AppCompatActivity() {
E2EIRequiredDialog(
e2EIRequired = e2EIRequired,
isE2EILoading = isE2EILoading,
getCertificate = { featureFlagNotificationViewModel.getE2EICertificate(it) },
getCertificate = featureFlagNotificationViewModel::enrollE2EICertificate,
snoozeDialog = featureFlagNotificationViewModel::snoozeE2EIdRequiredDialog
)
}
Expand All @@ -385,7 +386,7 @@ class WireActivity : AppCompatActivity() {
e2EIResult?.let {
E2EIResultDialog(
result = e2EIResult,
updateCertificate = { featureFlagNotificationViewModel.getE2EICertificate(it) },
updateCertificate = featureFlagNotificationViewModel::enrollE2EICertificate,
snoozeDialog = featureFlagNotificationViewModel::snoozeE2EIdRequiredDialog,
openCertificateDetails = { navigate(NavigationCommand(E2eiCertificateDetailsScreenDestination(it))) },
dismissSuccessDialog = featureFlagNotificationViewModel::dismissSuccessE2EIdDialog,
Expand Down Expand Up @@ -439,6 +440,13 @@ class WireActivity : AppCompatActivity() {
featureFlagNotificationViewModel::dismissCallEndedBecauseOfConversationDegraded
)
}

if (startGettingE2EICertificate) {
GetE2EICertificateUI(
enrollmentResultHandler = { featureFlagNotificationViewModel.handleE2EIEnrollmentResult(it) },
isNewClient = false
)
}
}
}

Expand Down
57 changes: 39 additions & 18 deletions app/src/main/kotlin/com/wire/android/ui/debug/DebugDataOptions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ import com.wire.android.BuildConfig
import com.wire.android.R
import com.wire.android.datastore.GlobalDataStore
import com.wire.android.di.CurrentAccount
import com.wire.android.feature.e2ei.GetE2EICertificateUseCase
import com.wire.android.migration.failure.UserMigrationStatus
import com.wire.android.model.Clickable
import com.wire.android.ui.common.RowItemTemplate
Expand All @@ -47,6 +46,7 @@ import com.wire.android.ui.common.WireDialogButtonType
import com.wire.android.ui.common.WireSwitch
import com.wire.android.ui.common.button.WirePrimaryButton
import com.wire.android.ui.common.dimensions
import com.wire.android.ui.e2eiEnrollment.GetE2EICertificateUI
import com.wire.android.ui.home.conversationslist.common.FolderHeader
import com.wire.android.ui.home.settings.SettingsItem
import com.wire.android.ui.theme.wireColorScheme
Expand All @@ -55,11 +55,14 @@ import com.wire.android.ui.theme.wireTypography
import com.wire.android.util.getDeviceIdString
import com.wire.android.util.getGitBuildId
import com.wire.android.util.ui.PreviewMultipleThemes
import com.wire.kalium.logic.CoreFailure
import com.wire.kalium.logic.E2EIFailure
import com.wire.kalium.logic.data.user.UserId
import com.wire.kalium.logic.feature.debug.DisableEventProcessingUseCase
import com.wire.kalium.logic.feature.e2ei.usecase.E2EIEnrollmentResult
import com.wire.kalium.logic.feature.keypackage.MLSKeyPackageCountResult
import com.wire.kalium.logic.feature.keypackage.MLSKeyPackageCountUseCase
import com.wire.kalium.logic.functional.Either
import com.wire.kalium.logic.functional.fold
import com.wire.kalium.logic.sync.periodic.UpdateApiVersionsScheduler
import com.wire.kalium.logic.sync.slow.RestartSlowSyncProcessForRecoveryUseCase
Expand All @@ -80,7 +83,8 @@ data class DebugDataOptionsState(
val debugId: String = "null",
val commitish: String = "null",
val certificate: String = "null",
val showCertificate: Boolean = false
val showCertificate: Boolean = false,
val startGettingE2EICertificate: Boolean = false
)

@Suppress("LongParameterList")
Expand All @@ -94,7 +98,6 @@ class DebugDataOptionsViewModel
private val mlsKeyPackageCountUseCase: MLSKeyPackageCountUseCase,
private val restartSlowSyncProcessForRecovery: RestartSlowSyncProcessForRecoveryUseCase,
private val disableEventProcessingUseCase: DisableEventProcessingUseCase,
private val e2eiCertificateUseCase: GetE2EICertificateUseCase
) : ViewModel() {

var state by mutableStateOf(
Expand Down Expand Up @@ -126,23 +129,31 @@ class DebugDataOptionsViewModel
}

fun enrollE2EICertificate() {
e2eiCertificateUseCase(false) { result ->
result.fold({
state = state.copy(startGettingE2EICertificate = true)
}

fun handleE2EIEnrollmentResult(result: Either<CoreFailure, E2EIEnrollmentResult>) {
result.fold({
state = state.copy(
certificate = (it as E2EIFailure.OAuth).reason,
showCertificate = true,
startGettingE2EICertificate = false
)
}, {
if (it is E2EIEnrollmentResult.Finalized) {
state = state.copy(
certificate = it.toString(), showCertificate = true
certificate = it.certificate,
showCertificate = true,
startGettingE2EICertificate = false
)
}, {
state = if (it is E2EIEnrollmentResult.Finalized) {
state.copy(
certificate = it.certificate, showCertificate = true
)
} else {
state.copy(
certificate = it.toString(), showCertificate = true
)
}
})
}
} else {
state.copy(
certificate = it.toString(),
showCertificate = true,
startGettingE2EICertificate = false
)
}
})
}

fun dismissCertificateDialog() {
Expand Down Expand Up @@ -236,6 +247,7 @@ fun DebugDataOptions(
onManualMigrationPressed = { onManualMigrationPressed(viewModel.currentAccount) },
onDisableEventProcessingChange = viewModel::disableEventProcessing,
enrollE2EICertificate = viewModel::enrollE2EICertificate,
handleE2EIEnrollmentResult = viewModel::handleE2EIEnrollmentResult,
dismissCertificateDialog = viewModel::dismissCertificateDialog
)
}
Expand All @@ -253,6 +265,7 @@ fun DebugDataOptionsContent(
onForceUpdateApiVersions: () -> Unit,
onManualMigrationPressed: () -> Unit,
enrollE2EICertificate: () -> Unit,
handleE2EIEnrollmentResult: (Either<CoreFailure, E2EIEnrollmentResult>) -> Unit,
dismissCertificateDialog: () -> Unit
) {
Column {
Expand Down Expand Up @@ -349,6 +362,13 @@ fun DebugDataOptionsContent(
onManualMigrationClicked = onManualMigrationPressed
)
}

if (state.startGettingE2EICertificate) {
GetE2EICertificateUI(
enrollmentResultHandler = { handleE2EIEnrollmentResult(it) },
isNewClient = false
)
}
}
}

Expand Down Expand Up @@ -603,6 +623,7 @@ fun PreviewOtherDebugOptions() {
onRestartSlowSyncForRecovery = {},
onManualMigrationPressed = {},
enrollE2EICertificate = {},
handleE2EIEnrollmentResult = {},
dismissCertificateDialog = {},
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ import com.wire.android.ui.theme.WireTheme
import com.wire.android.ui.theme.wireDimensions
import com.wire.android.ui.theme.wireTypography
import com.wire.android.util.ui.PreviewMultipleThemes
import com.wire.kalium.logic.CoreFailure
import com.wire.kalium.logic.feature.e2ei.usecase.E2EIEnrollmentResult
import com.wire.kalium.logic.functional.Either

@RootNavGraph
@Destination(
Expand All @@ -83,7 +86,8 @@ fun E2EIEnrollmentScreen(
viewModel.finalizeMLSClient()
},
dismissErrorDialog = viewModel::dismissErrorDialog,
enrollE2EICertificate = { viewModel.enrollE2EICertificate() },
enrollE2EICertificate = viewModel::enrollE2EICertificate,
handleE2EIEnrollmentResult = viewModel::handleE2EIEnrollmentResult,
openCertificateDetails = {
navigator.navigate(NavigationCommand(E2eiCertificateDetailsScreenDestination(state.certificate)))
},
Expand All @@ -99,6 +103,7 @@ private fun E2EIEnrollmentScreenContent(
dismissSuccess: () -> Unit,
dismissErrorDialog: () -> Unit,
enrollE2EICertificate: () -> Unit,
handleE2EIEnrollmentResult: (Either<CoreFailure, E2EIEnrollmentResult>) -> Unit,
openCertificateDetails: () -> Unit,
onBackButtonClicked: () -> Unit,
onCancelEnrollmentClicked: () -> Unit,
Expand Down Expand Up @@ -201,29 +206,36 @@ private fun E2EIEnrollmentScreenContent(
dismissDialog = dismissSuccess
)
}

if (state.startGettingE2EICertificate) {
GetE2EICertificateUI(
enrollmentResultHandler = { handleE2EIEnrollmentResult(it) },
isNewClient = true
)
}
}
}

@PreviewMultipleThemes
@Composable
fun previewE2EIEnrollmentScreenContent() {
WireTheme {
E2EIEnrollmentScreenContent(E2EIEnrollmentState(), {}, {}, {}, {}, {}, {}) { }
E2EIEnrollmentScreenContent(E2EIEnrollmentState(), {}, {}, {}, {}, {}, {}, {}) { }
}
}

@PreviewMultipleThemes
@Composable
fun previewE2EIEnrollmentScreenContentWithSuccess() {
WireTheme {
E2EIEnrollmentScreenContent(E2EIEnrollmentState(isCertificateEnrollSuccess = true), {}, {}, {}, {}, {}, {}) { }
E2EIEnrollmentScreenContent(E2EIEnrollmentState(isCertificateEnrollSuccess = true), {}, {}, {}, {}, {}, {}, {}) { }
}
}

@PreviewMultipleThemes
@Composable
fun previewE2EIEnrollmentScreenContentWithError() {
WireTheme {
E2EIEnrollmentScreenContent(E2EIEnrollmentState(isCertificateEnrollError = true), {}, {}, {}, {}, {}, {}) { }
E2EIEnrollmentScreenContent(E2EIEnrollmentState(isCertificateEnrollError = true), {}, {}, {}, {}, {}, {}, {}) { }
}
}
Loading

0 comments on commit fadfac3

Please sign in to comment.