mirror of
https://github.com/TelegramMessenger/Telegram-iOS.git
synced 2026-07-06 03:33:41 +02:00
Delay outgoing messages while the peer in the same (peerId, threadId) chat is live-typing an incoming message, gated via a new per-account Postbox `.allTypingDrafts` view feeding a synchronous Set membership check inside PendingMessageManager. Postbox: - Add `AllTypingDraftsView` tracking `Set<PeerAndThreadId>` of active typing drafts; expose via `PostboxViewKey.allTypingDrafts`. - Disambiguate `PostboxViewKey` hash arms for `.typingDrafts` (constant prefix 23) and `.contacts` (16 → 24) to avoid runtime collisions with peerId-only arms and `.combinedReadState`. Hash values are runtime-only, so this is safe. PendingMessageManager: - Add `.waitingForSendGate(groupId:content:)` parking state for single messages and albums whose upload finished but are gated on a typing-draft-clearing event; update `groupId` accessor and `dataForPendingMessageGroup` so partially-parked albums drain on gate open. - Add `.waitingForForwardSendGate` parking state for forwards (no associated values) so drain section (1) routes single non-grouped messages via `commitSendingSingleMessage` and section (3) routes forwards via `sendGroupMessagesContent`, avoiding the double-dispatch that occurred when forwards reused `.waitingForSendGate`. - Subscribe to `.allTypingDrafts`; wire the gate at single-message, album, and forward send paths and at drain. - Cleanup parked forwards on pending-message removal; snapshot Dictionary keys before iterating to avoid mutation during iteration. Specs and plan documents are included under `docs/superpowers/`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| 2026-04-16-postbox-to-telegramengine-refactor-wave-1.md | ||
| 2026-04-17-listview-pin-to-edge.md | ||
| 2026-04-17-mediaresource-to-enginemediaresource-wave-2.md | ||
| 2026-04-18-postbox-to-telegramengine-wave-3.md | ||
| 2026-04-18-postbox-to-telegramengine-wave-4.md | ||
| 2026-04-18-postbox-to-telegramengine-wave-5.md | ||
| 2026-04-19-postbox-to-telegramengine-wave-6.md | ||
| 2026-04-20-decrypt-match-python-port.md | ||
| 2026-04-20-postbox-to-telegramengine-wave-7.md | ||
| 2026-04-20-postbox-to-telegramengine-wave-8.md | ||
| 2026-04-20-postbox-to-telegramengine-wave-9.md | ||
| 2026-04-20-postbox-to-telegramengine-wave-10.md | ||
| 2026-04-21-swifttl-layered-schema-generation.md | ||
| 2026-04-21-textstyleeditscreen-caret-tracking.md | ||
| 2026-04-24-contactlistpeer-engine-peer-migration.md | ||
| 2026-04-24-foundpeer-engine-peer-migration.md | ||
| 2026-04-24-makeChatQrCodeScreen-recentActions-engine-peer-migration.md | ||
| 2026-04-24-makePeerInfoController-engine-peer-migration.md | ||
| 2026-04-24-peerinfoscreen-helpers-engine-peer-migration.md | ||
| 2026-04-24-peerinfoscreendata-peer-engine-peer-migration.md | ||
| 2026-04-24-peertokentitle-engine-peer-migration.md | ||
| 2026-04-24-rcp-peers-engine-migration.md | ||
| 2026-04-24-renderedchannelparticipant-peer-engine-peer-migration.md | ||
| 2026-04-24-sendaspeer-engine-peer-migration.md | ||
| 2026-04-25-clearpeerhistory-openclearhistory-engine-peer.md | ||
| 2026-04-25-peerinfo-enclosingpeer-engine-peer.md | ||
| 2026-04-25-peerinfoscreendata-linked-peers-engine-peer.md | ||
| 2026-04-25-peerinfoscreendata-savedmessagespeer-engine-peer.md | ||
| 2026-04-25-phn-peer-stored-field-engine-peer.md | ||
| 2026-04-26-postbox-wave-103-chat-recent-actions-controller-node.md | ||
| 2026-04-26-postbox-wave-103-retry-account-manager-store-resource-data-drain.md | ||
| 2026-04-26-postbox-wave-104-account-manager-resource-data-drain-3-sites.md | ||
| 2026-04-26-postbox-wave-105-device-contact-info-subject-engine-peer.md | ||
| 2026-04-26-postbox-wave-106-import-drop-sweep.md | ||
| 2026-04-26-postbox-wave-106-pivot-engine-data-incremental.md | ||
| 2026-04-30-typing-draft-send-delay.md | ||