feat(chat-room) 채팅방 메시지 표시
- bottom 정렬되도록 수정
This commit is contained in:
@@ -106,23 +106,33 @@ struct ChatRoomView: View {
|
||||
.cornerRadius(16)
|
||||
.frame(width: screenSize().width - 48)
|
||||
|
||||
ScrollView(.vertical, showsIndicators: false) {
|
||||
VStack(spacing: 16) {
|
||||
Spacer()
|
||||
|
||||
ForEach(0..<viewModel.messages.count, id: \.self) {
|
||||
let message = viewModel.messages[$0]
|
||||
if message.mine {
|
||||
UserMessageItemView(message: message)
|
||||
} else {
|
||||
AiMessageItemView(
|
||||
message: message,
|
||||
characterName: viewModel.characterName
|
||||
)
|
||||
GeometryReader { geometry in
|
||||
ScrollViewReader { proxy in
|
||||
ScrollView(.vertical, showsIndicators: false) {
|
||||
LazyVStack(spacing: 16) {
|
||||
ForEach(0..<viewModel.messages.count, id: \.self) { index in
|
||||
let message = viewModel.messages[index]
|
||||
if message.mine {
|
||||
UserMessageItemView(message: message)
|
||||
} else {
|
||||
AiMessageItemView(
|
||||
message: message,
|
||||
characterName: viewModel.characterName
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
.padding(.horizontal, 24)
|
||||
.frame(minHeight: geometry.size.height, alignment: .bottom)
|
||||
}
|
||||
.onChange(of: viewModel.messages.count) { _ in
|
||||
if !viewModel.messages.isEmpty {
|
||||
withAnimation(.easeOut(duration: 0.3)) {
|
||||
proxy.scrollTo(viewModel.messages.count - 1, anchor: .bottom)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.padding(.horizontal, 24)
|
||||
}
|
||||
.frame(width: screenSize().width)
|
||||
.frame(maxHeight: .infinity)
|
||||
|
||||
Reference in New Issue
Block a user