diff --git a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt index c46d755e8..4c825f1ee 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt @@ -349,7 +349,7 @@ class MainActivity : BaseActivity(), ActionBarProvider { } else { remapChatController( router!!, intent.getParcelableExtra(KEY_USER_ENTITY)!!.id, - intent.getStringExtra(KEY_ROOM_TOKEN)!!, intent.extras!!, false + intent.getStringExtra(KEY_ROOM_TOKEN)!!, intent.extras!!, false, true ) } } diff --git a/app/src/main/java/com/nextcloud/talk/utils/ConductorRemapping.kt b/app/src/main/java/com/nextcloud/talk/utils/ConductorRemapping.kt index 0f64722e2..972488949 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/ConductorRemapping.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/ConductorRemapping.kt @@ -24,15 +24,28 @@ import android.os.Bundle import com.bluelinelabs.conductor.Router import com.bluelinelabs.conductor.RouterTransaction import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler +import com.bluelinelabs.conductor.changehandler.SimpleSwapChangeHandler import com.nextcloud.talk.controllers.ChatController object ConductorRemapping { + fun remapChatController( router: Router, internalUserId: Long, roomTokenOrId: String, bundle: Bundle, replaceTop: Boolean + ) { + remapChatController(router, internalUserId, roomTokenOrId, bundle, replaceTop, false) + } + + fun remapChatController( + router: Router, + internalUserId: Long, + roomTokenOrId: String, + bundle: Bundle, + replaceTop: Boolean, + pushImmediately: Boolean ) { val tag = "$internalUserId@$roomTokenOrId" if (router.getControllerWithTag(tag) != null) { @@ -49,16 +62,21 @@ object ConductorRemapping { backstack.add(routerTransaction) router.setBackstack(backstack, HorizontalChangeHandler()) } else { + var pushChangeHandler = if (pushImmediately) { + SimpleSwapChangeHandler() + } else { + HorizontalChangeHandler() + } if (!replaceTop) { router.pushController( RouterTransaction.with(ChatController(bundle)) - .pushChangeHandler(HorizontalChangeHandler()) + .pushChangeHandler(pushChangeHandler) .popChangeHandler(HorizontalChangeHandler()).tag(tag) ) } else { router.replaceTopController( RouterTransaction.with(ChatController(bundle)) - .pushChangeHandler(HorizontalChangeHandler()) + .pushChangeHandler(pushChangeHandler) .popChangeHandler(HorizontalChangeHandler()).tag(tag) ) }