mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 19:44:05 +00:00
Add SpaceRoomCell & Space…ProxyProtocols and use them on the SpaceListScreen. (#4404)
This commit is contained in:
@@ -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)"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user