mirror of
https://github.com/element-hq/element-web
synced 2024-11-24 02:05:45 +03:00
Merge pull request #3406 from matrix-org/t3chguy/reply_to_search_results
Fix replying from search results for this and all rooms
This commit is contained in:
commit
81ea230a35
3 changed files with 30 additions and 7 deletions
|
@ -583,7 +583,7 @@ module.exports = createReactClass({
|
|||
payload.data.description || payload.data.name);
|
||||
break;
|
||||
case 'picture_snapshot':
|
||||
return ContentMessages.sharedInstance().sendContentListToRoom(
|
||||
ContentMessages.sharedInstance().sendContentListToRoom(
|
||||
[payload.file], this.state.room.roomId, MatrixClientPeg.get(),
|
||||
);
|
||||
break;
|
||||
|
@ -624,6 +624,11 @@ module.exports = createReactClass({
|
|||
showApps: payload.show,
|
||||
});
|
||||
break;
|
||||
case 'reply_to_event':
|
||||
if (this.state.searchResults && payload.event.getRoomId() === this.state.roomId && !this.unmounted) {
|
||||
this.onCancelSearchClick();
|
||||
}
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -37,18 +37,19 @@ export default class ReplyPreview extends React.Component {
|
|||
|
||||
constructor(props, context) {
|
||||
super(props, context);
|
||||
this.unmounted = false;
|
||||
|
||||
this.state = {
|
||||
event: null,
|
||||
event: RoomViewStore.getQuotingEvent(),
|
||||
};
|
||||
|
||||
this._onRoomViewStoreUpdate = this._onRoomViewStoreUpdate.bind(this);
|
||||
|
||||
this._roomStoreToken = RoomViewStore.addListener(this._onRoomViewStoreUpdate);
|
||||
this._onRoomViewStoreUpdate();
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
this.unmounted = true;
|
||||
|
||||
// Remove RoomStore listener
|
||||
if (this._roomStoreToken) {
|
||||
this._roomStoreToken.remove();
|
||||
|
@ -56,6 +57,8 @@ export default class ReplyPreview extends React.Component {
|
|||
}
|
||||
|
||||
_onRoomViewStoreUpdate() {
|
||||
if (this.unmounted) return;
|
||||
|
||||
const event = RoomViewStore.getQuotingEvent();
|
||||
if (this.state.event !== event) {
|
||||
this.setState({ event });
|
||||
|
|
|
@ -113,9 +113,19 @@ class RoomViewStore extends Store {
|
|||
});
|
||||
break;
|
||||
case 'reply_to_event':
|
||||
this._setState({
|
||||
replyingToEvent: payload.event,
|
||||
});
|
||||
// If currently viewed room does not match the room in which we wish to reply then change rooms
|
||||
// this can happen when performing a search across all rooms
|
||||
if (payload.event && payload.event.getRoomId() !== this._state.roomId) {
|
||||
dis.dispatch({
|
||||
action: 'view_room',
|
||||
room_id: payload.event.getRoomId(),
|
||||
replyingToEvent: payload.event,
|
||||
});
|
||||
} else {
|
||||
this._setState({
|
||||
replyingToEvent: payload.event,
|
||||
});
|
||||
}
|
||||
break;
|
||||
case 'open_room_settings': {
|
||||
const RoomSettingsDialog = sdk.getComponent("dialogs.RoomSettingsDialog");
|
||||
|
@ -147,6 +157,11 @@ class RoomViewStore extends Store {
|
|||
isEditingSettings: false,
|
||||
};
|
||||
|
||||
// Allow being given an event to be replied to when switching rooms but sanity check its for this room
|
||||
if (payload.replyingToEvent && payload.replyingToEvent.getRoomId() === payload.room_id) {
|
||||
newState.replyingToEvent = payload.replyingToEvent;
|
||||
}
|
||||
|
||||
if (this._state.forwardingEvent) {
|
||||
dis.dispatch({
|
||||
action: 'send_event',
|
||||
|
|
Loading…
Reference in a new issue