Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ data class MessageComposerViewState(
val mentionSearchResult: List<Contact> = listOf(),
val mentionSearchQuery: String = String.EMPTY,
val enterToSend: Boolean = false,
val isCallOngoing: Boolean = false,
)

sealed class AssetTooLargeDialogState {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import com.wire.kalium.logic.data.message.SelfDeletionTimer
import com.wire.kalium.logic.data.message.draft.MessageDraft
import com.wire.kalium.logic.data.user.OtherUser
import com.wire.kalium.logic.feature.call.usecase.ObserveEstablishedCallsUseCase
import com.wire.kalium.logic.feature.conversation.IsInteractionAvailableResult
import com.wire.kalium.logic.feature.conversation.MembersToMentionUseCase
import com.wire.kalium.logic.feature.conversation.ObserveConversationInteractionAvailabilityUseCase
Expand All @@ -57,9 +58,11 @@
import com.wire.kalium.logic.feature.user.IsFileSharingEnabledUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.mapLatest
import kotlinx.coroutines.launch
import kotlinx.datetime.Instant
Expand All @@ -82,6 +85,7 @@
private val fileManager: FileManager,
private val kaliumFileSystem: KaliumFileSystem,
private val currentSessionFlowUseCase: CurrentSessionFlowUseCase,
private val observeEstablishedCalls: ObserveEstablishedCallsUseCase,
private val globalDataStore: GlobalDataStore,
) : SavedStateViewModel(savedStateHandle) {

Expand Down Expand Up @@ -111,6 +115,7 @@
observeIsTypingAvailable()
setFileSharingStatus()
getEnterToSendState()
observeCallState()
}

private fun getEnterToSendState() {
Expand Down Expand Up @@ -226,4 +231,13 @@
saveMessageDraft(messageDraft)
}
}

private fun observeCallState() = viewModelScope.launch {
observeEstablishedCalls()
.map { it.isNotEmpty() }
.distinctUntilChanged()
.collectLatest { hasOngoingCalls ->
messageComposerViewState.value = messageComposerViewState.value.copy(isCallOngoing = hasOngoingCalls)

Check warning on line 240 in app/src/main/kotlin/com/wire/android/ui/home/conversations/composer/MessageComposerViewModel.kt

View check run for this annotation

Codecov / codecov/patch

app/src/main/kotlin/com/wire/android/ui/home/conversations/composer/MessageComposerViewModel.kt#L240

Added line #L240 was not covered by tests
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
*/
package com.wire.android.ui.home.messagecomposer

import android.content.Context
import android.net.Uri
import android.widget.Toast
import androidx.activity.compose.BackHandler
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.core.Animatable
Expand Down Expand Up @@ -81,10 +83,11 @@
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Popup
import androidx.compose.ui.window.PopupProperties
import com.wire.android.ui.common.banner.SecurityClassificationBannerForConversation
import com.wire.android.ui.common.bottombar.bottomNavigationBarHeight
import com.wire.android.R
import com.wire.android.ui.common.attachmentdraft.model.AttachmentDraftUi
import com.wire.android.ui.common.attachmentdraft.model.allUploaded
import com.wire.android.ui.common.banner.SecurityClassificationBannerForConversation
import com.wire.android.ui.common.bottombar.bottomNavigationBarHeight
import com.wire.android.ui.common.colorsScheme
import com.wire.android.ui.common.dimensions
import com.wire.android.ui.common.textfield.MessageComposerDefault
Expand Down Expand Up @@ -455,7 +458,13 @@
optionsVisible = inputStateHolder.optionsVisible,
isFileSharingEnabled = messageComposerViewState.value.isFileSharingEnabled,
additionalOptionsState = additionalOptionStateHolder.additionalOptionsSubMenuState,
onRecordAudioMessageClicked = ::toAudioRecording,
onRecordAudioMessageClicked = {
if (!messageComposerViewState.value.isCallOngoing) {
toAudioRecording()
} else {
showRecordNotAllowedMessage(context)
}
},
onCloseAdditionalAttachment = ::toInitialAttachmentOptions,
onLocationPickerClicked = onLocationClicked,
onImagesPicked = { onImagesPicked(it, false) },
Expand Down Expand Up @@ -483,6 +492,10 @@
}
}

private fun showRecordNotAllowedMessage(context: Context) {
Toast.makeText(context, R.string.record_audio_unable_due_to_ongoing_call, Toast.LENGTH_SHORT).show()

Check warning on line 496 in app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/EnabledMessageComposer.kt

View check run for this annotation

Codecov / codecov/patch

app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/EnabledMessageComposer.kt#L496

Added line #L496 was not covered by tests
}

private fun Size.getDistanceToCorner(corner: Offset): Float {
val cornerOffset = Offset(width - corner.x, height - corner.y)
return cornerOffset.getDistance()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ internal class MessageComposerViewModelArrangement {
currentSessionFlowUseCase()
} returns flowOf(CurrentSessionResult.Success(AccountInfo.Valid(TestUser.USER_ID)))
coEvery { globalDataStore.enterToSendFlow() } returns flowOf(false)
coEvery { observeEstablishedCalls() } returns emptyFlow()
}

@MockK
Expand Down Expand Up @@ -149,6 +150,9 @@ internal class MessageComposerViewModelArrangement {
@MockK
lateinit var globalDataStore: GlobalDataStore

@MockK
lateinit var observeEstablishedCalls: ObserveEstablishedCallsUseCase

private val fakeKaliumFileSystem = FakeKaliumFileSystem()

private val viewModel by lazy {
Expand All @@ -167,6 +171,7 @@ internal class MessageComposerViewModelArrangement {
kaliumFileSystem = fakeKaliumFileSystem,
fileManager = fileManager,
currentSessionFlowUseCase = currentSessionFlowUseCase,
observeEstablishedCalls = observeEstablishedCalls,
globalDataStore = globalDataStore,
)
}
Expand Down
Loading