@@ -9,6 +9,7 @@ package io.element.android.features.messages.impl.topbars
9
9
10
10
import androidx.compose.foundation.clickable
11
11
import androidx.compose.foundation.layout.Arrangement
12
+ import androidx.compose.foundation.layout.Column
12
13
import androidx.compose.foundation.layout.Row
13
14
import androidx.compose.foundation.layout.Spacer
14
15
import androidx.compose.foundation.layout.WindowInsets
@@ -30,16 +31,25 @@ import io.element.android.compound.theme.ElementTheme
30
31
import io.element.android.compound.tokens.generated.CompoundIcons
31
32
import io.element.android.features.messages.impl.timeline.components.CallMenuItem
32
33
import io.element.android.features.roomcall.api.RoomCallState
34
+ import io.element.android.features.roomcall.api.aStandByCallState
35
+ import io.element.android.features.roomcall.api.anOngoingCallState
33
36
import io.element.android.libraries.designsystem.components.avatar.Avatar
34
37
import io.element.android.libraries.designsystem.components.avatar.AvatarData
38
+ import io.element.android.libraries.designsystem.components.avatar.AvatarSize
35
39
import io.element.android.libraries.designsystem.components.avatar.AvatarType
36
40
import io.element.android.libraries.designsystem.components.button.BackButton
41
+ import io.element.android.libraries.designsystem.preview.ElementPreview
42
+ import io.element.android.libraries.designsystem.preview.PreviewsDayNight
43
+ import io.element.android.libraries.designsystem.theme.components.HorizontalDivider
37
44
import io.element.android.libraries.designsystem.theme.components.Icon
38
45
import io.element.android.libraries.designsystem.theme.components.Text
39
46
import io.element.android.libraries.designsystem.theme.components.TopAppBar
40
47
import io.element.android.libraries.matrix.api.encryption.identity.IdentityState
48
+ import io.element.android.libraries.matrix.ui.components.aMatrixUserList
49
+ import io.element.android.libraries.matrix.ui.model.getAvatarData
41
50
import io.element.android.libraries.ui.strings.CommonStrings
42
51
import kotlinx.collections.immutable.ImmutableList
52
+ import kotlinx.collections.immutable.toImmutableList
43
53
44
54
@OptIn(ExperimentalMaterial3Api ::class )
45
55
@Composable
@@ -141,3 +151,63 @@ private fun RoomAvatarAndNameRow(
141
151
)
142
152
}
143
153
}
154
+
155
+ @PreviewsDayNight
156
+ @Composable
157
+ internal fun MessagesViewTopBarPreview () = ElementPreview {
158
+ @Composable
159
+ fun AMessagesViewTopBar (
160
+ roomName : String? = "Room name",
161
+ roomAvatar : AvatarData = AvatarData (
162
+ id = "id",
163
+ name = "Room name",
164
+ url = null,
165
+ size = AvatarSize .TimelineRoom ,
166
+ ),
167
+ isTombstoned : Boolean = false,
168
+ heroes : List <AvatarData > = emptyList(),
169
+ roomCallState : RoomCallState = RoomCallState .Unavailable ,
170
+ dmUserIdentityState : IdentityState ? = null,
171
+ ) = MessagesViewTopBar (
172
+ roomName = roomName,
173
+ roomAvatar = roomAvatar,
174
+ isTombstoned = isTombstoned,
175
+ heroes = heroes.toImmutableList(),
176
+ roomCallState = roomCallState,
177
+ dmUserIdentityState = dmUserIdentityState,
178
+ onRoomDetailsClick = {},
179
+ onJoinCallClick = {},
180
+ onBackClick = {},
181
+ )
182
+ Column {
183
+ AMessagesViewTopBar ()
184
+ HorizontalDivider ()
185
+ AMessagesViewTopBar (
186
+ heroes = aMatrixUserList().map { it.getAvatarData(AvatarSize .TimelineRoom ) },
187
+ roomCallState = anOngoingCallState(),
188
+ )
189
+ HorizontalDivider ()
190
+ AMessagesViewTopBar (
191
+ roomName = null ,
192
+ roomCallState = anOngoingCallState(canJoinCall = false ),
193
+ )
194
+ HorizontalDivider ()
195
+ AMessagesViewTopBar (
196
+ roomName = " A DM with a very very very long name" ,
197
+ roomAvatar = AvatarData (
198
+ id = " id" ,
199
+ name = " Room name" ,
200
+ url = null ,
201
+ size = AvatarSize .TimelineRoom ,
202
+ ).copy(url = " https://some-avatar.jpg" ),
203
+ roomCallState = aStandByCallState(canStartCall = false ),
204
+ dmUserIdentityState = IdentityState .Verified
205
+ )
206
+ HorizontalDivider ()
207
+ AMessagesViewTopBar (
208
+ roomName = " A DM with a very very very long name" ,
209
+ isTombstoned = true ,
210
+ dmUserIdentityState = IdentityState .VerificationViolation
211
+ )
212
+ }
213
+ }
0 commit comments