Show the local echo in previews (#12451)
* show the local echo in previews * a bit more coverage
This commit is contained in:
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
import { Room, RelationType, MatrixEvent, Thread, M_POLL_START } from "matrix-js-sdk/src/matrix";
|
||||
import { Room, RelationType, MatrixEvent, Thread, M_POLL_START, RoomEvent } from "matrix-js-sdk/src/matrix";
|
||||
import { isNullOrUndefined } from "matrix-js-sdk/src/utils";
|
||||
|
||||
import { ActionPayload } from "../../dispatcher/payloads";
|
||||
@@ -186,7 +186,7 @@ export class MessagePreviewStore extends AsyncStoreWithClient<IState> {
|
||||
}
|
||||
|
||||
private async generatePreview(room: Room, tagId?: TagID): Promise<void> {
|
||||
const events = [...room.getLiveTimeline().getEvents()];
|
||||
const events = [...room.getLiveTimeline().getEvents(), ...room.getPendingEvents()];
|
||||
|
||||
// add last reply from each thread
|
||||
room.getThreads().forEach((thread: Thread): void => {
|
||||
@@ -279,4 +279,19 @@ export class MessagePreviewStore extends AsyncStoreWithClient<IState> {
|
||||
await this.generatePreview(room, TAG_ANY);
|
||||
}
|
||||
}
|
||||
|
||||
protected async onReady(): Promise<void> {
|
||||
if (!this.matrixClient) return;
|
||||
this.matrixClient.on(RoomEvent.LocalEchoUpdated, this.onLocalEchoUpdated);
|
||||
}
|
||||
|
||||
protected async onNotReady(): Promise<void> {
|
||||
if (!this.matrixClient) return;
|
||||
this.matrixClient.off(RoomEvent.LocalEchoUpdated, this.onLocalEchoUpdated);
|
||||
}
|
||||
|
||||
protected onLocalEchoUpdated = async (ev: MatrixEvent, room: Room): Promise<void> => {
|
||||
if (!this.previews.has(room.roomId)) return;
|
||||
await this.generatePreview(room, TAG_ANY);
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user