Improve Previews.
This commit is contained in:
parent
dbffad29d0
commit
330f675541
5 changed files with 66 additions and 27 deletions
|
|
@ -24,22 +24,23 @@ open class SpaceStateProvider : PreviewParameterProvider<SpaceState> {
|
||||||
get() = sequenceOf(
|
get() = sequenceOf(
|
||||||
aSpaceState(),
|
aSpaceState(),
|
||||||
aSpaceState(
|
aSpaceState(
|
||||||
parentSpace = aSpaceRoom(
|
parentSpace = aSpaceRoom(
|
||||||
name = null,
|
name = null,
|
||||||
numJoinedMembers = 5,
|
numJoinedMembers = 5,
|
||||||
childrenCount = 10,
|
childrenCount = 10,
|
||||||
worldReadable = true,
|
worldReadable = true,
|
||||||
|
),
|
||||||
|
hasMoreToLoad = true,
|
||||||
),
|
),
|
||||||
hasMoreToLoad = true,
|
|
||||||
),
|
|
||||||
aSpaceState(
|
aSpaceState(
|
||||||
hasMoreToLoad = true,
|
hasMoreToLoad = true,
|
||||||
children = aListOfSpaceRooms(),
|
children = aListOfSpaceRooms(),
|
||||||
),
|
),
|
||||||
aSpaceState(
|
aSpaceState(
|
||||||
hasMoreToLoad = false,
|
hasMoreToLoad = false,
|
||||||
children = aListOfSpaceRooms()
|
children = aListOfSpaceRooms(),
|
||||||
)
|
joiningRooms = setOf(RoomId("!spaceId0:example.com")),
|
||||||
|
)
|
||||||
// Add other states here
|
// Add other states here
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -63,7 +64,7 @@ fun aSpaceState(
|
||||||
seenSpaceInvites = seenSpaceInvites.toImmutableSet(),
|
seenSpaceInvites = seenSpaceInvites.toImmutableSet(),
|
||||||
hideInvitesAvatar = hideInvitesAvatar,
|
hideInvitesAvatar = hideInvitesAvatar,
|
||||||
hasMoreToLoad = hasMoreToLoad,
|
hasMoreToLoad = hasMoreToLoad,
|
||||||
joinActions = joiningRooms.associateWith { AsyncAction.Uninitialized }.toImmutableMap(),
|
joinActions = joiningRooms.associateWith { AsyncAction.Loading }.toImmutableMap(),
|
||||||
acceptDeclineInviteState = acceptDeclineInviteState,
|
acceptDeclineInviteState = acceptDeclineInviteState,
|
||||||
eventSink = {}
|
eventSink = {}
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,7 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.LocalContentColor
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.CompositionLocalProvider
|
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
|
|
@ -45,7 +43,6 @@ import io.element.android.libraries.designsystem.components.avatar.AvatarType
|
||||||
import io.element.android.libraries.designsystem.components.button.BackButton
|
import io.element.android.libraries.designsystem.components.button.BackButton
|
||||||
import io.element.android.libraries.designsystem.preview.ElementPreview
|
import io.element.android.libraries.designsystem.preview.ElementPreview
|
||||||
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
||||||
import io.element.android.libraries.designsystem.theme.components.ButtonSize
|
|
||||||
import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator
|
import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator
|
||||||
import io.element.android.libraries.designsystem.theme.components.DropdownMenu
|
import io.element.android.libraries.designsystem.theme.components.DropdownMenu
|
||||||
import io.element.android.libraries.designsystem.theme.components.DropdownMenuItem
|
import io.element.android.libraries.designsystem.theme.components.DropdownMenuItem
|
||||||
|
|
@ -53,10 +50,10 @@ import io.element.android.libraries.designsystem.theme.components.Icon
|
||||||
import io.element.android.libraries.designsystem.theme.components.IconButton
|
import io.element.android.libraries.designsystem.theme.components.IconButton
|
||||||
import io.element.android.libraries.designsystem.theme.components.Scaffold
|
import io.element.android.libraries.designsystem.theme.components.Scaffold
|
||||||
import io.element.android.libraries.designsystem.theme.components.Text
|
import io.element.android.libraries.designsystem.theme.components.Text
|
||||||
import io.element.android.libraries.designsystem.theme.components.TextButton
|
|
||||||
import io.element.android.libraries.designsystem.theme.components.TopAppBar
|
import io.element.android.libraries.designsystem.theme.components.TopAppBar
|
||||||
import io.element.android.libraries.matrix.api.room.CurrentUserMembership
|
import io.element.android.libraries.matrix.api.room.CurrentUserMembership
|
||||||
import io.element.android.libraries.matrix.api.spaces.SpaceRoom
|
import io.element.android.libraries.matrix.api.spaces.SpaceRoom
|
||||||
|
import io.element.android.libraries.matrix.ui.components.JoinButton
|
||||||
import io.element.android.libraries.matrix.ui.components.SpaceHeaderView
|
import io.element.android.libraries.matrix.ui.components.SpaceHeaderView
|
||||||
import io.element.android.libraries.matrix.ui.components.SpaceRoomItemView
|
import io.element.android.libraries.matrix.ui.components.SpaceRoomItemView
|
||||||
import io.element.android.libraries.matrix.ui.model.getAvatarData
|
import io.element.android.libraries.matrix.ui.model.getAvatarData
|
||||||
|
|
@ -307,15 +304,11 @@ private fun SpaceRoom.trailingAction(
|
||||||
): @Composable (() -> Unit)? {
|
): @Composable (() -> Unit)? {
|
||||||
return when (state) {
|
return when (state) {
|
||||||
null, CurrentUserMembership.LEFT -> {
|
null, CurrentUserMembership.LEFT -> {
|
||||||
@Composable {
|
{
|
||||||
CompositionLocalProvider(LocalContentColor provides ElementTheme.colors.textActionAccent) {
|
JoinButton(
|
||||||
TextButton(
|
showProgress = isCurrentlyJoining,
|
||||||
text = stringResource(CommonStrings.action_join),
|
onClick = onClick,
|
||||||
onClick = onClick,
|
)
|
||||||
size = ButtonSize.LargeLowPadding,
|
|
||||||
showProgress = isCurrentlyJoining,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else -> null
|
else -> null
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2025 New Vector Ltd.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||||
|
* Please see LICENSE files in the repository root for full details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.element.android.libraries.matrix.ui.components
|
||||||
|
|
||||||
|
import androidx.compose.material3.LocalContentColor
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.CompositionLocalProvider
|
||||||
|
import androidx.compose.ui.res.stringResource
|
||||||
|
import io.element.android.compound.theme.ElementTheme
|
||||||
|
import io.element.android.libraries.designsystem.theme.components.ButtonSize
|
||||||
|
import io.element.android.libraries.designsystem.theme.components.TextButton
|
||||||
|
import io.element.android.libraries.ui.strings.CommonStrings
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun JoinButton(
|
||||||
|
showProgress: Boolean,
|
||||||
|
onClick: () -> Unit,
|
||||||
|
) {
|
||||||
|
CompositionLocalProvider(LocalContentColor provides ElementTheme.colors.textActionAccent) {
|
||||||
|
TextButton(
|
||||||
|
text = stringResource(CommonStrings.action_join),
|
||||||
|
onClick = onClick,
|
||||||
|
size = ButtonSize.LargeLowPadding,
|
||||||
|
showProgress = showProgress,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -259,6 +259,17 @@ internal fun SpaceRoomItemViewPreview(@PreviewParameter(SpaceRoomProvider::class
|
||||||
{ InviteButtonsRowMolecule({}, {}) }
|
{ InviteButtonsRowMolecule({}, {}) }
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
|
},
|
||||||
|
trailingAction = when (spaceRoom.state) {
|
||||||
|
null, CurrentUserMembership.LEFT -> {
|
||||||
|
{
|
||||||
|
JoinButton(
|
||||||
|
showProgress = spaceRoom.state == CurrentUserMembership.LEFT,
|
||||||
|
onClick = { },
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else -> null
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
|
||||||
aSpaceRoom(
|
aSpaceRoom(
|
||||||
roomType = RoomType.Room,
|
roomType = RoomType.Room,
|
||||||
name = "Room name no topic",
|
name = "Room name no topic",
|
||||||
|
state = CurrentUserMembership.LEFT,
|
||||||
),
|
),
|
||||||
aSpaceRoom(
|
aSpaceRoom(
|
||||||
roomType = RoomType.Room,
|
roomType = RoomType.Room,
|
||||||
|
|
@ -48,6 +49,7 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
|
||||||
worldReadable = true,
|
worldReadable = true,
|
||||||
avatarUrl = "anUrl",
|
avatarUrl = "anUrl",
|
||||||
roomId = RoomId("!spaceId1:example.com"),
|
roomId = RoomId("!spaceId1:example.com"),
|
||||||
|
state = CurrentUserMembership.LEFT,
|
||||||
),
|
),
|
||||||
aSpaceRoom(
|
aSpaceRoom(
|
||||||
name = null,
|
name = null,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue