mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-02-08 08:08:45 +01:00
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.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 {
|
||||
|
@ -23,8 +23,8 @@ class HomeModule(private val homeActivity: HomeActivity) {
|
||||
TextItemFactory()
|
||||
}
|
||||
|
||||
factory {
|
||||
homeActivity as HomeNavigator
|
||||
single {
|
||||
HomeNavigator()
|
||||
}
|
||||
|
||||
factory { (roomId: String) ->
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
}
|
@ -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())
|
||||
}
|
||||
|
||||
|
@ -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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user