Add empty create room fab button

This commit is contained in:
Florian Renaud
2023-02-28 18:07:34 +01:00
parent c135d2a13c
commit 7fbab8939b
3 changed files with 29 additions and 2 deletions

View File

@@ -31,6 +31,7 @@ import com.bumble.appyx.core.node.ParentNode
import com.bumble.appyx.core.node.node
import com.bumble.appyx.navmodel.backstack.BackStack
import com.bumble.appyx.navmodel.backstack.operation.push
import io.element.android.features.createroom.CreateRoomNode
import io.element.android.features.preferences.PreferencesFlowNode
import io.element.android.features.roomlist.RoomListNode
import io.element.android.libraries.architecture.animation.rememberDefaultTransitionHandler
@@ -86,6 +87,10 @@ class LoggedInFlowNode(
override fun onSettingsClicked() {
backstack.push(NavTarget.Settings)
}
override fun onCreateRoomClicked() {
backstack.push(NavTarget.CreateRoom)
}
}
sealed interface NavTarget : Parcelable {
@@ -97,6 +102,9 @@ class LoggedInFlowNode(
@Parcelize
object Settings : NavTarget
@Parcelize
object CreateRoom : NavTarget
}
override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node {
@@ -120,6 +128,9 @@ class LoggedInFlowNode(
NavTarget.Settings -> {
PreferencesFlowNode(buildContext, onOpenBugReport)
}
NavTarget.CreateRoom -> {
CreateRoomNode(buildContext)
}
}
}

View File

@@ -38,6 +38,7 @@ class RoomListNode @AssistedInject constructor(
interface Callback : Plugin {
fun onRoomClicked(roomId: RoomId)
fun onSettingsClicked()
fun onCreateRoomClicked()
}
private fun onRoomClicked(roomId: RoomId) {
@@ -48,6 +49,10 @@ class RoomListNode @AssistedInject constructor(
plugins<Callback>().forEach { it.onSettingsClicked() }
}
private fun onCreateRoomClicked() {
plugins<Callback>().forEach { it.onCreateRoomClicked() }
}
@Composable
override fun View(modifier: Modifier) {
val state = presenter.present()
@@ -55,7 +60,8 @@ class RoomListNode @AssistedInject constructor(
state = state,
modifier = modifier,
onRoomClicked = this::onRoomClicked,
onOpenSettings = this::onOpenSettings
onOpenSettings = this::onOpenSettings,
onCreateRoomClicked = this::onCreateRoomClicked,
)
}
}

View File

@@ -22,6 +22,7 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.FabPosition
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.rememberTopAppBarState
import androidx.compose.runtime.Composable
@@ -42,6 +43,7 @@ import io.element.android.features.roomlist.model.RoomListState
import io.element.android.features.roomlist.model.RoomListStateProvider
import io.element.android.libraries.designsystem.preview.ElementPreviewDark
import io.element.android.libraries.designsystem.preview.ElementPreviewLight
import io.element.android.libraries.designsystem.theme.components.FloatingActionButton
import io.element.android.libraries.designsystem.theme.components.Scaffold
import io.element.android.libraries.designsystem.utils.LogCompositions
import io.element.android.libraries.matrix.api.core.RoomId
@@ -54,6 +56,7 @@ fun RoomListView(
modifier: Modifier = Modifier,
onRoomClicked: (RoomId) -> Unit = {},
onOpenSettings: () -> Unit = {},
onCreateRoomClicked: () -> Unit = {},
) {
fun onFilterChanged(filter: String) {
state.eventSink(RoomListEvents.UpdateFilter(filter))
@@ -72,6 +75,7 @@ fun RoomListView(
onFilterChanged = ::onFilterChanged,
onOpenSettings = onOpenSettings,
onScrollOver = ::onVisibleRangedChanged,
onCreateRoomClicked = onCreateRoomClicked,
)
}
@@ -86,6 +90,7 @@ fun RoomListContent(
onFilterChanged: (String) -> Unit = {},
onOpenSettings: () -> Unit = {},
onScrollOver: (IntRange) -> Unit = {},
onCreateRoomClicked: () -> Unit = {},
) {
fun onRoomClicked(room: RoomListRoomSummary) {
onRoomClicked(room.roomId)
@@ -148,7 +153,12 @@ fun RoomListContent(
}
}
}
}
},
floatingActionButton = {
FloatingActionButton(onClick = onCreateRoomClicked) {
}
},
)
}