diff --git a/src/utils/Reply.ts b/src/utils/Reply.ts index 87cec553737..cdc48c804f1 100644 --- a/src/utils/Reply.ts +++ b/src/utils/Reply.ts @@ -152,8 +152,17 @@ export function makeReplyMixIn(ev?: MatrixEvent): IEventRelation { }, }; - if (SettingsStore.getValue("feature_thread") && ev.threadRootId) { - mixin.is_falling_back = false; + if (ev.threadRootId) { + if (SettingsStore.getValue("feature_thread")) { + mixin.is_falling_back = false; + } else { + // Clients that do not offer a threading UI should behave as follows when replying, for best interaction + // with those that do. They should set the m.in_reply_to part as usual, and then add on + // "rel_type": "m.thread" and "event_id": "$thread_root", copying $thread_root from the replied-to event. + const relation = ev.getRelation(); + mixin.rel_type = relation.rel_type; + mixin.event_id = relation.event_id; + } } return mixin;