forked from GitHub-Mirror/riotX-android
Home : use only one ViewModel and one state
This commit is contained in:
parent
64759abc9e
commit
5cc617168e
BIN
.idea/caches/build_file_checksums.ser
generated
BIN
.idea/caches/build_file_checksums.ser
generated
Binary file not shown.
@ -0,0 +1,14 @@
|
|||||||
|
package im.vector.riotredesign.features.home
|
||||||
|
|
||||||
|
import im.vector.matrix.android.api.session.group.model.GroupSummary
|
||||||
|
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
||||||
|
|
||||||
|
sealed class HomeActions {
|
||||||
|
|
||||||
|
data class SelectRoom(val roomSummary: RoomSummary) : HomeActions()
|
||||||
|
|
||||||
|
data class SelectGroup(val groupSummary: GroupSummary) : HomeActions()
|
||||||
|
|
||||||
|
object RoomDisplayed : HomeActions()
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package im.vector.riotredesign.features.home.room.list
|
package im.vector.riotredesign.features.home
|
||||||
|
|
||||||
import android.support.v4.app.FragmentActivity
|
import android.support.v4.app.FragmentActivity
|
||||||
import com.airbnb.mvrx.BaseMvRxViewModel
|
import com.airbnb.mvrx.BaseMvRxViewModel
|
||||||
@ -6,39 +6,36 @@ import com.airbnb.mvrx.MvRxViewModelFactory
|
|||||||
import im.vector.matrix.android.api.Matrix
|
import im.vector.matrix.android.api.Matrix
|
||||||
import im.vector.matrix.android.api.session.Session
|
import im.vector.matrix.android.api.session.Session
|
||||||
import im.vector.matrix.rx.rx
|
import im.vector.matrix.rx.rx
|
||||||
import im.vector.riotredesign.features.home.group.GroupListActions
|
|
||||||
import im.vector.riotredesign.features.home.group.GroupListViewModel
|
|
||||||
import im.vector.riotredesign.features.home.group.GroupListViewState
|
|
||||||
import org.koin.android.ext.android.get
|
import org.koin.android.ext.android.get
|
||||||
|
|
||||||
class RoomListViewModel(initialState: RoomListViewState,
|
class HomeViewModel(initialState: HomeViewState, private val session: Session) : BaseMvRxViewModel<HomeViewState>(initialState) {
|
||||||
private val session: Session
|
|
||||||
) : BaseMvRxViewModel<RoomListViewState>(initialState) {
|
|
||||||
|
|
||||||
companion object : MvRxViewModelFactory<RoomListViewState> {
|
companion object : MvRxViewModelFactory<HomeViewState> {
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
override fun create(activity: FragmentActivity, state: RoomListViewState): RoomListViewModel {
|
override fun create(activity: FragmentActivity, state: HomeViewState): HomeViewModel {
|
||||||
val matrix = activity.get<Matrix>()
|
val matrix = activity.get<Matrix>()
|
||||||
val currentSession = matrix.currentSession
|
val currentSession = matrix.currentSession
|
||||||
return RoomListViewModel(state, currentSession)
|
return HomeViewModel(state, currentSession)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
observeRoomSummaries()
|
observeRoomSummaries()
|
||||||
|
observeGroupSummaries()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun accept(action: RoomListActions) {
|
fun accept(action: HomeActions) {
|
||||||
when (action) {
|
when (action) {
|
||||||
is RoomListActions.SelectRoom -> handleSelectRoom(action)
|
is HomeActions.SelectRoom -> handleSelectRoom(action)
|
||||||
is RoomListActions.RoomDisplayed -> setState { copy(shouldOpenRoomDetail = false) }
|
is HomeActions.SelectGroup -> handleSelectGroup(action)
|
||||||
|
is HomeActions.RoomDisplayed -> setState { copy(shouldOpenRoomDetail = false) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// PRIVATE METHODS *****************************************************************************
|
// PRIVATE METHODS *****************************************************************************
|
||||||
|
|
||||||
private fun handleSelectRoom(action: RoomListActions.SelectRoom) {
|
private fun handleSelectRoom(action: HomeActions.SelectRoom) {
|
||||||
withState { state ->
|
withState { state ->
|
||||||
if (state.selectedRoom?.roomId != action.roomSummary.roomId) {
|
if (state.selectedRoom?.roomId != action.roomSummary.roomId) {
|
||||||
session.saveLastSelectedRoom(action.roomSummary)
|
session.saveLastSelectedRoom(action.roomSummary)
|
||||||
@ -47,6 +44,14 @@ class RoomListViewModel(initialState: RoomListViewState,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun handleSelectGroup(action: HomeActions.SelectGroup) {
|
||||||
|
withState { state ->
|
||||||
|
if (state.selectedGroup?.groupId != action.groupSummary.groupId) {
|
||||||
|
setState { copy(selectedGroup = action.groupSummary) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun observeRoomSummaries() {
|
private fun observeRoomSummaries() {
|
||||||
session
|
session
|
||||||
.rx().liveRoomSummaries()
|
.rx().liveRoomSummaries()
|
||||||
@ -61,7 +66,7 @@ class RoomListViewModel(initialState: RoomListViewState,
|
|||||||
?: groupRooms.firstOrNull()
|
?: groupRooms.firstOrNull()
|
||||||
|
|
||||||
copy(
|
copy(
|
||||||
async = async,
|
asyncRooms = async,
|
||||||
directRooms = directRooms,
|
directRooms = directRooms,
|
||||||
groupRooms = groupRooms,
|
groupRooms = groupRooms,
|
||||||
selectedRoom = selectedRoom
|
selectedRoom = selectedRoom
|
||||||
@ -69,4 +74,11 @@ class RoomListViewModel(initialState: RoomListViewState,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun observeGroupSummaries() {
|
||||||
|
session
|
||||||
|
.rx().liveGroupSummaries()
|
||||||
|
.execute { async ->
|
||||||
|
copy(asyncGroups = async)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package im.vector.riotredesign.features.home
|
||||||
|
|
||||||
|
import com.airbnb.mvrx.Async
|
||||||
|
import com.airbnb.mvrx.MvRxState
|
||||||
|
import com.airbnb.mvrx.Uninitialized
|
||||||
|
import im.vector.matrix.android.api.session.group.model.GroupSummary
|
||||||
|
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
||||||
|
|
||||||
|
data class HomeViewState(
|
||||||
|
val asyncRooms: Async<List<RoomSummary>> = Uninitialized,
|
||||||
|
val directRooms: List<RoomSummary> = emptyList(),
|
||||||
|
val groupRooms: List<RoomSummary> = emptyList(),
|
||||||
|
val selectedRoom: RoomSummary? = null,
|
||||||
|
val shouldOpenRoomDetail: Boolean = true,
|
||||||
|
val asyncGroups: Async<List<GroupSummary>> = Uninitialized,
|
||||||
|
val selectedGroup: GroupSummary? = null
|
||||||
|
) : MvRxState
|
@ -1,9 +0,0 @@
|
|||||||
package im.vector.riotredesign.features.home.group
|
|
||||||
|
|
||||||
import im.vector.matrix.android.api.session.group.model.GroupSummary
|
|
||||||
|
|
||||||
sealed class GroupListActions {
|
|
||||||
|
|
||||||
data class SelectGroup(val groupSummary: GroupSummary) : GroupListActions()
|
|
||||||
|
|
||||||
}
|
|
@ -6,12 +6,15 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import com.airbnb.mvrx.Incomplete
|
import com.airbnb.mvrx.Incomplete
|
||||||
import com.airbnb.mvrx.Success
|
import com.airbnb.mvrx.Success
|
||||||
import com.airbnb.mvrx.fragmentViewModel
|
import com.airbnb.mvrx.activityViewModel
|
||||||
import im.vector.matrix.android.api.session.group.model.GroupSummary
|
import im.vector.matrix.android.api.session.group.model.GroupSummary
|
||||||
import im.vector.riotredesign.R
|
import im.vector.riotredesign.R
|
||||||
import im.vector.riotredesign.core.platform.RiotFragment
|
import im.vector.riotredesign.core.platform.RiotFragment
|
||||||
import im.vector.riotredesign.core.platform.StateView
|
import im.vector.riotredesign.core.platform.StateView
|
||||||
import kotlinx.android.synthetic.main.fragment_room_list.*
|
import im.vector.riotredesign.features.home.HomeActions
|
||||||
|
import im.vector.riotredesign.features.home.HomeViewModel
|
||||||
|
import im.vector.riotredesign.features.home.HomeViewState
|
||||||
|
import kotlinx.android.synthetic.main.fragment_group_list.*
|
||||||
|
|
||||||
class GroupListFragment : RiotFragment(), GroupSummaryController.Callback {
|
class GroupListFragment : RiotFragment(), GroupSummaryController.Callback {
|
||||||
|
|
||||||
@ -21,8 +24,9 @@ class GroupListFragment : RiotFragment(), GroupSummaryController.Callback {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val viewModel: GroupListViewModel by fragmentViewModel()
|
private val viewModel: HomeViewModel by activityViewModel()
|
||||||
private lateinit var roomController: GroupSummaryController
|
|
||||||
|
private lateinit var groupController: GroupSummaryController
|
||||||
|
|
||||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||||
return inflater.inflate(R.layout.fragment_group_list, container, false)
|
return inflater.inflate(R.layout.fragment_group_list, container, false)
|
||||||
@ -30,22 +34,22 @@ class GroupListFragment : RiotFragment(), GroupSummaryController.Callback {
|
|||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
roomController = GroupSummaryController(this)
|
groupController = GroupSummaryController(this)
|
||||||
stateView.contentView = epoxyRecyclerView
|
stateView.contentView = epoxyRecyclerView
|
||||||
epoxyRecyclerView.setController(roomController)
|
epoxyRecyclerView.setController(groupController)
|
||||||
viewModel.subscribe { renderState(it) }
|
viewModel.subscribe { renderState(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderState(state: GroupListViewState) {
|
private fun renderState(state: HomeViewState) {
|
||||||
when (state.async) {
|
when (state.asyncGroups) {
|
||||||
is Incomplete -> renderLoading()
|
is Incomplete -> renderLoading()
|
||||||
is Success -> renderSuccess(state)
|
is Success -> renderSuccess(state)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderSuccess(state: GroupListViewState) {
|
private fun renderSuccess(state: HomeViewState) {
|
||||||
stateView.state = StateView.State.Content
|
stateView.state = StateView.State.Content
|
||||||
roomController.setData(state)
|
groupController.setData(state)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderLoading() {
|
private fun renderLoading() {
|
||||||
@ -53,7 +57,7 @@ class GroupListFragment : RiotFragment(), GroupSummaryController.Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onGroupSelected(groupSummary: GroupSummary) {
|
override fun onGroupSelected(groupSummary: GroupSummary) {
|
||||||
viewModel.accept(GroupListActions.SelectGroup(groupSummary))
|
viewModel.accept(HomeActions.SelectGroup(groupSummary))
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,53 +0,0 @@
|
|||||||
package im.vector.riotredesign.features.home.group
|
|
||||||
|
|
||||||
import android.support.v4.app.FragmentActivity
|
|
||||||
import com.airbnb.mvrx.BaseMvRxViewModel
|
|
||||||
import com.airbnb.mvrx.MvRxViewModelFactory
|
|
||||||
import im.vector.matrix.android.api.Matrix
|
|
||||||
import im.vector.matrix.android.api.session.Session
|
|
||||||
import im.vector.matrix.rx.rx
|
|
||||||
import org.koin.android.ext.android.get
|
|
||||||
|
|
||||||
class GroupListViewModel(initialState: GroupListViewState,
|
|
||||||
private val session: Session
|
|
||||||
) : BaseMvRxViewModel<GroupListViewState>(initialState) {
|
|
||||||
|
|
||||||
companion object : MvRxViewModelFactory<GroupListViewState> {
|
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
override fun create(activity: FragmentActivity, state: GroupListViewState): GroupListViewModel {
|
|
||||||
val matrix = activity.get<Matrix>()
|
|
||||||
val currentSession = matrix.currentSession
|
|
||||||
return GroupListViewModel(state, currentSession)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
init {
|
|
||||||
observeGroupSummaries()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun accept(action: GroupListActions) {
|
|
||||||
when (action) {
|
|
||||||
is GroupListActions.SelectGroup -> handleSelectGroup(action)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// PRIVATE METHODS *****************************************************************************
|
|
||||||
|
|
||||||
private fun handleSelectGroup(action: GroupListActions.SelectGroup) {
|
|
||||||
withState { state ->
|
|
||||||
if (state.selectedGroup?.groupId != action.groupSummary.groupId) {
|
|
||||||
setState { copy(selectedGroup = action.groupSummary) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun observeGroupSummaries() {
|
|
||||||
session
|
|
||||||
.rx().liveGroupSummaries()
|
|
||||||
.execute { async ->
|
|
||||||
copy(async = async)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
package im.vector.riotredesign.features.home.group
|
|
||||||
|
|
||||||
import com.airbnb.mvrx.Async
|
|
||||||
import com.airbnb.mvrx.MvRxState
|
|
||||||
import com.airbnb.mvrx.Uninitialized
|
|
||||||
import im.vector.matrix.android.api.session.group.model.GroupSummary
|
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
|
||||||
|
|
||||||
data class GroupListViewState(
|
|
||||||
val async: Async<List<GroupSummary>> = Uninitialized,
|
|
||||||
val selectedGroup: GroupSummary? = null
|
|
||||||
) : MvRxState
|
|
@ -2,12 +2,13 @@ package im.vector.riotredesign.features.home.group
|
|||||||
|
|
||||||
import com.airbnb.epoxy.TypedEpoxyController
|
import com.airbnb.epoxy.TypedEpoxyController
|
||||||
import im.vector.matrix.android.api.session.group.model.GroupSummary
|
import im.vector.matrix.android.api.session.group.model.GroupSummary
|
||||||
|
import im.vector.riotredesign.features.home.HomeViewState
|
||||||
|
|
||||||
class GroupSummaryController(private val callback: Callback? = null
|
class GroupSummaryController(private val callback: Callback? = null
|
||||||
) : TypedEpoxyController<GroupListViewState>() {
|
) : TypedEpoxyController<HomeViewState>() {
|
||||||
|
|
||||||
override fun buildModels(viewState: GroupListViewState) {
|
override fun buildModels(viewState: HomeViewState) {
|
||||||
buildGroupModels(viewState.async(), viewState.selectedGroup)
|
buildGroupModels(viewState.asyncGroups(), viewState.selectedGroup)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun buildGroupModels(summaries: List<GroupSummary>?, selected: GroupSummary?) {
|
private fun buildGroupModels(summaries: List<GroupSummary>?, selected: GroupSummary?) {
|
||||||
|
@ -16,6 +16,7 @@ data class GroupSummaryItem(
|
|||||||
private val avatarImageView by bind<ImageView>(R.id.groupAvatarImageView)
|
private val avatarImageView by bind<ImageView>(R.id.groupAvatarImageView)
|
||||||
|
|
||||||
override fun bind() {
|
override fun bind() {
|
||||||
|
avatarImageView.setOnClickListener { listener?.invoke() }
|
||||||
AvatarRenderer.render(avatarUrl, groupName.toString(), avatarImageView)
|
AvatarRenderer.render(avatarUrl, groupName.toString(), avatarImageView)
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,12 +0,0 @@
|
|||||||
package im.vector.riotredesign.features.home.room.list
|
|
||||||
|
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
|
||||||
import im.vector.riotredesign.features.home.group.GroupListActions
|
|
||||||
|
|
||||||
sealed class RoomListActions {
|
|
||||||
|
|
||||||
data class SelectRoom(val roomSummary: RoomSummary) : RoomListActions()
|
|
||||||
|
|
||||||
object RoomDisplayed : RoomListActions()
|
|
||||||
|
|
||||||
}
|
|
@ -7,13 +7,16 @@ import android.view.ViewGroup
|
|||||||
import com.airbnb.mvrx.Fail
|
import com.airbnb.mvrx.Fail
|
||||||
import com.airbnb.mvrx.Incomplete
|
import com.airbnb.mvrx.Incomplete
|
||||||
import com.airbnb.mvrx.Success
|
import com.airbnb.mvrx.Success
|
||||||
import com.airbnb.mvrx.fragmentViewModel
|
import com.airbnb.mvrx.activityViewModel
|
||||||
import im.vector.matrix.android.api.failure.Failure
|
import im.vector.matrix.android.api.failure.Failure
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
||||||
import im.vector.riotredesign.R
|
import im.vector.riotredesign.R
|
||||||
import im.vector.riotredesign.core.platform.RiotFragment
|
import im.vector.riotredesign.core.platform.RiotFragment
|
||||||
import im.vector.riotredesign.core.platform.StateView
|
import im.vector.riotredesign.core.platform.StateView
|
||||||
|
import im.vector.riotredesign.features.home.HomeActions
|
||||||
import im.vector.riotredesign.features.home.HomeNavigator
|
import im.vector.riotredesign.features.home.HomeNavigator
|
||||||
|
import im.vector.riotredesign.features.home.HomeViewModel
|
||||||
|
import im.vector.riotredesign.features.home.HomeViewState
|
||||||
import kotlinx.android.synthetic.main.fragment_room_list.*
|
import kotlinx.android.synthetic.main.fragment_room_list.*
|
||||||
import org.koin.android.ext.android.inject
|
import org.koin.android.ext.android.inject
|
||||||
|
|
||||||
@ -26,7 +29,7 @@ class RoomListFragment : RiotFragment(), RoomSummaryController.Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val homeNavigator by inject<HomeNavigator>()
|
private val homeNavigator by inject<HomeNavigator>()
|
||||||
private val viewModel: RoomListViewModel by fragmentViewModel()
|
private val viewModel: HomeViewModel by activityViewModel()
|
||||||
private lateinit var roomController: RoomSummaryController
|
private lateinit var roomController: RoomSummaryController
|
||||||
|
|
||||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||||
@ -41,20 +44,20 @@ class RoomListFragment : RiotFragment(), RoomSummaryController.Callback {
|
|||||||
viewModel.subscribe { renderState(it) }
|
viewModel.subscribe { renderState(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderState(state: RoomListViewState) {
|
private fun renderState(state: HomeViewState) {
|
||||||
when (state.async) {
|
when (state.asyncRooms) {
|
||||||
is Incomplete -> renderLoading()
|
is Incomplete -> renderLoading()
|
||||||
is Success -> renderSuccess(state)
|
is Success -> renderSuccess(state)
|
||||||
is Fail -> renderFailure(state.async.error)
|
is Fail -> renderFailure(state.asyncRooms.error)
|
||||||
}
|
}
|
||||||
if (state.shouldOpenRoomDetail && state.selectedRoom != null) {
|
if (state.shouldOpenRoomDetail && state.selectedRoom != null) {
|
||||||
homeNavigator.openRoomDetail(state.selectedRoom.roomId)
|
homeNavigator.openRoomDetail(state.selectedRoom.roomId)
|
||||||
viewModel.accept(RoomListActions.RoomDisplayed)
|
viewModel.accept(HomeActions.RoomDisplayed)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderSuccess(state: RoomListViewState) {
|
private fun renderSuccess(state: HomeViewState) {
|
||||||
if (state.async().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 {
|
||||||
stateView.state = StateView.State.Content
|
stateView.state = StateView.State.Content
|
||||||
@ -75,7 +78,7 @@ class RoomListFragment : RiotFragment(), RoomSummaryController.Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onRoomSelected(room: RoomSummary) {
|
override fun onRoomSelected(room: RoomSummary) {
|
||||||
viewModel.accept(RoomListActions.SelectRoom(room))
|
viewModel.accept(HomeActions.SelectRoom(room))
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,14 +0,0 @@
|
|||||||
package im.vector.riotredesign.features.home.room.list
|
|
||||||
|
|
||||||
import com.airbnb.mvrx.Async
|
|
||||||
import com.airbnb.mvrx.MvRxState
|
|
||||||
import com.airbnb.mvrx.Uninitialized
|
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
|
||||||
|
|
||||||
data class RoomListViewState(
|
|
||||||
val async: Async<List<RoomSummary>> = Uninitialized,
|
|
||||||
val directRooms: List<RoomSummary> = emptyList(),
|
|
||||||
val groupRooms: List<RoomSummary> = emptyList(),
|
|
||||||
val selectedRoom: RoomSummary? = null,
|
|
||||||
val shouldOpenRoomDetail: Boolean = true
|
|
||||||
) : MvRxState
|
|
@ -2,17 +2,16 @@ package im.vector.riotredesign.features.home.room.list
|
|||||||
|
|
||||||
import com.airbnb.epoxy.TypedEpoxyController
|
import com.airbnb.epoxy.TypedEpoxyController
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
||||||
import im.vector.riotredesign.features.home.group.GroupListViewState
|
import im.vector.riotredesign.features.home.HomeViewState
|
||||||
import im.vector.riotredesign.features.home.group.GroupSummaryItem
|
|
||||||
|
|
||||||
class RoomSummaryController(private val callback: Callback? = null
|
class RoomSummaryController(private val callback: Callback? = null
|
||||||
) : TypedEpoxyController<RoomListViewState>() {
|
) : TypedEpoxyController<HomeViewState>() {
|
||||||
|
|
||||||
|
|
||||||
private var isDirectRoomsExpanded = true
|
private var isDirectRoomsExpanded = true
|
||||||
private var isGroupRoomsExpanded = true
|
private var isGroupRoomsExpanded = true
|
||||||
|
|
||||||
override fun buildModels(viewState: RoomListViewState) {
|
override fun buildModels(viewState: HomeViewState) {
|
||||||
|
|
||||||
RoomCategoryItem(
|
RoomCategoryItem(
|
||||||
title = "DIRECT MESSAGES",
|
title = "DIRECT MESSAGES",
|
||||||
|
Loading…
Reference in New Issue
Block a user