Merge pull request #5668 from matrix-org/t3chguy/spaces2
Initial Spaces feature flag
This commit is contained in:
commit
0f0e6c335f
6 changed files with 28 additions and 10 deletions
|
@ -165,6 +165,9 @@ export function avatarUrlForRoom(room: Room, width: number, height: number, resi
|
||||||
return explicitRoomAvatar;
|
return explicitRoomAvatar;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// space rooms cannot be DMs so skip the rest
|
||||||
|
if (room.isSpaceRoom()) return null;
|
||||||
|
|
||||||
let otherMember = null;
|
let otherMember = null;
|
||||||
const otherUserId = DMRoomMap.shared().getUserIdForRoomId(room.roomId);
|
const otherUserId = DMRoomMap.shared().getUserIdForRoomId(room.roomId);
|
||||||
if (otherUserId) {
|
if (otherUserId) {
|
||||||
|
|
|
@ -777,6 +777,7 @@
|
||||||
"%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s",
|
"%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s",
|
||||||
"%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s",
|
"%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s",
|
||||||
"Change notification settings": "Change notification settings",
|
"Change notification settings": "Change notification settings",
|
||||||
|
"Spaces prototype. Incompatible with Communities, Communities v2 and Custom Tags. Requires compatible homeserver for some features.": "Spaces prototype. Incompatible with Communities, Communities v2 and Custom Tags. Requires compatible homeserver for some features.",
|
||||||
"Render LaTeX maths in messages": "Render LaTeX maths in messages",
|
"Render LaTeX maths in messages": "Render LaTeX maths in messages",
|
||||||
"Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.",
|
"Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.",
|
||||||
"New spinner design": "New spinner design",
|
"New spinner design": "New spinner design",
|
||||||
|
|
|
@ -120,6 +120,14 @@ export interface ISetting {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const SETTINGS: {[setting: string]: ISetting} = {
|
export const SETTINGS: {[setting: string]: ISetting} = {
|
||||||
|
"feature_spaces": {
|
||||||
|
isFeature: true,
|
||||||
|
displayName: _td("Spaces prototype. Incompatible with Communities, Communities v2 and Custom Tags. " +
|
||||||
|
"Requires compatible homeserver for some features."),
|
||||||
|
supportedLevels: LEVELS_FEATURE,
|
||||||
|
default: false,
|
||||||
|
controller: new ReloadOnChangeController(),
|
||||||
|
},
|
||||||
"feature_latex_maths": {
|
"feature_latex_maths": {
|
||||||
isFeature: true,
|
isFeature: true,
|
||||||
displayName: _td("Render LaTeX maths in messages"),
|
displayName: _td("Render LaTeX maths in messages"),
|
||||||
|
@ -134,6 +142,7 @@ export const SETTINGS: {[setting: string]: ISetting} = {
|
||||||
),
|
),
|
||||||
supportedLevels: LEVELS_FEATURE,
|
supportedLevels: LEVELS_FEATURE,
|
||||||
default: false,
|
default: false,
|
||||||
|
controller: new IncompatibleController("feature_spaces"),
|
||||||
},
|
},
|
||||||
"feature_new_spinner": {
|
"feature_new_spinner": {
|
||||||
isFeature: true,
|
isFeature: true,
|
||||||
|
@ -159,6 +168,7 @@ export const SETTINGS: {[setting: string]: ISetting} = {
|
||||||
displayName: _td("Group & filter rooms by custom tags (refresh to apply changes)"),
|
displayName: _td("Group & filter rooms by custom tags (refresh to apply changes)"),
|
||||||
supportedLevels: LEVELS_FEATURE,
|
supportedLevels: LEVELS_FEATURE,
|
||||||
default: false,
|
default: false,
|
||||||
|
controller: new IncompatibleController("feature_spaces"),
|
||||||
},
|
},
|
||||||
"feature_state_counters": {
|
"feature_state_counters": {
|
||||||
isFeature: true,
|
isFeature: true,
|
||||||
|
@ -733,6 +743,7 @@ export const SETTINGS: {[setting: string]: ISetting} = {
|
||||||
[UIFeature.Communities]: {
|
[UIFeature.Communities]: {
|
||||||
supportedLevels: LEVELS_UI_FEATURE,
|
supportedLevels: LEVELS_UI_FEATURE,
|
||||||
default: true,
|
default: true,
|
||||||
|
controller: new IncompatibleController("feature_spaces"),
|
||||||
},
|
},
|
||||||
[UIFeature.AdvancedSettings]: {
|
[UIFeature.AdvancedSettings]: {
|
||||||
supportedLevels: LEVELS_UI_FEATURE,
|
supportedLevels: LEVELS_UI_FEATURE,
|
||||||
|
|
|
@ -122,6 +122,7 @@ export class BreadcrumbsStore extends AsyncStoreWithClient<IState> {
|
||||||
}
|
}
|
||||||
|
|
||||||
private async appendRoom(room: Room) {
|
private async appendRoom(room: Room) {
|
||||||
|
if (room.isSpaceRoom() && SettingsStore.getValue("feature_spaces")) return; // hide space rooms
|
||||||
let updated = false;
|
let updated = false;
|
||||||
const rooms = (this.state.rooms || []).slice(); // cheap clone
|
const rooms = (this.state.rooms || []).slice(); // cheap clone
|
||||||
|
|
||||||
|
|
|
@ -58,8 +58,8 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
private filterConditions: IFilterCondition[] = [];
|
private filterConditions: IFilterCondition[] = [];
|
||||||
private tagWatcher = new TagWatcher(this);
|
private tagWatcher = new TagWatcher(this);
|
||||||
private updateFn = new MarkedExecution(() => {
|
private updateFn = new MarkedExecution(() => {
|
||||||
for (const tagId of Object.keys(this.unfilteredLists)) {
|
for (const tagId of Object.keys(this.orderedLists)) {
|
||||||
RoomNotificationStateStore.instance.getListState(tagId).setRooms(this.unfilteredLists[tagId]);
|
RoomNotificationStateStore.instance.getListState(tagId).setRooms(this.orderedLists[tagId]);
|
||||||
}
|
}
|
||||||
this.emit(LISTS_UPDATE_EVENT);
|
this.emit(LISTS_UPDATE_EVENT);
|
||||||
});
|
});
|
||||||
|
|
|
@ -18,6 +18,7 @@ import {Room} from "matrix-js-sdk/src/models/room";
|
||||||
import CallHandler from "../../../CallHandler";
|
import CallHandler from "../../../CallHandler";
|
||||||
import { RoomListCustomisations } from "../../../customisations/RoomList";
|
import { RoomListCustomisations } from "../../../customisations/RoomList";
|
||||||
import VoipUserMapper from "../../../VoipUserMapper";
|
import VoipUserMapper from "../../../VoipUserMapper";
|
||||||
|
import SettingsStore from "../../../settings/SettingsStore";
|
||||||
|
|
||||||
export class VisibilityProvider {
|
export class VisibilityProvider {
|
||||||
private static internalInstance: VisibilityProvider;
|
private static internalInstance: VisibilityProvider;
|
||||||
|
@ -37,22 +38,23 @@ export class VisibilityProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
public isRoomVisible(room: Room): boolean {
|
public isRoomVisible(room: Room): boolean {
|
||||||
let isVisible = true; // Returned at the end of this function
|
|
||||||
let forced = false; // When true, this function won't bother calling the customisation points
|
|
||||||
|
|
||||||
if (
|
if (
|
||||||
CallHandler.sharedInstance().getSupportsVirtualRooms() &&
|
CallHandler.sharedInstance().getSupportsVirtualRooms() &&
|
||||||
VoipUserMapper.sharedInstance().isVirtualRoom(room)
|
VoipUserMapper.sharedInstance().isVirtualRoom(room)
|
||||||
) {
|
) {
|
||||||
isVisible = false;
|
return false;
|
||||||
forced = true;
|
}
|
||||||
|
|
||||||
|
// hide space rooms as they'll be shown in the SpacePanel
|
||||||
|
if (room.isSpaceRoom() && SettingsStore.getValue("feature_spaces")) {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const isVisibleFn = RoomListCustomisations.isRoomVisible;
|
const isVisibleFn = RoomListCustomisations.isRoomVisible;
|
||||||
if (!forced && isVisibleFn) {
|
if (isVisibleFn) {
|
||||||
isVisible = isVisibleFn(room);
|
return isVisibleFn(room);
|
||||||
}
|
}
|
||||||
|
|
||||||
return isVisible;
|
return true; // default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue