mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-30 13:16:58 +02:00
suggest PR changes
This commit is contained in:
@@ -32,9 +32,9 @@ enum MockComposerScreenState: MockScreenState, CaseIterable {
|
||||
let bindings = ComposerBindings(focused: false)
|
||||
|
||||
switch self {
|
||||
case .send: viewModel = ComposerViewModel(initialViewState: ComposerViewState(textFormattingEnabled: true, bindings: bindings))
|
||||
case .edit: viewModel = ComposerViewModel(initialViewState: ComposerViewState(sendMode: .edit, textFormattingEnabled: true, bindings: bindings))
|
||||
case .reply: viewModel = ComposerViewModel(initialViewState: ComposerViewState(eventSenderDisplayName: "TestUser", sendMode: .reply, textFormattingEnabled: true, bindings: bindings))
|
||||
case .send: viewModel = ComposerViewModel(initialViewState: ComposerViewState(textFormattingEnabled: true, isLandscapePhone: false, bindings: bindings))
|
||||
case .edit: viewModel = ComposerViewModel(initialViewState: ComposerViewState(sendMode: .edit, textFormattingEnabled: true, isLandscapePhone: false, bindings: bindings))
|
||||
case .reply: viewModel = ComposerViewModel(initialViewState: ComposerViewState(eventSenderDisplayName: "TestUser", sendMode: .reply, textFormattingEnabled: true, isLandscapePhone: false, bindings: bindings))
|
||||
}
|
||||
|
||||
let wysiwygviewModel = WysiwygComposerViewModel(minHeight: 20, maxCompressedHeight: 360)
|
||||
|
||||
@@ -20,6 +20,7 @@ struct ComposerViewState: BindableState {
|
||||
var eventSenderDisplayName: String?
|
||||
var sendMode: ComposerSendMode = .send
|
||||
var textFormattingEnabled: Bool
|
||||
var isLandscapePhone: Bool
|
||||
var placeholder: String?
|
||||
|
||||
var bindings: ComposerBindings
|
||||
@@ -47,6 +48,10 @@ extension ComposerViewState {
|
||||
default: return nil
|
||||
}
|
||||
}
|
||||
|
||||
var isForcedMinimised: Bool {
|
||||
isLandscapePhone || !textFormattingEnabled
|
||||
}
|
||||
}
|
||||
|
||||
struct ComposerBindings {
|
||||
|
||||
@@ -31,12 +31,6 @@ struct Composer: View {
|
||||
@Environment(\.theme) private var theme: ThemeSwiftUI
|
||||
|
||||
@State private var isActionButtonShowing = false
|
||||
@State private var isToggleButtonHidden = false
|
||||
|
||||
private var isLandscapeIphone: Bool {
|
||||
let device = UIDevice.current
|
||||
return device.userInterfaceIdiom == .phone && device.orientation.isLandscape
|
||||
}
|
||||
|
||||
private let horizontalPadding: CGFloat = 12
|
||||
private let borderHeight: CGFloat = 40
|
||||
@@ -122,7 +116,7 @@ struct Composer: View {
|
||||
wysiwygViewModel.setup()
|
||||
}
|
||||
}
|
||||
if viewModel.viewState.textFormattingEnabled {
|
||||
if !viewModel.viewState.isForcedMinimised {
|
||||
Button {
|
||||
wysiwygViewModel.maximised.toggle()
|
||||
} label: {
|
||||
@@ -132,7 +126,6 @@ struct Composer: View {
|
||||
.frame(width: 16, height: 16)
|
||||
}
|
||||
.accessibilityIdentifier(toggleButtonAcccessibilityIdentifier)
|
||||
.isHidden(isToggleButtonHidden)
|
||||
.padding(.leading, 12)
|
||||
.padding(.trailing, 4)
|
||||
}
|
||||
@@ -204,7 +197,6 @@ struct Composer: View {
|
||||
self.resizeAnimationDuration = resizeAnimationDuration
|
||||
self.sendMessageAction = sendMessageAction
|
||||
self.showSendMediaActions = showSendMediaActions
|
||||
self._isToggleButtonHidden = State(initialValue: isLandscapeIphone)
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
@@ -238,11 +230,10 @@ struct Composer: View {
|
||||
}
|
||||
.padding(.horizontal, horizontalPadding)
|
||||
.padding(.bottom, 4)
|
||||
.onReceive(NotificationCenter.default.publisher(for: UIDevice.orientationDidChangeNotification)) { _ in
|
||||
if wysiwygViewModel.maximised, isLandscapeIphone {
|
||||
.onChange(of: viewModel.viewState.isForcedMinimised) { newValue in
|
||||
if wysiwygViewModel.maximised && newValue {
|
||||
wysiwygViewModel.maximised = false
|
||||
}
|
||||
isToggleButtonHidden = isLandscapeIphone
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,6 +63,15 @@ final class ComposerViewModel: ComposerViewModelType, ComposerViewModelProtocol
|
||||
}
|
||||
}
|
||||
|
||||
var isLandscapePhone: Bool {
|
||||
get {
|
||||
state.isLandscapePhone
|
||||
}
|
||||
set {
|
||||
state.isLandscapePhone = newValue
|
||||
}
|
||||
}
|
||||
|
||||
var isFocused: Bool {
|
||||
state.bindings.focused
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ protocol ComposerViewModelProtocol {
|
||||
var eventSenderDisplayName: String? { get set }
|
||||
var placeholder: String? { get set }
|
||||
var isFocused: Bool { get }
|
||||
var isLandscapePhone: Bool { get set }
|
||||
|
||||
func dismissKeyboard()
|
||||
func showKeyboard()
|
||||
|
||||
Reference in New Issue
Block a user