mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 01:20:12 +00:00
Space Settings - Navigations (#4691)
* Implementation for all navigations inside the space settings aside the left space action * pr suggestions
This commit is contained in:
@@ -23,6 +23,7 @@ struct RoomDetailsEditScreenViewStateBindings {
|
||||
|
||||
struct RoomDetailsEditScreenViewState: BindableState {
|
||||
let roomID: String
|
||||
let isSpace: Bool
|
||||
let initialAvatarURL: URL?
|
||||
let initialName: String
|
||||
let initialTopic: String
|
||||
|
||||
@@ -34,8 +34,10 @@ class RoomDetailsEditScreenViewModel: RoomDetailsEditScreenViewModelType, RoomDe
|
||||
let roomAvatar = roomProxy.infoPublisher.value.avatarURL
|
||||
let roomName = roomProxy.infoPublisher.value.displayName
|
||||
let roomTopic = roomProxy.infoPublisher.value.topic
|
||||
let isSpace = roomProxy.infoPublisher.value.isSpace
|
||||
|
||||
super.init(initialViewState: RoomDetailsEditScreenViewState(roomID: roomProxy.id,
|
||||
isSpace: isSpace,
|
||||
initialAvatarURL: roomAvatar,
|
||||
initialName: roomName ?? "",
|
||||
initialTopic: roomTopic ?? "",
|
||||
|
||||
@@ -59,6 +59,7 @@ struct RoomDetailsEditScreen: View {
|
||||
url: context.viewState.avatarURL,
|
||||
name: context.viewState.initialName,
|
||||
contentID: context.viewState.roomID,
|
||||
isSpace: context.viewState.isSpace,
|
||||
avatarSize: .user(on: .memberDetails),
|
||||
mediaProvider: context.mediaProvider)
|
||||
.accessibilityLabel(L10n.a11yEditAvatar)
|
||||
|
||||
+8
-3
@@ -142,9 +142,14 @@ struct SecurityAndPrivacyScreen: View {
|
||||
private var addAddressSection: some View {
|
||||
Section {
|
||||
ListRow(kind: .custom {
|
||||
Button(L10n.screenSecurityAndPrivacyAddRoomAddressAction) { context.send(viewAction: .editAddress) }
|
||||
.foregroundColor(.compound.textActionAccent)
|
||||
.padding(ListRowPadding.insets)
|
||||
Button {
|
||||
context.send(viewAction: .editAddress)
|
||||
} label: {
|
||||
Text(L10n.screenSecurityAndPrivacyAddRoomAddressAction)
|
||||
.foregroundColor(.compound.textActionAccent)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
}
|
||||
.padding(ListRowPadding.insets)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
+1
@@ -55,6 +55,7 @@ struct UserDetailsEditScreen: View {
|
||||
url: context.viewState.selectedAvatarURL,
|
||||
name: context.viewState.currentDisplayName,
|
||||
contentID: context.viewState.userID,
|
||||
isSpace: false,
|
||||
avatarSize: .user(on: .editUserDetails),
|
||||
mediaProvider: context.mediaProvider)
|
||||
.overlay(alignment: .bottomTrailing) {
|
||||
|
||||
+15
-6
@@ -18,7 +18,12 @@ struct SpaceSettingsScreenCoordinatorParameters {
|
||||
let appSettings: AppSettings
|
||||
}
|
||||
|
||||
enum SpaceSettingsScreenCoordinatorAction { }
|
||||
enum SpaceSettingsScreenCoordinatorAction {
|
||||
case presentEditDetailsScreen
|
||||
case presentSecurityAndPrivacyScreen
|
||||
case presentMembersListScreen
|
||||
case presentRolesAndPermissionsScreen
|
||||
}
|
||||
|
||||
final class SpaceSettingsScreenCoordinator: CoordinatorProtocol {
|
||||
private let viewModel: RoomDetailsScreenViewModelProtocol
|
||||
@@ -46,15 +51,19 @@ final class SpaceSettingsScreenCoordinator: CoordinatorProtocol {
|
||||
guard let self else { return }
|
||||
|
||||
switch action {
|
||||
case .requestNotificationSettingsPresentation, .requestRecipientDetailsPresentation, .requestInvitePeoplePresentation, .leftRoom, .requestPollsHistoryPresentation, .requestRolesAndPermissionsPresentation, .startCall, .displayPinnedEventsTimeline, .displayMediaEventsTimeline, .displayKnockingRequests, .displayReportRoom:
|
||||
case .requestNotificationSettingsPresentation, .requestRecipientDetailsPresentation, .requestInvitePeoplePresentation, .requestPollsHistoryPresentation,
|
||||
.startCall, .displayPinnedEventsTimeline, .displayMediaEventsTimeline, .displayKnockingRequests,
|
||||
.displayReportRoom, .transferOwnership:
|
||||
break // Not handled in this context
|
||||
case .requestEditDetailsPresentation:
|
||||
break // TODO:
|
||||
actionsSubject.send(.presentEditDetailsScreen)
|
||||
case .displaySecurityAndPrivacy:
|
||||
break // TODO:
|
||||
case .transferOwnership:
|
||||
break // TODO:
|
||||
actionsSubject.send(.presentSecurityAndPrivacyScreen)
|
||||
case .requestMemberDetailsPresentation:
|
||||
actionsSubject.send(.presentMembersListScreen)
|
||||
case .requestRolesAndPermissionsPresentation:
|
||||
actionsSubject.send(.presentRolesAndPermissionsScreen)
|
||||
case .leftRoom:
|
||||
break // TODO:
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user