From f13e371d5ad946ee74704d3474e84a56cc9b09e7 Mon Sep 17 00:00:00 2001 From: senseiGai Date: Sat, 18 Apr 2026 13:23:05 +0500 Subject: [PATCH] =?UTF-8?q?WIP:=20date=20pills=20=D0=BD=D0=B0=D1=87=D0=B0?= =?UTF-8?q?=D0=BB=D0=BE=20+=20memory:=20no=20MVP=20policy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RosettaMessageListController.swift | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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