AcaMate_iOS/AcaMate/1. View/12. Main/123. Chatting/ChattingRoomView.swift

78 lines
2.3 KiB
Swift

//
// ChattingRoomView.swift
// AcaMate
//
// Created by TAnine on 2/17/25.
//
import SwiftUI
struct ChattingRoomView: View {
@EnvironmentObject var appVM: AppViewModel
@StateObject private var topVM = TopViewModel()
// @StateObject private var chatVM = ChatViewModel()
@StateObject private var btnVM = ButtonViewModel()
@State var sendBtnID = UUID()
@State var addSomeBtnID = UUID()
@State var callCameraBtnID = UUID()
@State var addPhotoBtnID = UUID()
@State private var scrollOffset: CGPoint = .zero
@StateObject private var socketManager = WebSocketManager()
@State private var message = ""
let roomID: String
var body: some View {
VStack(alignment: .center, spacing: 0) {
TopView(topVM: topVM)
Text("Hello, World! \(roomID)")
OffsetObservableScrollView(showsIndicators: false, scrollOffset: $scrollOffset) { proxy in
}.frame(maxWidth: .infinity, maxHeight: .infinity)
TextField("SEND MESSAGE", text: $message)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
HStack(spacing: 10) {
Button {
socketManager.connect()
} label: {
Text("CONNECT")
}
Button {
socketManager.sendMessage(message)
message = ""
} label: {
Text("SEND")
}
Button {
socketManager.disconnect()
} label: {
Text("DISCONNECT")
}
}
List(socketManager.receivedMessage, id: \.self) { msg in
Text(msg)
.foregroundStyle(Color(.Other.cell))
}
.fullDrawView(Color(.Other.cell))
}
.onAppear {
topVM.titleName = "클래스 명"
topVM.setLeftBtn(Image(.Icon.back), size: CGPoint(x:40, y:40)) {
appVM.naviState.set(act: .POP, path: .ChatRoom(id: roomID))
}
topVM.setRightBtn(Image(.Icon.setting), size: CGPoint(x: 40, y: 40)) {
// MARK: TO-DO
//
}
}
}
}