diff --git a/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt b/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt index 54eb28a78d..9828ee18e1 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt @@ -43,10 +43,12 @@ import androidx.core.view.isVisible import androidx.core.widget.doAfterTextChanged import androidx.emoji2.widget.EmojiTextView import androidx.fragment.app.Fragment +import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LiveData import androidx.lifecycle.Observer import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle import autodagger.AutoInjector import coil.Coil.imageLoader import coil.load @@ -154,7 +156,6 @@ class MessageInputFragment : Fragment() { if (mentionAutocomplete != null && mentionAutocomplete!!.isPopupShowing) { mentionAutocomplete?.dismissPopup() } - clearEditUI() } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -219,8 +220,12 @@ class MessageInputFragment : Fragment() { } ?: clearReplyUi() } - chatActivity.messageInputViewModel.getEditChatMessage.observe(viewLifecycleOwner) { message -> - message?.let { setEditUI(it as ChatMessage) } + viewLifecycleOwner.lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.CREATED) { + chatActivity.messageInputViewModel.getEditChatMessage.collect { message -> + message?.let { setEditUI(it as ChatMessage) } ?: clearEditUI() + } + } } chatActivity.messageInputViewModel.createThreadViewState.observe(viewLifecycleOwner) { state -> @@ -383,7 +388,6 @@ class MessageInputFragment : Fragment() { val filters = arrayOfNulls(1) val lengthFilter = CapabilitiesUtil.getMessageMaxLength(spreedCapabilities) - binding.fragmentEditView.editMessageView.visibility = View.GONE binding.fragmentMessageInputView.setPadding(0, 0, 0, 0) filters[0] = InputFilter.LengthFilter(lengthFilter) diff --git a/app/src/main/java/com/nextcloud/talk/chat/viewmodels/MessageInputViewModel.kt b/app/src/main/java/com/nextcloud/talk/chat/viewmodels/MessageInputViewModel.kt index bc7e609a6f..fd9a506781 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/viewmodels/MessageInputViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/viewmodels/MessageInputViewModel.kt @@ -25,6 +25,8 @@ import com.nextcloud.talk.utils.message.SendMessageUtils import com.stfalcon.chatkit.commons.models.IMessage import io.reactivex.disposables.Disposable import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch import javax.inject.Inject @@ -86,8 +88,8 @@ class MessageInputViewModel @Inject constructor( val mediaPlayerSeekbarObserver: Flow get() = mediaPlayerManager.mediaPlayerSeekBarPosition - private val _getEditChatMessage: MutableLiveData = MutableLiveData() - val getEditChatMessage: LiveData + private val _getEditChatMessage: MutableStateFlow = MutableStateFlow(null) + val getEditChatMessage: StateFlow get() = _getEditChatMessage private val _getReplyChatMessage: MutableLiveData = MutableLiveData() @@ -218,7 +220,7 @@ class MessageInputViewModel @Inject constructor( } fun edit(message: IMessage?) { - _getEditChatMessage.postValue(message) + _getEditChatMessage.value = message } fun startMicInput(context: Context) {