Re-add opening detail when opening app

This commit is contained in:
ganfra 2018-12-30 13:02:20 +01:00 committed by ganfra
parent fd06606c45
commit 51000c4711
5 changed files with 53 additions and 27 deletions

View file

@ -15,17 +15,18 @@ import im.vector.riotredesign.core.platform.OnBackPressed
import im.vector.riotredesign.core.platform.RiotActivity
import im.vector.riotredesign.core.platform.ToolbarConfigurable
import im.vector.riotredesign.features.home.room.detail.LoadingRoomDetailFragment
import im.vector.riotredesign.features.home.room.detail.RoomDetailArgs
import im.vector.riotredesign.features.home.room.detail.RoomDetailFragment
import kotlinx.android.synthetic.main.activity_home.*
import org.koin.android.ext.android.inject
import org.koin.standalone.StandAloneContext.loadKoinModules
import timber.log.Timber
class HomeActivity : RiotActivity(), HomeNavigator, ToolbarConfigurable {
class HomeActivity : RiotActivity(), ToolbarConfigurable {
private val homeNavigator by inject<HomeNavigator>()
override fun onCreate(savedInstanceState: Bundle?) {
loadKoinModules(listOf(HomeModule(this).definition))
homeNavigator.activity = this
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
if (savedInstanceState == null) {
@ -36,6 +37,11 @@ class HomeActivity : RiotActivity(), HomeNavigator, ToolbarConfigurable {
}
}
override fun onDestroy() {
homeNavigator.activity = null
super.onDestroy()
}
override fun configure(toolbar: Toolbar) {
setSupportActionBar(toolbar)
supportActionBar?.setHomeButtonEnabled(true)
@ -84,22 +90,6 @@ class HomeActivity : RiotActivity(), HomeNavigator, ToolbarConfigurable {
return false
}
// HomeNavigator *******************************************************************************
override fun openRoomDetail(roomId: String, eventId: String?) {
val args = RoomDetailArgs(roomId, eventId)
val roomDetailFragment = RoomDetailFragment.newInstance(args)
drawerLayout.closeDrawer(Gravity.LEFT)
replaceFragment(roomDetailFragment, R.id.homeDetailFragmentContainer)
}
override fun openGroupDetail(groupId: String) {
Timber.v("Open group detail $groupId")
}
override fun openUserDetail(userId: String) {
Timber.v("Open user detail $userId")
}
companion object {
fun newIntent(context: Context): Intent {

View file

@ -23,8 +23,8 @@ class HomeModule(private val homeActivity: HomeActivity) {
TextItemFactory()
}
factory {
homeActivity as HomeNavigator
single {
HomeNavigator()
}
factory { (roomId: String) ->

View file

@ -1,11 +1,42 @@
package im.vector.riotredesign.features.home
interface HomeNavigator {
import android.view.Gravity
import im.vector.riotredesign.R
import im.vector.riotredesign.core.extensions.replaceFragment
import im.vector.riotredesign.features.home.room.detail.RoomDetailArgs
import im.vector.riotredesign.features.home.room.detail.RoomDetailFragment
import kotlinx.android.synthetic.main.activity_home.*
import timber.log.Timber
fun openRoomDetail(roomId: String, eventId: String?)
class HomeNavigator {
fun openGroupDetail(groupId: String)
var activity: HomeActivity? = null
fun openUserDetail(userId: String)
private var currentRoomId: String? = null
fun openRoomDetail(roomId: String, eventId: String?) {
if (isRoomOpened(roomId)) {
return
}
currentRoomId = roomId
activity?.let {
val args = RoomDetailArgs(roomId, eventId)
val roomDetailFragment = RoomDetailFragment.newInstance(args)
it.drawerLayout?.closeDrawer(Gravity.LEFT)
it.replaceFragment(roomDetailFragment, R.id.homeDetailFragmentContainer)
}
}
fun openGroupDetail(groupId: String) {
Timber.v("Open group detail $groupId")
}
fun openUserDetail(userId: String) {
Timber.v("Open user detail $userId")
}
fun isRoomOpened(roomId: String): Boolean {
return currentRoomId == roomId
}
}

View file

@ -78,7 +78,9 @@ class RoomDetailFragment : RiotFragment(), TimelineEventController.Callback {
}
private fun renderState(state: RoomDetailViewState) {
renderTimeline(state.asyncTimeline())
if (state.asyncTimeline.complete) {
renderTimeline(state.asyncTimeline())
}
renderRoomSummary(state.asyncRoomSummary())
}

View file

@ -50,6 +50,9 @@ class RoomListFragment : RiotFragment(), RoomSummaryController.Callback {
}
private fun renderSuccess(state: RoomListViewState) {
if (state.selectedRoomId != null) {
homeNavigator.openRoomDetail(state.selectedRoomId, null)
}
if (state.asyncRooms().isNullOrEmpty()) {
stateView.state = StateView.State.Empty(getString(R.string.room_list_empty))
} else {