Skip to content

Commit

Permalink
Merge branch 'release/android-cycle-4.6' into chore/update-CC-to-RC-59
Browse files Browse the repository at this point in the history
  • Loading branch information
MohamadJaara authored May 6, 2024
2 parents fe8cf4f + a1fdb7f commit ec0a547
Show file tree
Hide file tree
Showing 10 changed files with 26 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@ import com.wire.kalium.logic.data.user.type.DomainUserTypeMapper
import com.wire.kalium.logic.data.user.type.DomainUserTypeMapperImpl
import com.wire.kalium.logic.data.user.type.UserEntityTypeMapper
import com.wire.kalium.logic.data.user.type.UserEntityTypeMapperImpl
import com.wire.kalium.logic.feature.e2ei.CertificateStatusMapper
import com.wire.kalium.logic.feature.e2ei.CertificateStatusMapperImpl

internal object MapperProvider {
fun apiVersionMapper(): ApiVersionMapper = ApiVersionMapperImpl()
Expand Down Expand Up @@ -174,4 +176,5 @@ internal object MapperProvider {
fun serviceMapper(): ServiceMapper = ServiceMapper()
fun legalHoldStatusMapper(): LegalHoldStatusMapper = LegalHoldStatusMapperImpl
fun acmeMapper(): AcmeMapper = AcmeMapperImpl()
fun certificateStatusMapper(): CertificateStatusMapper = CertificateStatusMapperImpl()
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,28 @@
package com.wire.kalium.logic.feature.e2ei

import com.wire.kalium.cryptography.WireIdentity
import com.wire.kalium.logic.di.MapperProvider
import kotlinx.datetime.Instant

data class E2eiCertificate(
var userHandle: String,
val status: CertificateStatus,
val serialNumber: String,
val certificateDetail: String,
val thumbprint: String,
val endAt: Instant
) {
companion object {
fun fromWireIdentity(identity: WireIdentity, certificateStatusMapper: CertificateStatusMapper): E2eiCertificate? =
val certificateStatusMapper = MapperProvider.certificateStatusMapper()

fun fromWireIdentity(identity: WireIdentity): E2eiCertificate? =
identity.certificate?.let {
E2eiCertificate(
userHandle = it.handle.handle,
status = certificateStatusMapper.toCertificateStatus(identity.status),
serialNumber = it.serialNumber,
certificateDetail = it.certificate,
thumbprint = it.thumbprint,
endAt = Instant.fromEpochSeconds(it.endTimestampSeconds)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ package com.wire.kalium.logic.feature.e2ei.usecase

import com.wire.kalium.logic.data.conversation.ClientId
import com.wire.kalium.logic.data.conversation.MLSConversationRepository
import com.wire.kalium.logic.feature.e2ei.CertificateStatusMapper
import com.wire.kalium.logic.feature.e2ei.E2eiCertificate
import com.wire.kalium.logic.functional.fold

Expand All @@ -31,15 +30,14 @@ interface GetE2eiCertificateUseCase {
}

class GetE2eiCertificateUseCaseImpl internal constructor(
private val mlsConversationRepository: MLSConversationRepository,
private val certificateStatusMapper: CertificateStatusMapper
private val mlsConversationRepository: MLSConversationRepository
) : GetE2eiCertificateUseCase {
override suspend operator fun invoke(clientId: ClientId): GetE2EICertificateUseCaseResult =
mlsConversationRepository.getClientIdentity(clientId).fold(
{ GetE2EICertificateUseCaseResult.Failure },
{
it?.let {
E2eiCertificate.fromWireIdentity(it, certificateStatusMapper)?.let { certificate ->
E2eiCertificate.fromWireIdentity(it)?.let { certificate ->
GetE2EICertificateUseCaseResult.Success(certificate)
}
} ?: GetE2EICertificateUseCaseResult.NotActivated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import com.wire.kalium.logic.data.conversation.MLSConversationRepository
import com.wire.kalium.logic.data.id.ConversationId
import com.wire.kalium.logic.data.user.UserId
import com.wire.kalium.logic.feature.e2ei.CertificateStatus
import com.wire.kalium.logic.feature.e2ei.CertificateStatusMapper
import com.wire.kalium.logic.feature.e2ei.E2eiCertificate
import com.wire.kalium.logic.functional.fold

Expand All @@ -35,15 +34,14 @@ interface GetMembersE2EICertificateStatusesUseCase {
}

class GetMembersE2EICertificateStatusesUseCaseImpl internal constructor(
private val mlsConversationRepository: MLSConversationRepository,
private val certificateStatusMapper: CertificateStatusMapper
private val mlsConversationRepository: MLSConversationRepository
) : GetMembersE2EICertificateStatusesUseCase {
override suspend operator fun invoke(conversationId: ConversationId, userIds: List<UserId>): Map<UserId, CertificateStatus?> =
mlsConversationRepository.getMembersIdentities(conversationId, userIds).fold(
{ mapOf() },
{
it.mapValues { (_, identities) ->
identities.getUserCertificateStatus(certificateStatusMapper)
identities.getUserCertificateStatus()
}
}
)
Expand All @@ -55,9 +53,9 @@ class GetMembersE2EICertificateStatusesUseCaseImpl internal constructor(
* [CertificateStatus.EXPIRED] if any certificate is expired;
* [CertificateStatus.VALID] otherwise.
*/
fun List<WireIdentity>.getUserCertificateStatus(certificateStatusMapper: CertificateStatusMapper): CertificateStatus? {
fun List<WireIdentity>.getUserCertificateStatus(): CertificateStatus? {
val certificates = this.map {
E2eiCertificate.fromWireIdentity(it, certificateStatusMapper)
E2eiCertificate.fromWireIdentity(it)
}
return if (certificates.isEmpty() || certificates.any { it == null }) {
null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class GetUserE2eiCertificatesUseCaseImpl internal constructor(
mlsConversationRepository.getUserIdentity(userId).map { identities ->
val result = mutableMapOf<String, E2eiCertificate>()
identities.forEach {
E2eiCertificate.fromWireIdentity(it, certificateStatusMapper)?.let { certificate ->
E2eiCertificate.fromWireIdentity(it)?.let { certificate ->
result[it.clientId.value] = certificate
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class GetUserE2eiCertificateStatusUseCaseImpl internal constructor(
GetUserE2eiCertificateStatusResult.Failure.NotActivated
},
{ identities ->
identities.getUserCertificateStatus(certificateStatusMapper)?.let {
identities.getUserCertificateStatus()?.let {
GetUserE2eiCertificateStatusResult.Success(it)
} ?: GetUserE2eiCertificateStatusResult.Failure.NotActivated
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,7 @@ class UserScope internal constructor(
)
val getE2EICertificate: GetE2eiCertificateUseCase
get() = GetE2eiCertificateUseCaseImpl(
mlsConversationRepository = mlsConversationRepository,
certificateStatusMapper = certificateStatusMapper
mlsConversationRepository = mlsConversationRepository
)
val getUserE2eiCertificateStatus: GetUserE2eiCertificateStatusUseCase
get() = GetUserE2eiCertificateStatusUseCaseImpl(
Expand All @@ -147,8 +146,7 @@ class UserScope internal constructor(
)
val getMembersE2EICertificateStatuses: GetMembersE2EICertificateStatusesUseCase
get() = GetMembersE2EICertificateStatusesUseCaseImpl(
mlsConversationRepository = mlsConversationRepository,
certificateStatusMapper = certificateStatusMapper
mlsConversationRepository = mlsConversationRepository
)
val deleteAsset: DeleteAssetUseCase get() = DeleteAssetUseCaseImpl(assetRepository)
val setUserHandle: SetUserHandleUseCase get() = SetUserHandleUseCase(accountRepository, validateUserHandleUseCase, syncManager)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -372,9 +372,11 @@ class ObserveE2EIRequiredUseCaseTest {
companion object {
private val MLS_E2EI_SETTING = E2EISettings(true, "some_url", null)
private val VALID_CERTIFICATE = E2eiCertificate(
userHandle = "userHandle",
serialNumber = "serialNumber",
certificateDetail = "certificateDetail",
status = CertificateStatus.VALID,
thumbprint = "thumbprint",
endAt = DateTimeUtil.currentInstant().plus(1.days)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import io.mockative.mock
import io.mockative.once
import io.mockative.verify
import kotlinx.coroutines.test.runTest
import kotlinx.datetime.Instant
import kotlin.test.Test
import kotlin.test.assertEquals

Expand Down Expand Up @@ -90,11 +91,6 @@ class GetE2eiCertificateUseCaseTest {
.with(any())
.wasInvoked(once)

verify(arrangement.certificateStatusMapper)
.function(arrangement.certificateStatusMapper::toCertificateStatus)
.with(any())
.wasInvoked(once)

assertEquals(true, result is GetE2EICertificateUseCaseResult.Success)
}

Expand Down Expand Up @@ -129,8 +125,7 @@ class GetE2eiCertificateUseCaseTest {
val certificateStatusMapper = mock(classOf<CertificateStatusMapper>())

fun arrange() = this to GetE2eiCertificateUseCaseImpl(
mlsConversationRepository = mlsConversationRepository,
certificateStatusMapper = certificateStatusMapper
mlsConversationRepository = mlsConversationRepository
)

fun withRepositoryFailure(failure: CoreFailure = E2EIFailure.Generic(Exception())) = apply {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,7 @@ class GetMembersE2EICertificateStatusesUseCaseTest {

block()
this@Arrangement to GetMembersE2EICertificateStatusesUseCaseImpl(
mlsConversationRepository = mlsConversationRepository,
certificateStatusMapper = certificateStatusMapper
mlsConversationRepository = mlsConversationRepository
)
}
}
Expand Down

0 comments on commit ec0a547

Please sign in to comment.