mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
hide invite avatars when such flag is on
This affects: - Invited room preview inviter avatar - Invited room preview room avatar - Invited room cell inviter avatar in the room list - Invited room cell room avatar in the room list - Push notification for an invite
This commit is contained in:
@@ -23,6 +23,15 @@ enum JoinRoomScreenMode: Equatable {
|
||||
case knocked
|
||||
case banned(sender: String?, reason: String?)
|
||||
case forbidden
|
||||
|
||||
var isInvite: Bool {
|
||||
switch self {
|
||||
case .invited:
|
||||
true
|
||||
default:
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct JoinRoomScreenRoomDetails {
|
||||
@@ -41,9 +50,15 @@ struct JoinRoomScreenViewState: BindableState {
|
||||
var roomDetails: JoinRoomScreenRoomDetails?
|
||||
|
||||
var mode: JoinRoomScreenMode = .loading
|
||||
|
||||
var hideInviteAvatars = false
|
||||
|
||||
var bindings = JoinRoomScreenViewStateBindings()
|
||||
|
||||
var shouldHideAvatars: Bool {
|
||||
hideInviteAvatars && mode.isInvite
|
||||
}
|
||||
|
||||
var title: String {
|
||||
if isDMInvite, let inviter = roomDetails?.inviter {
|
||||
return inviter.displayName ?? inviter.id
|
||||
@@ -68,9 +83,9 @@ struct JoinRoomScreenViewState: BindableState {
|
||||
|
||||
var avatar: RoomAvatar? {
|
||||
if isDMInvite, let inviter = roomDetails?.inviter {
|
||||
return .room(id: roomID, name: inviter.displayName, avatarURL: inviter.avatarURL)
|
||||
} else if let avatar = roomDetails?.avatar {
|
||||
return avatar
|
||||
return .room(id: roomID, name: inviter.displayName, avatarURL: hideInviteAvatars ? nil : inviter.avatarURL)
|
||||
} else if let roomDetails, let avatar = roomDetails.avatar {
|
||||
return shouldHideAvatars ? .room(id: roomID, name: roomDetails.name, avatarURL: nil) : avatar
|
||||
} else if let name = roomDetails?.name {
|
||||
return .room(id: roomID, name: name, avatarURL: nil)
|
||||
} else {
|
||||
|
||||
@@ -41,6 +41,10 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
|
||||
|
||||
super.init(initialViewState: JoinRoomScreenViewState(roomID: roomID), mediaProvider: mediaProvider)
|
||||
|
||||
appSettings.$hideInviteAvatars
|
||||
.weakAssign(to: \.state.hideInviteAvatars, on: self)
|
||||
.store(in: &cancellables)
|
||||
|
||||
context.$viewState.map(\.mode)
|
||||
.removeDuplicates()
|
||||
.sink { mode in
|
||||
|
||||
@@ -58,7 +58,9 @@ struct JoinRoomScreen: View {
|
||||
private var defaultView: some View {
|
||||
VStack(spacing: 16) {
|
||||
if let inviter = context.viewState.roomDetails?.inviter {
|
||||
RoomInviterLabel(inviter: inviter, mediaProvider: context.mediaProvider)
|
||||
RoomInviterLabel(inviter: inviter,
|
||||
shouldHideAvatar: context.viewState.hideInviteAvatars,
|
||||
mediaProvider: context.mediaProvider)
|
||||
.multilineTextAlignment(.center)
|
||||
.font(.compound.bodyMD)
|
||||
.foregroundStyle(.compound.textSecondary)
|
||||
|
||||
Reference in New Issue
Block a user