// // LiveRoomInputChatView.swift // SodaLive // // Created by klaus on 2024/01/17. // import SwiftUI struct LiveRoomInputChatView: View { @State private var chatMessage = "" let isInputDisabled: Bool let sendMessage: (String) -> Bool let onDisabledInputTap: () -> Void var body: some View { HStack(spacing: 6.7) { ChatTextFieldView(text: $chatMessage, placeholder: "채팅을 입력하세요", isEnabled: !isInputDisabled) { if sendMessage(chatMessage) { chatMessage = "" } } .allowsHitTesting(!isInputDisabled) .overlay { if isInputDisabled { Color.clear .contentShape(Rectangle()) .onTapGesture { onDisabledInputTap() } } } .padding(.vertical, 18.3) .fixedSize(horizontal: false, vertical: true) .frame(maxWidth: .infinity) Image("btn_message_send") .resizable() .frame(width: 35, height: 35) .opacity(isInputDisabled ? 0.5 : 1) .onTapGesture { if isInputDisabled { onDisabledInputTap() return } if sendMessage(chatMessage) { chatMessage = "" } } } .padding(.leading, 13.3) .padding(.trailing, 6.7) .background(Color.gray22) .cornerRadius(5.3) .overlay( RoundedRectangle(cornerRadius: 5.3) .strokeBorder(lineWidth: 1) .foregroundColor(.gray77) ) .onChange(of: isInputDisabled) { isDisabled in if isDisabled { hideKeyboard() chatMessage = "" } } .padding(13.3) } } struct LiveRoomInputChatView_Previews: PreviewProvider { static var previews: some View { LiveRoomInputChatView(isInputDisabled: false, sendMessage: { _ in return true }, onDisabledInputTap: {}) } }