Skip to content

Commit

Permalink
fix(e2ei): error handling (WPB-6271) (#2721)
Browse files Browse the repository at this point in the history
  • Loading branch information
mchenani authored and vitorhugods committed Feb 23, 2024
1 parent 1bd32ad commit b63999c
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ package com.wire.android.feature.e2ei
import android.content.Context
import com.wire.android.util.dispatchers.DispatcherProvider
import com.wire.android.util.extension.getActivity
import com.wire.kalium.logic.CoreFailure
import com.wire.kalium.logic.E2EIFailure
import com.wire.kalium.logic.feature.e2ei.usecase.E2EIEnrollmentResult
import com.wire.kalium.logic.feature.e2ei.usecase.EnrollE2EIUseCase
import com.wire.kalium.logic.functional.Either
import com.wire.kalium.logic.functional.fold
import dagger.hilt.android.qualifiers.ApplicationContext
import com.wire.kalium.logic.functional.left
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
Expand All @@ -44,20 +44,18 @@ class GetE2EICertificateUseCase @Inject constructor(

operator fun invoke(
isNewClient: Boolean,
enrollmentResultHandler: (Either<CoreFailure, E2EIEnrollmentResult>) -> Unit
enrollmentResultHandler: (Either<E2EIFailure, E2EIEnrollmentResult>) -> Unit
) {
this.enrollmentResultHandler = enrollmentResultHandler
scope.launch {
enrollE2EI.initialEnrollment(isNewClientRegistration = isNewClient).fold({
enrollmentResultHandler(Either.Left(it))
}, {
if (it is E2EIEnrollmentResult.Initialized) {
initialEnrollmentResult = it
OAuthUseCase(applicationContext, it.target, it.oAuthClaims, it.oAuthState).launch(
applicationContext.getActivity()!!.activityResultRegistry,
::oAuthResultHandler
)
} else enrollmentResultHandler(Either.Right(it))
initialEnrollmentResult = it
OAuthUseCase(applicationContext, it.target, it.oAuthClaims, it.oAuthState).launch(
applicationContext.getActivity()!!.activityResultRegistry,
::oAuthResultHandler
)
})
}
}
Expand All @@ -76,7 +74,7 @@ class GetE2EICertificateUseCase @Inject constructor(
}

is OAuthUseCase.OAuthResult.Failed -> {
enrollmentResultHandler(Either.Left(E2EIFailure.FailedOAuth(oAuthResult.reason)))
enrollmentResultHandler(E2EIFailure.OAuth(oAuthResult.reason).left())
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ 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.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
Expand Down Expand Up @@ -130,13 +129,17 @@ class DebugDataOptionsViewModel
e2eiCertificateUseCase(false) { result ->
result.fold({
state = state.copy(
certificate = (it as E2EIFailure.FailedOAuth).reason, showCertificate = true
certificate = it.toString(), showCertificate = true
)
}, {
if (it is E2EIEnrollmentResult.Finalized) {
state = state.copy(
state = if (it is E2EIEnrollmentResult.Finalized) {
state.copy(
certificate = it.certificate, showCertificate = true
)
} else {
state.copy(
certificate = it.toString(), showCertificate = true
)
}
})
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,11 @@ class E2EIEnrollmentViewModel @Inject constructor(
isCertificateEnrollError = false,
isLoading = false
)
} else {
state = state.copy(
isLoading = false,
isCertificateEnrollError = true
)
}
})
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -306,21 +306,21 @@ class FeatureFlagNotificationViewModel @Inject constructor(
e2EIResult = FeatureFlagState.E2EIResult.Failure(e2eiRequired)
)
}, {
if (it is E2EIEnrollmentResult.Finalized) {
featureFlagState = featureFlagState.copy(
isE2EILoading = false,
e2EIRequired = null,
e2EIResult = FeatureFlagState.E2EIResult.Success(it.certificate)
)
} else if (it is E2EIEnrollmentResult.Failed) {
featureFlagState = featureFlagState.copy(
isE2EILoading = false,
e2EIRequired = null,
e2EIResult = FeatureFlagState.E2EIResult.Failure(e2eiRequired)
)
}
})
}
featureFlagState = if (it is E2EIEnrollmentResult.Finalized) {
featureFlagState.copy(
isE2EILoading = false,
e2EIRequired = null,
e2EIResult = FeatureFlagState.E2EIResult.Success(it.certificate)
)
} else {
featureFlagState.copy(
isE2EILoading = false,
e2EIRequired = null,
e2EIResult = FeatureFlagState.E2EIResult.Failure(e2eiRequired)
)
}
})
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ class DeviceDetailsViewModel @Inject constructor(
if (it is E2EIEnrollmentResult.Finalized) {
getE2eiCertificate()
state = state.copy(isE2EICertificateEnrollSuccess = true)
} else if (it is E2EIEnrollmentResult.Failed) {
} else {
state = state.copy(
isLoadingCertificate = false,
isE2EICertificateEnrollError = true
Expand Down

0 comments on commit b63999c

Please sign in to comment.