feat(chat): 대화 날짜 구분선을 연결한다

This commit is contained in:
Yu Sung
2026-10-19 10:12:57 +09:00
parent e765c3c75c
commit 7a6d12e871
5 changed files with 185 additions and 8 deletions
@@ -3,6 +3,8 @@ import UIKit
import Combine
struct UserCreatorChatRoomView: View {
@Environment(\.locale) private var locale
@Environment(\.timeZone) private var timeZone
@StateObject private var viewModel = UserCreatorChatRoomViewModel()
@State private var messageText = ""
@@ -68,7 +70,12 @@ struct UserCreatorChatRoomView: View {
}
private var messageListView: some View {
GeometryReader { geometry in
let textMessages = self.textMessages
var calendar = Calendar.current
calendar.timeZone = timeZone
let rows = UserCreatorChatDatePresentation.rows(from: textMessages, calendar: calendar, timeZone: timeZone)
return GeometryReader { geometry in
ScrollViewReader { proxy in
ScrollView(.vertical, showsIndicators: false) {
LazyVStack(spacing: SodaSpacing.s16) {
@@ -79,14 +86,26 @@ struct UserCreatorChatRoomView: View {
.padding(.vertical, SodaSpacing.s12)
}
ForEach(textMessages) { message in
UserCreatorChatTextMessageItemView(message: message)
.id(message.id)
.onAppear {
if message.id == textMessages.first?.id {
viewModel.loadMore()
}
ForEach(rows) { row in
let message = row.message
VStack(spacing: SodaSpacing.s16) {
if let date = row.separatorDate {
UserCreatorChatDateSeparatorView(title: UserCreatorChatDatePresentation.title(
for: date,
locale: locale,
calendar: calendar,
timeZone: timeZone
))
}
UserCreatorChatTextMessageItemView(message: message)
.id(message.id)
.onAppear {
if message.id == textMessages.first?.id {
viewModel.loadMore()
}
}
}
}
}
.padding(.horizontal, SodaSpacing.s24)