forked from GitHub-Mirror/riotX-android
Re-add opening detail when opening app
This commit is contained in:
parent
fd06606c45
commit
51000c4711
@ -15,17 +15,18 @@ import im.vector.riotredesign.core.platform.OnBackPressed
|
|||||||
import im.vector.riotredesign.core.platform.RiotActivity
|
import im.vector.riotredesign.core.platform.RiotActivity
|
||||||
import im.vector.riotredesign.core.platform.ToolbarConfigurable
|
import im.vector.riotredesign.core.platform.ToolbarConfigurable
|
||||||
import im.vector.riotredesign.features.home.room.detail.LoadingRoomDetailFragment
|
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 kotlinx.android.synthetic.main.activity_home.*
|
||||||
|
import org.koin.android.ext.android.inject
|
||||||
import org.koin.standalone.StandAloneContext.loadKoinModules
|
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?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
loadKoinModules(listOf(HomeModule(this).definition))
|
loadKoinModules(listOf(HomeModule(this).definition))
|
||||||
|
homeNavigator.activity = this
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_home)
|
setContentView(R.layout.activity_home)
|
||||||
if (savedInstanceState == null) {
|
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) {
|
override fun configure(toolbar: Toolbar) {
|
||||||
setSupportActionBar(toolbar)
|
setSupportActionBar(toolbar)
|
||||||
supportActionBar?.setHomeButtonEnabled(true)
|
supportActionBar?.setHomeButtonEnabled(true)
|
||||||
@ -84,22 +90,6 @@ class HomeActivity : RiotActivity(), HomeNavigator, ToolbarConfigurable {
|
|||||||
return false
|
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 {
|
companion object {
|
||||||
fun newIntent(context: Context): Intent {
|
fun newIntent(context: Context): Intent {
|
||||||
|
@ -23,8 +23,8 @@ class HomeModule(private val homeActivity: HomeActivity) {
|
|||||||
TextItemFactory()
|
TextItemFactory()
|
||||||
}
|
}
|
||||||
|
|
||||||
factory {
|
single {
|
||||||
homeActivity as HomeNavigator
|
HomeNavigator()
|
||||||
}
|
}
|
||||||
|
|
||||||
factory { (roomId: String) ->
|
factory { (roomId: String) ->
|
||||||
|
@ -1,11 +1,42 @@
|
|||||||
package im.vector.riotredesign.features.home
|
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
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -78,7 +78,9 @@ class RoomDetailFragment : RiotFragment(), TimelineEventController.Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun renderState(state: RoomDetailViewState) {
|
private fun renderState(state: RoomDetailViewState) {
|
||||||
|
if (state.asyncTimeline.complete) {
|
||||||
renderTimeline(state.asyncTimeline())
|
renderTimeline(state.asyncTimeline())
|
||||||
|
}
|
||||||
renderRoomSummary(state.asyncRoomSummary())
|
renderRoomSummary(state.asyncRoomSummary())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,6 +50,9 @@ class RoomListFragment : RiotFragment(), RoomSummaryController.Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun renderSuccess(state: RoomListViewState) {
|
private fun renderSuccess(state: RoomListViewState) {
|
||||||
|
if (state.selectedRoomId != null) {
|
||||||
|
homeNavigator.openRoomDetail(state.selectedRoomId, null)
|
||||||
|
}
|
||||||
if (state.asyncRooms().isNullOrEmpty()) {
|
if (state.asyncRooms().isNullOrEmpty()) {
|
||||||
stateView.state = StateView.State.Empty(getString(R.string.room_list_empty))
|
stateView.state = StateView.State.Empty(getString(R.string.room_list_empty))
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user