mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 15:26:40 +00:00
Room's details edit screen (#956)
* Add RoomDetailsEditScreen template * Add navigation to the edit screen * Delete template code * Start RoomDetailsEditScreen UI * Manage power levels in RoomDetailsScreen * Start RoomDetailsEditScreenViewModel logic * Inject initial room state * Add cancel action * Expose set name/topic APIs in RoomProxy * Refine RoomDetailsEditScreen UI * Add save logic * Add localisations * Fix avatar image * Update localisations * Add “Add topic” button * Add feature flag * Add dismiss on save logic * Reduce throttling * Improve form logic * Fix UT build errors * Add media sheet * Add media preprocessing * Add LoadableEditableAvatarImage * Add condition on delete image * Add avatar save button logic * Add remove avatar logic * Cleanup * Fix edit bug in DM * Add upload avatar * Add focus * Add RoomDetailsViewModel UTs * Fix button style * Add UTs * Add empty topic ui test * Fix iPad sheet presentation * Revert topic appearance in room’s details * Address PR comments * Add UI tests
This commit is contained in:
@@ -23,11 +23,12 @@ struct RoomMemberProxyMockConfiguration {
|
||||
var avatarURL: URL?
|
||||
var membership: MembershipState
|
||||
var isNameAmbiguous = false
|
||||
var powerLevel: Int
|
||||
var normalizedPowerLevel: Int
|
||||
var powerLevel = 50
|
||||
var normalizedPowerLevel = 50
|
||||
var isAccountOwner = false
|
||||
var isIgnored = false
|
||||
var canInviteUsers = false
|
||||
var canSendStateEvent: (StateEventType) -> Bool = { _ in true }
|
||||
}
|
||||
|
||||
extension RoomMemberProxyMock {
|
||||
@@ -43,6 +44,7 @@ extension RoomMemberProxyMock {
|
||||
isAccountOwner = configuration.isAccountOwner
|
||||
isIgnored = configuration.isIgnored
|
||||
canInviteUsers = configuration.canInviteUsers
|
||||
canSendStateEventTypeClosure = configuration.canSendStateEvent
|
||||
}
|
||||
|
||||
// Mocks
|
||||
@@ -50,45 +52,35 @@ extension RoomMemberProxyMock {
|
||||
RoomMemberProxyMock(with: .init(userID: "@alice:matrix.org",
|
||||
displayName: "Alice",
|
||||
avatarURL: nil,
|
||||
membership: .join,
|
||||
powerLevel: 50,
|
||||
normalizedPowerLevel: 50))
|
||||
membership: .join))
|
||||
}
|
||||
|
||||
static var mockInvitedAlice: RoomMemberProxyMock {
|
||||
RoomMemberProxyMock(with: .init(userID: "@alice:matrix.org",
|
||||
displayName: "Alice",
|
||||
avatarURL: nil,
|
||||
membership: .invite,
|
||||
powerLevel: 50,
|
||||
normalizedPowerLevel: 50))
|
||||
membership: .invite))
|
||||
}
|
||||
|
||||
static var mockBob: RoomMemberProxyMock {
|
||||
RoomMemberProxyMock(with: .init(userID: "@bob:matrix.org",
|
||||
displayName: "Bob",
|
||||
avatarURL: nil,
|
||||
membership: .join,
|
||||
powerLevel: 50,
|
||||
normalizedPowerLevel: 50))
|
||||
membership: .join))
|
||||
}
|
||||
|
||||
static var mockCharlie: RoomMemberProxyMock {
|
||||
RoomMemberProxyMock(with: .init(userID: "@charlie:matrix.org",
|
||||
displayName: "Charlie",
|
||||
avatarURL: nil,
|
||||
membership: .join,
|
||||
powerLevel: 50,
|
||||
normalizedPowerLevel: 50))
|
||||
membership: .join))
|
||||
}
|
||||
|
||||
static var mockDan: RoomMemberProxyMock {
|
||||
RoomMemberProxyMock(with: .init(userID: "@dan:matrix.org",
|
||||
displayName: "Dan",
|
||||
avatarURL: URL.picturesDirectory,
|
||||
membership: .join,
|
||||
powerLevel: 50,
|
||||
normalizedPowerLevel: 50))
|
||||
membership: .join))
|
||||
}
|
||||
|
||||
static var mockMe: RoomMemberProxyMock {
|
||||
@@ -96,8 +88,6 @@ extension RoomMemberProxyMock {
|
||||
displayName: "Me",
|
||||
avatarURL: URL.picturesDirectory,
|
||||
membership: .join,
|
||||
powerLevel: 50,
|
||||
normalizedPowerLevel: 50,
|
||||
isAccountOwner: true,
|
||||
canInviteUsers: true))
|
||||
}
|
||||
@@ -107,8 +97,14 @@ extension RoomMemberProxyMock {
|
||||
displayName: "Ignored",
|
||||
avatarURL: nil,
|
||||
membership: .join,
|
||||
powerLevel: 50,
|
||||
normalizedPowerLevel: 50,
|
||||
isIgnored: true))
|
||||
}
|
||||
|
||||
static func mockOwner(allowedStateEvents: [StateEventType]) -> RoomMemberProxyMock {
|
||||
RoomMemberProxyMock(with: .init(userID: "@foo:some.org",
|
||||
displayName: "User owner",
|
||||
membership: .join,
|
||||
isAccountOwner: true,
|
||||
canSendStateEvent: { allowedStateEvents.contains($0) }))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user