Skip to content

Commit

Permalink
chore: cleanup MLSCallHelper class (#2938)
Browse files Browse the repository at this point in the history
(cherry picked from commit 375ca80)
  • Loading branch information
ohassine committed Aug 16, 2024
1 parent 683661d commit a950a96
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ import com.wire.kalium.logic.data.call.CallRepository
import com.wire.kalium.logic.data.call.CallStatus
import com.wire.kalium.logic.data.call.CallType
import com.wire.kalium.logic.data.call.EpochInfo
import com.wire.kalium.logic.data.call.CallHelperImpl
import com.wire.kalium.logic.data.call.Participant
import com.wire.kalium.logic.data.call.TestVideoType
import com.wire.kalium.logic.data.call.MLSCallHelperImpl
import com.wire.kalium.logic.data.call.VideoState
import com.wire.kalium.logic.data.call.VideoStateChecker
import com.wire.kalium.logic.data.call.mapper.CallMapper
Expand Down Expand Up @@ -216,7 +216,11 @@ class CallManagerImpl internal constructor(
.keepingStrongReference(),
closeCallHandler = OnCloseCall(
callRepository = callRepository,
mlsCallHelper = MLSCallHelperImpl(callRepository, subconversationRepository, userConfigRepository),
callHelper = CallHelperImpl(
callRepository = callRepository,
subconversationRepository = subconversationRepository,
userConfigRepository = userConfigRepository
),
networkStateObserver = networkStateObserver,
scope = scope,
qualifiedIdMapper = qualifiedIdMapper
Expand Down Expand Up @@ -543,7 +547,7 @@ class CallManagerImpl internal constructor(
participantMapper = ParticipantMapperImpl(videoStateChecker, callMapper),
userRepository = userRepository,
userConfigRepository = userConfigRepository,
mlsCallHelper = MLSCallHelperImpl(
callHelper = CallHelperImpl(
callRepository = callRepository,
subconversationRepository = subconversationRepository,
userConfigRepository = userConfigRepository
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import com.wire.kalium.logger.obfuscateId
import com.wire.kalium.logic.callingLogger
import com.wire.kalium.logic.data.call.CallRepository
import com.wire.kalium.logic.data.call.CallStatus
import com.wire.kalium.logic.data.call.MLSCallHelper
import com.wire.kalium.logic.data.call.CallHelper
import com.wire.kalium.logic.data.conversation.Conversation
import com.wire.kalium.logic.data.id.ConversationId
import com.wire.kalium.logic.data.id.QualifiedIdMapper
Expand All @@ -40,7 +40,7 @@ import kotlinx.coroutines.launch
@Suppress("LongParameterList")
class OnCloseCall(
private val callRepository: CallRepository,
private val mlsCallHelper: MLSCallHelper,
private val callHelper: CallHelper,
private val scope: CoroutineScope,
private val qualifiedIdMapper: QualifiedIdMapper,
private val networkStateObserver: NetworkStateObserver
Expand Down Expand Up @@ -79,7 +79,7 @@ class OnCloseCall(
callRepository.getCallMetadataProfile()[conversationIdWithDomain]?.conversationType

if (callRepository.getCallMetadataProfile()[conversationIdWithDomain]?.protocol is Conversation.ProtocolInfo.MLS) {
mlsCallHelper.handleCallTermination(conversationIdWithDomain, conversationType)
callHelper.handleCallTermination(conversationIdWithDomain, conversationType)
}
callingLogger.i("[OnCloseCall] -> ConversationId: ${conversationId.obfuscateId()} | callStatus: $callStatus")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import com.wire.kalium.logic.callingLogger
import com.wire.kalium.logic.configuration.UserConfigRepository
import com.wire.kalium.logic.data.call.CallParticipants
import com.wire.kalium.logic.data.call.CallRepository
import com.wire.kalium.logic.data.call.MLSCallHelper
import com.wire.kalium.logic.data.call.CallHelper
import com.wire.kalium.logic.data.call.Participant
import com.wire.kalium.logic.data.call.mapper.ParticipantMapper
import com.wire.kalium.logic.data.id.ConversationId
Expand All @@ -47,7 +47,7 @@ class OnParticipantListChanged internal constructor(
private val participantMapper: ParticipantMapper,
private val userRepository: UserRepository,
private val userConfigRepository: UserConfigRepository,
private val mlsCallHelper: MLSCallHelper,
private val callHelper: CallHelper,
private val endCall: suspend (conversationId: ConversationId) -> Unit,
private val callingScope: CoroutineScope,
private val jsonDecoder: Json = Json
Expand Down Expand Up @@ -81,7 +81,7 @@ class OnParticipantListChanged internal constructor(

val currentCall = callRepository.establishedCallsFlow().first().firstOrNull()
currentCall?.let {
val shouldEndSFTOneOnOneCall = mlsCallHelper.shouldEndSFTOneOnOneCall(
val shouldEndSFTOneOnOneCall = callHelper.shouldEndSFTOneOnOneCall(
conversationId = conversationIdWithDomain,
callProtocol = callProtocol,
conversationType = it.conversationType,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,14 @@ import com.wire.kalium.logic.functional.onSuccess
import com.wire.kalium.network.api.authenticated.conversation.SubconversationDeleteRequest

/**
* Helper class to handle MLS call related operations.
* Helper class to handle call related operations.
*/
interface MLSCallHelper {
interface CallHelper {

/**
* Check if the OneOnOne MLS call that uses SFT should be ended.
* The call should be ended if the call has two participants and the second participant has lost audio.
* Check if the OneOnOne call that uses SFT should be ended.
* For Proteus, the call should be ended if the call has one participant after having 2 in the call.
* For MLS, the call should be ended if the call has two participants and the second participant has lost audio.
*
* @param conversationId the conversation id.
* @param callProtocol the call protocol.
Expand All @@ -55,7 +56,7 @@ interface MLSCallHelper {

/**
* Handle the call termination.
* If the call is a one on one call is oneOneOne on SFT, then delete MLS sub conversation
* If the call is oneOneOne on SFT, then delete MLS sub conversation
* otherwise leave the MLS conference.
*
* @param conversationId the conversation id.
Expand All @@ -68,11 +69,11 @@ interface MLSCallHelper {
)
}

class MLSCallHelperImpl(
class CallHelperImpl(
private val callRepository: CallRepository,
private val subconversationRepository: SubconversationRepository,
private val userConfigRepository: UserConfigRepository
) : MLSCallHelper {
) : CallHelper {

override fun shouldEndSFTOneOnOneCall(
conversationId: ConversationId,
Expand Down Expand Up @@ -100,12 +101,12 @@ class MLSCallHelperImpl(
if (userConfigRepository.shouldUseSFTForOneOnOneCalls().getOrElse(false) &&
conversationType == Conversation.Type.ONE_ON_ONE
) {
callingLogger.i("[MLSCallHelper] -> fetching remote MLS sub conversation details")
callingLogger.i("[CallHelper] -> fetching remote MLS sub conversation details")
subconversationRepository.fetchRemoteSubConversationDetails(
conversationId,
CALL_SUBCONVERSATION_ID
).onSuccess { subconversationDetails ->
callingLogger.i("[MLSCallHelper] -> Deleting remote MLS sub conversation")
callingLogger.i("[CallHelper] -> Deleting remote MLS sub conversation")
subconversationRepository.deleteRemoteSubConversation(
subconversationDetails.parentId.toModel(),
SubconversationId(subconversationDetails.id),
Expand All @@ -115,10 +116,10 @@ class MLSCallHelperImpl(
)
)
}.onFailure {
callingLogger.e("[MLSCallHelper] -> Error fetching remote MLS sub conversation details")
callingLogger.e("[CallHelper] -> Error fetching remote MLS sub conversation details")
}
} else {
callingLogger.i("[MLSCallHelper] -> Leaving MLS conference")
callingLogger.i("[CallHelper] -> Leaving MLS conference")
callRepository.leaveMlsConference(conversationId)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ class MLSCallHelperTest {
@Mock
val userConfigRepository = mock(classOf<UserConfigRepository>())

private val mLSCallHelper: MLSCallHelper = MLSCallHelperImpl(
private val mLSCallHelper: CallHelper = CallHelperImpl(
callRepository = callRepository,
subconversationRepository = subconversationRepository,
userConfigRepository = userConfigRepository
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,12 @@ import com.wire.kalium.logic.data.call.CallMetadata
import com.wire.kalium.logic.data.call.CallMetadataProfile
import com.wire.kalium.logic.data.call.CallRepository
import com.wire.kalium.logic.data.call.CallStatus
import com.wire.kalium.logic.data.call.MLSCallHelper
import com.wire.kalium.logic.data.conversation.Conversation
import com.wire.kalium.logic.data.id.ConversationId
import com.wire.kalium.logic.data.id.GroupID
import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl
import com.wire.kalium.logic.data.call.CallStatus
import com.wire.kalium.logic.data.call.CallHelper
import com.wire.kalium.logic.data.mls.CipherSuite
import com.wire.kalium.logic.framework.TestUser
import com.wire.kalium.network.NetworkState
Expand Down Expand Up @@ -58,7 +59,7 @@ class OnCloseCallTest {
val networkStateObserver = mock(NetworkStateObserver::class)

@Mock
val mlsCallHelper = mock(classOf<MLSCallHelper>())
val callHelper = mock(classOf<CallHelper>())

val qualifiedIdMapper = QualifiedIdMapperImpl(TestUser.SELF.id)

Expand All @@ -72,7 +73,7 @@ class OnCloseCallTest {
fun setUp() {
onCloseCall = OnCloseCall(
callRepository,
mlsCallHelper,
callHelper,
testScope,
qualifiedIdMapper,
networkStateObserver
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import com.wire.kalium.logic.configuration.UserConfigRepository
import com.wire.kalium.logic.data.call.Call
import com.wire.kalium.logic.data.call.CallRepository
import com.wire.kalium.logic.data.call.CallStatus
import com.wire.kalium.logic.data.call.MLSCallHelper
import com.wire.kalium.logic.data.call.CallHelper
import com.wire.kalium.logic.data.call.Participant
import com.wire.kalium.logic.data.call.mapper.ParticipantMapper
import com.wire.kalium.logic.data.conversation.Conversation
Expand Down Expand Up @@ -150,7 +150,7 @@ class OnParticipantListChangedTest {
val userRepository = mock(UserRepository::class)

@Mock
val mlsCallHelper = mock(MLSCallHelper::class)
val callHelper = mock(CallHelper::class)

var isEndCallInvoked = false

Expand All @@ -161,7 +161,7 @@ class OnParticipantListChangedTest {
participantMapper = participantMapper,
userConfigRepository = userConfigRepository,
userRepository = userRepository,
mlsCallHelper = mlsCallHelper,
callHelper = callHelper,
qualifiedIdMapper = qualifiedIdMapper,
endCall = {
isEndCallInvoked = true
Expand Down

0 comments on commit a950a96

Please sign in to comment.