diff --git a/Rosetta/Features/Chats/ChatDetail/ListView/RosettaMessageListController.swift b/Rosetta/Features/Chats/ChatDetail/ListView/RosettaMessageListController.swift index 57f13f1..759141a 100644 --- a/Rosetta/Features/Chats/ChatDetail/ListView/RosettaMessageListController.swift +++ b/Rosetta/Features/Chats/ChatDetail/ListView/RosettaMessageListController.swift @@ -56,6 +56,11 @@ final class RosettaMessageListController: UIViewController { private let listView = RosettaListView(frame: .zero) + /// Floating date pill overlay (Telegram-style sticky date headers). + private let datePillOverlay = UIView() + private var datePillPool: [(container: UIView, label: UILabel)] = [] + var topStickyOffset: CGFloat = 0 + // MARK: - State private var messages: [ChatMessage] = [] @@ -99,7 +104,20 @@ final class RosettaMessageListController: UIViewController { } } listView.onScroll = { [weak self] _, _ in - // TODO: scroll-to-bottom button visibility + self?.updateFloatingDatePills() + } + + // Date pill overlay + datePillOverlay.frame = view.bounds + datePillOverlay.autoresizingMask = [.flexibleWidth, .flexibleHeight] + datePillOverlay.isUserInteractionEnabled = false + view.addSubview(datePillOverlay) + + // Pre-create date pill pool (reuse like NativeMessageList) + for _ in 0..<5 { + let pill = makeDatePill() + datePillOverlay.addSubview(pill.container) + datePillPool.append(pill) } // Keyboard tracking