diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt index fdf5eb6e9..8723a4bee 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt @@ -411,12 +411,11 @@ class ChatActivity : setContentView(binding.root) setupSystemColors() - messageInputFragment = MessageInputFragment() - conversationUser = currentUserProvider.currentUser.blockingGet() - handleIntent(intent) + messageInputFragment = getMessageInputFragment() + chatViewModel = ViewModelProvider(this, viewModelFactory)[ChatViewModel::class.java] messageInputViewModel = ViewModelProvider(this, viewModelFactory)[MessageInputViewModel::class.java] @@ -457,6 +456,15 @@ class ChatActivity : } } + private fun getMessageInputFragment(): MessageInputFragment { + val internalId = conversationUser!!.id.toString() + "@" + roomToken + return MessageInputFragment().apply { + arguments = Bundle().apply { + putString(CONVERSATION_INTERNAL_ID, internalId) + } + } + } + override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) val extras: Bundle? = intent.extras @@ -990,7 +998,7 @@ class ChatActivity : } else { supportFragmentManager.commit { setReorderingAllowed(true) - replace(R.id.fragment_container_activity_chat, MessageInputFragment()) + replace(R.id.fragment_container_activity_chat, getMessageInputFragment()) } } } @@ -3786,5 +3794,6 @@ class ChatActivity : private const val RESUME_AUDIO_TAG = "RESUME_AUDIO_TAG" private const val DELAY_TO_SHOW_PROGRESS_BAR = 1000L private const val FIVE_MINUTES_IN_SECONDS: Long = 300 + const val CONVERSATION_INTERNAL_ID = "CONVERSATION_INTERNAL_ID" } } 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 9ddcc6c56..294692788 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt @@ -111,6 +111,7 @@ class MessageInputFragment : Fragment() { lateinit var networkMonitor: NetworkMonitor lateinit var binding: FragmentMessageInputBinding + private lateinit var conversationInternalId: String private var typedWhileTypingTimerIsRunning: Boolean = false private var typingTimer: CountDownTimer? = null private lateinit var chatActivity: ChatActivity @@ -122,6 +123,10 @@ class MessageInputFragment : Fragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) sharedApplication!!.componentApplication.inject(this) + conversationInternalId = arguments?.getString(ChatActivity.CONVERSATION_INTERNAL_ID).orEmpty() + if (conversationInternalId.isEmpty()) { + Log.e(TAG, "internalId for conversation passed to MessageInputFragment is empty") + } } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { @@ -143,7 +148,7 @@ class MessageInputFragment : Fragment() { override fun onResume() { super.onResume() - chatActivity.messageInputViewModel.restoreMessageQueue(chatActivity.currentConversation!!.internalId) + chatActivity.messageInputViewModel.restoreMessageQueue(conversationInternalId) } override fun onDestroyView() { @@ -728,9 +733,8 @@ class MessageInputFragment : Fragment() { } } - private fun isTypingStatusEnabled(): Boolean { - return !CapabilitiesUtil.isTypingStatusPrivate(chatActivity.conversationUser!!) - } + private fun isTypingStatusEnabled(): Boolean = + !CapabilitiesUtil.isTypingStatusPrivate(chatActivity.conversationUser!!) private fun uploadFile(fileUri: String, isVoiceMessage: Boolean, caption: String = "", token: String = "") { var metaData = ""