Add SpaceRoomCell & Space…ProxyProtocols and use them on the SpaceListScreen. (#4404)

This commit is contained in:
Doug
2025-08-13 12:06:29 +01:00
committed by GitHub
parent 192f4765c3
commit 3dc6d73899
32 changed files with 781 additions and 39 deletions
@@ -42,6 +42,7 @@ enum A11yIdentifiers {
static let pollFormScreen = PollFormScreen()
static let roomPollsHistoryScreen = RoomPollsHistoryScreen()
static let manageRoomMemberSheet = ManageRoomMemberSheet()
static let spaceListScreen = SpaceListScreen()
struct AlertInfo {
let primaryButton = "alert_info-primary_button"
@@ -297,4 +298,13 @@ enum A11yIdentifiers {
struct ManageRoomMemberSheet {
let viewProfile = "manage_room_member_sheet-view_profile"
}
struct SpaceListScreen {
let userAvatar = "space_list_screen-user_avatar"
let roomNamePrefix = "space_list_screen-room_name"
func spaceRoomName(_ name: String) -> String {
"\(roomNamePrefix):\(name)"
}
}
}
+15 -10
View File
@@ -59,8 +59,9 @@ enum Avatars {
}
enum UserAvatarSizeOnScreen {
case chats
case spaces
case timeline
case home
case settings
case roomDetails
case dmDetails
@@ -82,13 +83,13 @@ enum UserAvatarSizeOnScreen {
var value: CGFloat {
switch self {
case .readReceipt:
return 16
case .readReceiptSheet:
case .chats, .spaces:
return 32
case .timeline:
return 32
case .home:
case .readReceipt:
return 16
case .readReceiptSheet:
return 32
case .completionSuggestions:
return 32
@@ -127,8 +128,9 @@ enum UserAvatarSizeOnScreen {
}
enum RoomAvatarSizeOnScreen {
case chats
case spaces
case timeline
case home
case messageForwarding
case globalSearch
case roomSelection
@@ -136,14 +138,17 @@ enum RoomAvatarSizeOnScreen {
case notificationSettings
case roomDirectorySearch
case joinRoom
case spaceHeader
case completionSuggestions
var value: CGFloat {
switch self {
case .notificationSettings:
return 30
case .chats, .spaces:
return 52
case .timeline:
return 32
case .notificationSettings:
return 30
case .roomDirectorySearch:
return 32
case .completionSuggestions:
@@ -154,12 +159,12 @@ enum RoomAvatarSizeOnScreen {
return 36
case .roomSelection:
return 36
case .home:
return 52
case .details:
return 96
case .joinRoom:
return 96
case .spaceHeader:
return 64
}
}
}
@@ -132,46 +132,46 @@ struct RoomAvatarImage_Previews: PreviewProvider, TestablePreview {
RoomAvatarImage(avatar: .room(id: "!1:server.com",
name: "Room",
avatarURL: nil),
avatarSize: .room(on: .home),
avatarSize: .room(on: .chats),
mediaProvider: MediaProviderMock(configuration: .init()))
RoomAvatarImage(avatar: .room(id: "!2:server.com",
name: "Room",
avatarURL: .mockMXCAvatar),
avatarSize: .room(on: .home),
avatarSize: .room(on: .chats),
mediaProvider: MediaProviderMock(configuration: .init()))
RoomAvatarImage(avatar: .space(id: "!space:server.com",
name: "Room",
avatarURL: nil),
avatarSize: .room(on: .home),
avatarSize: .room(on: .chats),
mediaProvider: MediaProviderMock(configuration: .init()))
RoomAvatarImage(avatar: .space(id: "!otherspace:server.com",
name: "Room",
avatarURL: .mockMXCAvatar),
avatarSize: .room(on: .home),
avatarSize: .room(on: .chats),
mediaProvider: MediaProviderMock(configuration: .init()))
RoomAvatarImage(avatar: .tombstoned, avatarSize: .room(on: .home), mediaProvider: MediaProviderMock(configuration: .init()))
RoomAvatarImage(avatar: .tombstoned, avatarSize: .room(on: .chats), mediaProvider: MediaProviderMock(configuration: .init()))
}
HStack(spacing: 12) {
RoomAvatarImage(avatar: .heroes([.init(userID: "@user:server.com",
displayName: "User",
avatarURL: nil)]),
avatarSize: .room(on: .home),
avatarSize: .room(on: .chats),
mediaProvider: MediaProviderMock(configuration: .init()))
RoomAvatarImage(avatar: .heroes([.init(userID: "@user:server.com",
displayName: "User",
avatarURL: .mockMXCAvatar)]),
avatarSize: .room(on: .home),
avatarSize: .room(on: .chats),
mediaProvider: MediaProviderMock(configuration: .init()))
RoomAvatarImage(avatar: .heroes([.init(userID: "@alice:server.com", displayName: "Alice", avatarURL: nil),
.init(userID: "@bob:server.net", displayName: "Bob", avatarURL: nil)]),
avatarSize: .room(on: .home),
avatarSize: .room(on: .chats),
mediaProvider: MediaProviderMock(configuration: .init()))
}
}
@@ -37,7 +37,7 @@ struct TombstonedAvatarImage: View {
struct TombstonedAvatarImage_Previews: PreviewProvider, TestablePreview {
static var previews: some View {
TombstonedAvatarImage(avatarSize: .room(on: .home))
TombstonedAvatarImage(avatarSize: .room(on: .chats))
.previewLayout(.sizeThatFits)
}
}
@@ -154,6 +154,7 @@ enum TestablePreviewsDictionary {
"ShimmerOverlay_Previews" : ShimmerOverlay_Previews.self,
"SoftLogoutScreen_Previews" : SoftLogoutScreen_Previews.self,
"SpaceListScreen_Previews" : SpaceListScreen_Previews.self,
"SpaceRoomCell_Previews" : SpaceRoomCell_Previews.self,
"SplashScreen_Previews" : SplashScreen_Previews.self,
"StackedAvatarsView_Previews" : StackedAvatarsView_Previews.self,
"StartChatScreen_Previews" : StartChatScreen_Previews.self,