Update how eventSink is used in DefaultVoiceMessageComposerPresenter
This commit is contained in:
parent
a8cfeb4f8d
commit
4283fe8634
1 changed files with 24 additions and 31 deletions
|
|
@ -68,7 +68,6 @@ class DefaultVoiceMessageComposerPresenter(
|
||||||
}
|
}
|
||||||
|
|
||||||
private val permissionsPresenter = permissionsPresenterFactory.create(Manifest.permission.RECORD_AUDIO)
|
private val permissionsPresenter = permissionsPresenterFactory.create(Manifest.permission.RECORD_AUDIO)
|
||||||
|
|
||||||
private val mediaSender = mediaSenderFactory.create(timelineMode)
|
private val mediaSender = mediaSenderFactory.create(timelineMode)
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -88,7 +87,7 @@ class DefaultVoiceMessageComposerPresenter(
|
||||||
player.setMedia(recording.file.path)
|
player.setMedia(recording.file.path)
|
||||||
}
|
}
|
||||||
|
|
||||||
val onLifecycleEvent = { event: Lifecycle.Event ->
|
fun handleLifecycleEvent(event: Lifecycle.Event) {
|
||||||
when (event) {
|
when (event) {
|
||||||
Lifecycle.Event.ON_PAUSE -> {
|
Lifecycle.Event.ON_PAUSE -> {
|
||||||
sessionCoroutineScope.finishRecording()
|
sessionCoroutineScope.finishRecording()
|
||||||
|
|
@ -101,13 +100,12 @@ class DefaultVoiceMessageComposerPresenter(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val onVoiceMessageRecorderEvent = { event: VoiceMessageComposerEvents.RecorderEvent ->
|
fun handleVoiceMessageRecorderEvent(event: VoiceMessageRecorderEvent) {
|
||||||
val permissionGranted = permissionState.permissionGranted
|
when (event) {
|
||||||
when (event.recorderEvent) {
|
|
||||||
VoiceMessageRecorderEvent.Start -> {
|
VoiceMessageRecorderEvent.Start -> {
|
||||||
Timber.v("Voice message record button pressed")
|
Timber.v("Voice message record button pressed")
|
||||||
when {
|
when {
|
||||||
permissionGranted -> {
|
permissionState.permissionGranted -> {
|
||||||
localCoroutineScope.startRecording()
|
localCoroutineScope.startRecording()
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
|
|
@ -126,7 +124,8 @@ class DefaultVoiceMessageComposerPresenter(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val onPlayerEvent = { event: VoiceMessagePlayerEvent ->
|
|
||||||
|
fun handleVoiceMessagePlayerEvent(event: VoiceMessagePlayerEvent) {
|
||||||
localCoroutineScope.launch {
|
localCoroutineScope.launch {
|
||||||
when (event) {
|
when (event) {
|
||||||
VoiceMessagePlayerEvent.Play -> player.play()
|
VoiceMessagePlayerEvent.Play -> player.play()
|
||||||
|
|
@ -136,28 +135,16 @@ class DefaultVoiceMessageComposerPresenter(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val onAcceptPermissionsRationale = {
|
fun sendVoiceMessage() {
|
||||||
permissionState.eventSink(PermissionsEvents.OpenSystemSettingAndCloseDialog)
|
|
||||||
}
|
|
||||||
|
|
||||||
val onDismissPermissionsRationale = {
|
|
||||||
permissionState.eventSink(PermissionsEvents.CloseDialog)
|
|
||||||
}
|
|
||||||
|
|
||||||
val onDismissSendFailureDialog = {
|
|
||||||
showSendFailureDialog = false
|
|
||||||
}
|
|
||||||
|
|
||||||
val onSendButtonPress = lambda@{
|
|
||||||
val finishedState = recorderState as? VoiceRecorderState.Finished
|
val finishedState = recorderState as? VoiceRecorderState.Finished
|
||||||
if (finishedState == null) {
|
if (finishedState == null) {
|
||||||
val exception = VoiceMessageException.FileException("No file to send")
|
val exception = VoiceMessageException.FileException("No file to send")
|
||||||
analyticsService.trackError(exception)
|
analyticsService.trackError(exception)
|
||||||
Timber.e(exception)
|
Timber.e(exception)
|
||||||
return@lambda
|
return
|
||||||
}
|
}
|
||||||
if (isSending) {
|
if (isSending) {
|
||||||
return@lambda
|
return
|
||||||
}
|
}
|
||||||
isSending = true
|
isSending = true
|
||||||
player.pause()
|
player.pause()
|
||||||
|
|
@ -176,21 +163,27 @@ class DefaultVoiceMessageComposerPresenter(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val handleEvents: (VoiceMessageComposerEvents) -> Unit = { event ->
|
fun handleEvent(event: VoiceMessageComposerEvents) {
|
||||||
when (event) {
|
when (event) {
|
||||||
is VoiceMessageComposerEvents.RecorderEvent -> onVoiceMessageRecorderEvent(event)
|
is VoiceMessageComposerEvents.RecorderEvent -> handleVoiceMessageRecorderEvent(event.recorderEvent)
|
||||||
is VoiceMessageComposerEvents.PlayerEvent -> onPlayerEvent(event.playerEvent)
|
is VoiceMessageComposerEvents.PlayerEvent -> handleVoiceMessagePlayerEvent(event.playerEvent)
|
||||||
is VoiceMessageComposerEvents.SendVoiceMessage -> localCoroutineScope.launch {
|
is VoiceMessageComposerEvents.SendVoiceMessage -> localCoroutineScope.launch {
|
||||||
onSendButtonPress()
|
sendVoiceMessage()
|
||||||
}
|
}
|
||||||
VoiceMessageComposerEvents.DeleteVoiceMessage -> {
|
VoiceMessageComposerEvents.DeleteVoiceMessage -> {
|
||||||
player.pause()
|
player.pause()
|
||||||
localCoroutineScope.deleteRecording()
|
localCoroutineScope.deleteRecording()
|
||||||
}
|
}
|
||||||
VoiceMessageComposerEvents.DismissPermissionsRationale -> onDismissPermissionsRationale()
|
VoiceMessageComposerEvents.DismissPermissionsRationale -> {
|
||||||
VoiceMessageComposerEvents.AcceptPermissionRationale -> onAcceptPermissionsRationale()
|
permissionState.eventSink(PermissionsEvents.CloseDialog)
|
||||||
is VoiceMessageComposerEvents.LifecycleEvent -> onLifecycleEvent(event.event)
|
}
|
||||||
VoiceMessageComposerEvents.DismissSendFailureDialog -> onDismissSendFailureDialog()
|
VoiceMessageComposerEvents.AcceptPermissionRationale -> {
|
||||||
|
permissionState.eventSink(PermissionsEvents.OpenSystemSettingAndCloseDialog)
|
||||||
|
}
|
||||||
|
is VoiceMessageComposerEvents.LifecycleEvent -> handleLifecycleEvent(event.event)
|
||||||
|
VoiceMessageComposerEvents.DismissSendFailureDialog -> {
|
||||||
|
showSendFailureDialog = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -211,7 +204,7 @@ class DefaultVoiceMessageComposerPresenter(
|
||||||
showPermissionRationaleDialog = permissionState.showDialog,
|
showPermissionRationaleDialog = permissionState.showDialog,
|
||||||
showSendFailureDialog = showSendFailureDialog,
|
showSendFailureDialog = showSendFailureDialog,
|
||||||
keepScreenOn = keepScreenOn,
|
keepScreenOn = keepScreenOn,
|
||||||
eventSink = handleEvents,
|
eventSink = ::handleEvent,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue