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!20
This commit is contained in:
commit
7a1635e7bc
3 changed files with 16 additions and 8 deletions
|
@ -54,6 +54,7 @@ import defaultDispatcher from "../../../dispatcher/dispatcher";
|
||||||
import {ActionPayload} from "../../../dispatcher/payloads";
|
import {ActionPayload} from "../../../dispatcher/payloads";
|
||||||
import { RoomNotificationStateStore } from "../../../stores/notifications/RoomNotificationStateStore";
|
import { RoomNotificationStateStore } from "../../../stores/notifications/RoomNotificationStateStore";
|
||||||
import { NotificationState } from "../../../stores/notifications/NotificationState";
|
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
|
// 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);
|
ActiveRoomObserver.addListener(this.props.room.roomId, this.onActiveRoomUpdate);
|
||||||
|
MessagePreviewStore.instance.on(UPDATE_EVENT, this.onPreviewUpdated);
|
||||||
this.dispatcherRef = defaultDispatcher.register(this.onAction);
|
this.dispatcherRef = defaultDispatcher.register(this.onAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,9 +152,14 @@ export default class RoomTile2 extends React.Component<IProps, IState> {
|
||||||
if (this.props.room) {
|
if (this.props.room) {
|
||||||
ActiveRoomObserver.removeListener(this.props.room.roomId, this.onActiveRoomUpdate);
|
ActiveRoomObserver.removeListener(this.props.room.roomId, this.onActiveRoomUpdate);
|
||||||
}
|
}
|
||||||
|
MessagePreviewStore.instance.off(UPDATE_EVENT, this.onPreviewUpdated);
|
||||||
defaultDispatcher.unregister(this.dispatcherRef);
|
defaultDispatcher.unregister(this.dispatcherRef);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private onPreviewUpdated = () => {
|
||||||
|
this.forceUpdate(); // we don't track the preview in state, so just re-render
|
||||||
|
};
|
||||||
|
|
||||||
private onAction = (payload: ActionPayload) => {
|
private onAction = (payload: ActionPayload) => {
|
||||||
if (payload.action === "view_room" && payload.room_id === this.props.room.roomId && payload.show_room_tile) {
|
if (payload.action === "view_room" && payload.room_id === this.props.room.roomId && payload.show_room_tile) {
|
||||||
setImmediate(() => {
|
setImmediate(() => {
|
||||||
|
|
|
@ -14,7 +14,8 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
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;
|
const TILE_HEIGHT_PX = 44;
|
||||||
|
|
||||||
|
@ -26,7 +27,7 @@ interface ISerializedListLayout {
|
||||||
|
|
||||||
export class ListLayout {
|
export class ListLayout {
|
||||||
private _n = 0;
|
private _n = 0;
|
||||||
private _previews = false;
|
private _previews: boolean | null = null;
|
||||||
private _collapsed = false;
|
private _collapsed = false;
|
||||||
|
|
||||||
constructor(public readonly tagId: TagID) {
|
constructor(public readonly tagId: TagID) {
|
||||||
|
@ -50,7 +51,12 @@ export class ListLayout {
|
||||||
}
|
}
|
||||||
|
|
||||||
public get showPreviews(): boolean {
|
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) {
|
public set showPreviews(v: boolean) {
|
||||||
|
|
|
@ -711,11 +711,6 @@ export class Algorithm extends EventEmitter {
|
||||||
if (!algorithm) throw new Error(`No algorithm for ${rmTag}`);
|
if (!algorithm) throw new Error(`No algorithm for ${rmTag}`);
|
||||||
await algorithm.handleRoomUpdate(room, RoomUpdateCause.RoomRemoved);
|
await algorithm.handleRoomUpdate(room, RoomUpdateCause.RoomRemoved);
|
||||||
this.cachedRooms[rmTag] = algorithm.orderedRooms;
|
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) {
|
for (const addTag of diff.added) {
|
||||||
if (!window.mx_QuietRoomListLogging) {
|
if (!window.mx_QuietRoomListLogging) {
|
||||||
|
|
Loading…
Reference in a new issue