Fix launching chat

This commit is contained in:
Mario Danic 2019-12-22 03:19:54 +01:00 committed by Mario Đanić
parent 64f034aea5
commit ed6ab4daf8

View File

@ -43,11 +43,14 @@ import com.nextcloud.talk.controllers.ServerSelectionController
import com.nextcloud.talk.controllers.base.providers.ActionBarProvider import com.nextcloud.talk.controllers.base.providers.ActionBarProvider
import com.nextcloud.talk.newarch.domain.repository.offline.UsersRepository import com.nextcloud.talk.newarch.domain.repository.offline.UsersRepository
import com.nextcloud.talk.newarch.features.conversationsList.ConversationsListView import com.nextcloud.talk.newarch.features.conversationsList.ConversationsListView
import com.nextcloud.talk.newarch.local.models.UserNgEntity
import com.nextcloud.talk.utils.ConductorRemapping import com.nextcloud.talk.utils.ConductorRemapping
import com.nextcloud.talk.utils.SecurityUtils import com.nextcloud.talk.utils.SecurityUtils
import com.nextcloud.talk.utils.bundle.BundleKeys import com.nextcloud.talk.utils.bundle.BundleKeys
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
class MainActivity : BaseActivity(), ActionBarProvider { class MainActivity : BaseActivity(), ActionBarProvider {
@ -82,6 +85,8 @@ class MainActivity : BaseActivity(), ActionBarProvider {
.popChangeHandler(HorizontalChangeHandler()) .popChangeHandler(HorizontalChangeHandler())
) )
onNewIntent(intent)
} }
} else { } else {
runOnUiThread { runOnUiThread {
@ -94,9 +99,9 @@ class MainActivity : BaseActivity(), ActionBarProvider {
} }
} }
} else {
onNewIntent(intent)
} }
onNewIntent(intent)
} }
override fun onStart() { override fun onStart() {
@ -129,9 +134,20 @@ class MainActivity : BaseActivity(), ActionBarProvider {
if (intent.action == BundleKeys.KEY_NEW_CONVERSATION) { if (intent.action == BundleKeys.KEY_NEW_CONVERSATION) {
openNewConversationScreen() openNewConversationScreen()
} else if (intent.action == BundleKeys.KEY_OPEN_CONVERSATION) { } else if (intent.action == BundleKeys.KEY_OPEN_CONVERSATION) {
ConductorRemapping.remapChatController( GlobalScope.launch {
router!!, intent.getLongExtra(BundleKeys.KEY_INTERNAL_USER_ID, -1), val user: UserNgEntity? = usersRepository.getUserWithId(intent.getLongExtra(BundleKeys.KEY_INTERNAL_USER_ID, -1))
intent.getStringExtra(BundleKeys.KEY_ROOM_TOKEN)!!, intent.extras!!, false) user?.let {
// due to complications with persistablebundle not supporting complex types we do this magic
// remove this once we rewrite chat magic
val extras = intent.extras!!
extras.putParcelable(BundleKeys.KEY_USER_ENTITY, it)
withContext(Dispatchers.Main) {
ConductorRemapping.remapChatController(
router!!, intent.getLongExtra(BundleKeys.KEY_INTERNAL_USER_ID, -1),
intent.getStringExtra(BundleKeys.KEY_ROOM_TOKEN)!!, extras, false)
}
}
}
} else if (intent.hasExtra(BundleKeys.KEY_FROM_NOTIFICATION_START_CALL)) { } else if (intent.hasExtra(BundleKeys.KEY_FROM_NOTIFICATION_START_CALL)) {
if (intent.getBooleanExtra(BundleKeys.KEY_FROM_NOTIFICATION_START_CALL, false)) { if (intent.getBooleanExtra(BundleKeys.KEY_FROM_NOTIFICATION_START_CALL, false)) {
router!!.pushController( router!!.pushController(