Reply to a message, and take the reader to what it answers

Featurekamo-internal
Ya
30 Agosti 2026, 23:23 UTC
Mwandishi
Kamo
Ahadi ya
085ce14

MediaService has carried a reply's parent and the quote to draw for it since "send the quote with a reply, not just the pointer"; this is the half that shows it. Three windows draw conversations — member chat, social, and support tickets — and all three get the same reply, because a member who learns it in one and does not find it in the next reads that as the feature being broken rather than absent. One ReplyQuote component in two placements: the strip above the composer while the reply is being written, and the block inside the bubble once it has been sent. They are the same object at two moments, and splitting them is how the two drift — you pick a message, read one rendering of it, send, and are shown another. Its colours all derive from currentColor so the one component sits in a primary own-message bubble, a grey received bubble and on the composer surface without being told which. The quote is resolved through chat-core's resolveReplyQuote, which prefers the loaded parent over the server's stored preview. That is what makes a correction to a message reach every quote pointing at it, and an unsent one say so, rather than freezing whatever the parent said at the moment it was quoted. Resolved once per history change into a map rather than per bubble per render: MessageBubble is memoized on shallow props, so a quote rebuilt inline would re-render every reply in the conversation on every keystroke. Clicking a quote scrolls to the original and flashes it (app/lib/chat/messageJump.ts). The flash is the point — a thread of similar-looking bubbles sliding does not tell the reader which message they were taken to. It is DOM-level rather than a highlighted-id in state, which would re-render the whole list twice for an effect that touches one element for a second, and it honours prefers-reduced-motion. A reply whose parent is older than the loaded page still draws its quote, from the server's preview; it simply is not a link. The target is owned by the window rather than the composer, because two things need it — the strip and the parentId on the send — and one of them is not the composer. It is captured when the send starts, the strip's dismiss is disabled for the duration, and unsending the message being answered drops the reply rather than threading it under something the sender has taken back.

Mabadiliko yote

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei