Add new threads to the panel as they are discovered (#7688)
This commit is contained in:
parent
afe6021c9a
commit
5973d725e0
2 changed files with 34 additions and 1 deletions
|
@ -25,7 +25,7 @@ import {
|
|||
UNSTABLE_FILTER_RELATION_SENDERS,
|
||||
UNSTABLE_FILTER_RELATION_TYPES,
|
||||
} from 'matrix-js-sdk/src/filter';
|
||||
import { ThreadEvent } from 'matrix-js-sdk/src/models/thread';
|
||||
import { Thread, ThreadEvent } from 'matrix-js-sdk/src/models/thread';
|
||||
|
||||
import BaseCard from "../views/right_panel/BaseCard";
|
||||
import ResizeNotifier from '../../utils/ResizeNotifier';
|
||||
|
@ -231,6 +231,35 @@ const ThreadPanel: React.FC<IProps> = ({ roomId, onClose, permalinkCreator }) =>
|
|||
if (timelineSet) ref.current.refreshTimeline();
|
||||
});
|
||||
|
||||
useEventEmitter(room, ThreadEvent.New, async (thread: Thread) => {
|
||||
if (timelineSet) {
|
||||
const capabilities = await mxClient.getCapabilities();
|
||||
const serverSupportsThreads = capabilities['io.element.thread']?.enabled;
|
||||
|
||||
const discoveredScrollingBack = room.lastThread.rootEvent.localTimestamp < thread.rootEvent.localTimestamp;
|
||||
|
||||
// When the server support threads we're only interested in adding
|
||||
// the newly created threads to the list.
|
||||
// The ones discovered when scrolling back should be discarded as
|
||||
// they will be discovered by the `/messages` filter
|
||||
if (serverSupportsThreads) {
|
||||
if (!discoveredScrollingBack) {
|
||||
timelineSet.addEventToTimeline(
|
||||
thread.rootEvent,
|
||||
timelineSet.getLiveTimeline(),
|
||||
false,
|
||||
);
|
||||
}
|
||||
} else {
|
||||
timelineSet.addEventToTimeline(
|
||||
thread.rootEvent,
|
||||
timelineSet.getLiveTimeline(),
|
||||
!discoveredScrollingBack,
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return (
|
||||
<RoomContext.Provider value={{
|
||||
...roomContext,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue