Browse Source

Add room list header.

feature/bma/flipper
Benoit Marty 2 years ago
parent
commit
7975ea16e4
  1. 43
      features/roomlist/src/main/java/io/element/android/x/features/roomlist/RoomListScreen.kt
  2. 1
      features/roomlist/src/main/java/io/element/android/x/features/roomlist/RoomListViewModel.kt

43
features/roomlist/src/main/java/io/element/android/x/features/roomlist/RoomListScreen.kt

@ -4,9 +4,9 @@ import androidx.compose.foundation.clickable @@ -4,9 +4,9 @@ import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ExitToApp
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
@ -15,26 +15,33 @@ import androidx.compose.ui.unit.dp @@ -15,26 +15,33 @@ import androidx.compose.ui.unit.dp
import com.airbnb.mvrx.Success
import com.airbnb.mvrx.compose.collectAsState
import com.airbnb.mvrx.compose.mavericksViewModel
import io.element.android.x.ui.theme.components.Avatar
import org.matrix.rustcomponents.sdk.Room
@Composable
fun RoomListScreen(
viewModel: RoomListViewModel = mavericksViewModel(),
onRoomClicked: (String) -> Unit = { }
onRoomClicked: (String) -> Unit = { },
onLogoutClicked: () -> Unit = { },
) {
val state by viewModel.collectAsState()
RoomListContent(state, onRoomClicked)
RoomListContent(state, onRoomClicked, onLogoutClicked)
}
@Composable
fun RoomListContent(
state: RoomListViewState,
onRoomClicked: (String) -> Unit
onRoomClicked: (String) -> Unit,
onLogoutClicked: () -> Unit
) {
Surface(color = MaterialTheme.colorScheme.background) {
Column(
modifier = Modifier.fillMaxSize()
) {
RoomListTopBar(
state = state,
onLogoutClicked = onLogoutClicked
)
val rooms = state.rooms
if (rooms is Success) {
LazyColumn {
@ -49,6 +56,30 @@ fun RoomListContent( @@ -49,6 +56,30 @@ fun RoomListContent(
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun RoomListTopBar(state: RoomListViewState, onLogoutClicked: () -> Unit) {
TopAppBar(
title = {
Row(
modifier = Modifier.fillMaxWidth()
) {
val matrixUser = state.user
Avatar(data = matrixUser.avatarData)
Spacer(modifier = Modifier.width(8.dp))
Text("${matrixUser.username}")
}
},
actions = {
IconButton(
onClick = onLogoutClicked
) {
Icon(Icons.Default.ExitToApp, contentDescription = "logout")
}
}
)
}
@Composable
private fun RoomItem(
modifier: Modifier = Modifier,

1
features/roomlist/src/main/java/io/element/android/x/features/roomlist/RoomListViewModel.kt

@ -35,7 +35,6 @@ class RoomListViewModel(initialState: RoomListViewState) : @@ -35,7 +35,6 @@ class RoomListViewModel(initialState: RoomListViewState) :
val client = getClient()
val url = client.avatarUrl()
val mediaSource = mediaSourceFromUrl(url)
mediaSource.url()
setState {
copy(
user = MatrixUser(

Loading…
Cancel
Save