Fixes #388 - Prevent long room names from breaking the room navigation bar layout (#453)

This commit is contained in:
Stefan Ceriu
2023-01-18 09:24:21 +02:00
committed by GitHub
parent f7ddaacb64
commit b835b55394
5 changed files with 25 additions and 13 deletions
@@ -31,7 +31,7 @@ enum RoomScreenComposerMode: Equatable {
}
enum RoomScreenViewAction {
case headerTapped
case displayRoomDetails
case displayEmojiPicker(itemId: String)
case paginateBackwards
case itemAppeared(id: String)
@@ -94,7 +94,7 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
// swiftlint:disable:next cyclomatic_complexity
override func process(viewAction: RoomScreenViewAction) async {
switch viewAction {
case .headerTapped:
case .displayRoomDetails:
callback?(.displayRoomDetails)
case .paginateBackwards:
await paginateBackwards()
@@ -24,16 +24,16 @@ struct RoomHeaderView: View {
@ObservedObject var context: RoomScreenViewModel.Context
var body: some View {
Button {
context.send(viewAction: .headerTapped)
} label: {
HStack(spacing: 8) {
roomAvatar
.accessibilityHidden(true)
Text(context.viewState.roomTitle)
.font(.element.headline)
.accessibilityIdentifier("roomNameLabel")
}
HStack(spacing: 8) {
roomAvatar
.accessibilityHidden(true)
Text(context.viewState.roomTitle)
.font(.element.headline)
.accessibilityIdentifier("roomNameLabel")
}
// Using a button stops is from getting truncated in the navigation bar
.onTapGesture {
context.send(viewAction: .displayRoomDetails)
}
}
@@ -75,10 +75,21 @@ struct RoomScreen: View {
}
}
@ToolbarContentBuilder
var toolbar: some ToolbarContent {
ToolbarItem(placement: .navigationBarLeading) {
// .principal + .primaryAction works better than .navigation leading + trailing
// as the latter disables interaction in the action button for rooms with long names
ToolbarItem(placement: .principal) {
RoomHeaderView(context: context)
}
ToolbarItem(id: "RoomDetailsAction", placement: .secondaryAction, showsByDefault: false) {
Button {
context.send(viewAction: .displayRoomDetails)
} label: {
Label("Room Details", systemImage: "info.circle")
}
}
}
private func sendMessage() {
+1
View File
@@ -0,0 +1 @@
Prevent long room names from breaking the room navigation bar layout