mirror of https://github.com/vector-im/riot-web
				
				
				
			Merge branch 'travis/EL-room-list/fixes1' into 'element'
Misc fixes to room list See merge request new-vector/element/element-web/matrix-react-sdk!20pull/21833/head
						commit
						7a1635e7bc
					
				| 
						 | 
				
			
			@ -54,6 +54,7 @@ import defaultDispatcher from "../../../dispatcher/dispatcher";
 | 
			
		|||
import {ActionPayload} from "../../../dispatcher/payloads";
 | 
			
		||||
import { RoomNotificationStateStore } from "../../../stores/notifications/RoomNotificationStateStore";
 | 
			
		||||
import { NotificationState } from "../../../stores/notifications/NotificationState";
 | 
			
		||||
import { UPDATE_EVENT } from "../../../stores/AsyncStore";
 | 
			
		||||
 | 
			
		||||
// TODO: Rename on launch: https://github.com/vector-im/riot-web/issues/14367
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -128,6 +129,7 @@ export default class RoomTile2 extends React.Component<IProps, IState> {
 | 
			
		|||
        };
 | 
			
		||||
 | 
			
		||||
        ActiveRoomObserver.addListener(this.props.room.roomId, this.onActiveRoomUpdate);
 | 
			
		||||
        MessagePreviewStore.instance.on(UPDATE_EVENT, this.onPreviewUpdated);
 | 
			
		||||
        this.dispatcherRef = defaultDispatcher.register(this.onAction);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -150,9 +152,14 @@ export default class RoomTile2 extends React.Component<IProps, IState> {
 | 
			
		|||
        if (this.props.room) {
 | 
			
		||||
            ActiveRoomObserver.removeListener(this.props.room.roomId, this.onActiveRoomUpdate);
 | 
			
		||||
        }
 | 
			
		||||
        MessagePreviewStore.instance.off(UPDATE_EVENT, this.onPreviewUpdated);
 | 
			
		||||
        defaultDispatcher.unregister(this.dispatcherRef);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private onPreviewUpdated = () => {
 | 
			
		||||
        this.forceUpdate(); // we don't track the preview in state, so just re-render
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    private onAction = (payload: ActionPayload) => {
 | 
			
		||||
        if (payload.action === "view_room" && payload.room_id === this.props.room.roomId && payload.show_room_tile) {
 | 
			
		||||
            setImmediate(() => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,8 @@ See the License for the specific language governing permissions and
 | 
			
		|||
limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
import { TagID } from "./models";
 | 
			
		||||
import { DefaultTagID, TagID } from "./models";
 | 
			
		||||
import { isNullOrUndefined } from "matrix-js-sdk/src/utils";
 | 
			
		||||
 | 
			
		||||
const TILE_HEIGHT_PX = 44;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -26,7 +27,7 @@ interface ISerializedListLayout {
 | 
			
		|||
 | 
			
		||||
export class ListLayout {
 | 
			
		||||
    private _n = 0;
 | 
			
		||||
    private _previews = false;
 | 
			
		||||
    private _previews: boolean | null = null;
 | 
			
		||||
    private _collapsed = false;
 | 
			
		||||
 | 
			
		||||
    constructor(public readonly tagId: TagID) {
 | 
			
		||||
| 
						 | 
				
			
			@ -50,7 +51,12 @@ export class ListLayout {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    public get showPreviews(): boolean {
 | 
			
		||||
        return this._previews;
 | 
			
		||||
        if (!isNullOrUndefined(this._previews)) {
 | 
			
		||||
            return this._previews;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Turn it on for DMs by default, but not for other rooms
 | 
			
		||||
        return this.tagId === DefaultTagID.DM;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public set showPreviews(v: boolean) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -711,11 +711,6 @@ export class Algorithm extends EventEmitter {
 | 
			
		|||
                    if (!algorithm) throw new Error(`No algorithm for ${rmTag}`);
 | 
			
		||||
                    await algorithm.handleRoomUpdate(room, RoomUpdateCause.RoomRemoved);
 | 
			
		||||
                    this.cachedRooms[rmTag] = algorithm.orderedRooms;
 | 
			
		||||
 | 
			
		||||
                    // Later on we won't update the filtered rooms or sticky room for removed
 | 
			
		||||
                    // tags, so do so now.
 | 
			
		||||
                    this.recalculateFilteredRoomsForTag(rmTag);
 | 
			
		||||
                    this.recalculateStickyRoom(rmTag);
 | 
			
		||||
                }
 | 
			
		||||
                for (const addTag of diff.added) {
 | 
			
		||||
                    if (!window.mx_QuietRoomListLogging) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue