mirror of https://github.com/vector-im/riot-web
Make compact layout only apply to Modern layout (#7382)
parent
d9da2581b4
commit
71b561d471
|
@ -147,6 +147,7 @@ class LoggedInView extends React.Component<IProps, IState> {
|
||||||
protected readonly _roomView: React.RefObject<any>;
|
protected readonly _roomView: React.RefObject<any>;
|
||||||
protected readonly _resizeContainer: React.RefObject<HTMLDivElement>;
|
protected readonly _resizeContainer: React.RefObject<HTMLDivElement>;
|
||||||
protected readonly resizeHandler: React.RefObject<HTMLDivElement>;
|
protected readonly resizeHandler: React.RefObject<HTMLDivElement>;
|
||||||
|
protected layoutWatcherRef: string;
|
||||||
protected compactLayoutWatcherRef: string;
|
protected compactLayoutWatcherRef: string;
|
||||||
protected backgroundImageWatcherRef: string;
|
protected backgroundImageWatcherRef: string;
|
||||||
protected resizer: Resizer;
|
protected resizer: Resizer;
|
||||||
|
@ -190,6 +191,7 @@ class LoggedInView extends React.Component<IProps, IState> {
|
||||||
);
|
);
|
||||||
this._matrixClient.on("RoomState.events", this.onRoomStateEvents);
|
this._matrixClient.on("RoomState.events", this.onRoomStateEvents);
|
||||||
|
|
||||||
|
this.layoutWatcherRef = SettingsStore.watchSetting("layout", null, this.onCompactLayoutChanged);
|
||||||
this.compactLayoutWatcherRef = SettingsStore.watchSetting(
|
this.compactLayoutWatcherRef = SettingsStore.watchSetting(
|
||||||
"useCompactLayout", null, this.onCompactLayoutChanged,
|
"useCompactLayout", null, this.onCompactLayoutChanged,
|
||||||
);
|
);
|
||||||
|
@ -212,6 +214,7 @@ class LoggedInView extends React.Component<IProps, IState> {
|
||||||
this._matrixClient.removeListener("sync", this.onSync);
|
this._matrixClient.removeListener("sync", this.onSync);
|
||||||
this._matrixClient.removeListener("RoomState.events", this.onRoomStateEvents);
|
this._matrixClient.removeListener("RoomState.events", this.onRoomStateEvents);
|
||||||
OwnProfileStore.instance.off(UPDATE_EVENT, this.refreshBackgroundImage);
|
OwnProfileStore.instance.off(UPDATE_EVENT, this.refreshBackgroundImage);
|
||||||
|
SettingsStore.unwatchSetting(this.layoutWatcherRef);
|
||||||
SettingsStore.unwatchSetting(this.compactLayoutWatcherRef);
|
SettingsStore.unwatchSetting(this.compactLayoutWatcherRef);
|
||||||
SettingsStore.unwatchSetting(this.backgroundImageWatcherRef);
|
SettingsStore.unwatchSetting(this.backgroundImageWatcherRef);
|
||||||
this.resizer.detach();
|
this.resizer.detach();
|
||||||
|
@ -295,9 +298,9 @@ class LoggedInView extends React.Component<IProps, IState> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
onCompactLayoutChanged = (setting, roomId, level, valueAtLevel, newValue) => {
|
private onCompactLayoutChanged = () => {
|
||||||
this.setState({
|
this.setState({
|
||||||
useCompactLayout: valueAtLevel,
|
useCompactLayout: SettingsStore.getValue("useCompactLayout"),
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -230,7 +230,7 @@ export default class Field extends React.PureComponent<PropShapes, IState> {
|
||||||
/* eslint @typescript-eslint/no-unused-vars: ["error", { "ignoreRestSiblings": true }] */
|
/* eslint @typescript-eslint/no-unused-vars: ["error", { "ignoreRestSiblings": true }] */
|
||||||
const { element, prefixComponent, postfixComponent, className, onValidate, children,
|
const { element, prefixComponent, postfixComponent, className, onValidate, children,
|
||||||
tooltipContent, forceValidity, tooltipClassName, list, validateOnBlur, validateOnChange, validateOnFocus,
|
tooltipContent, forceValidity, tooltipClassName, list, validateOnBlur, validateOnChange, validateOnFocus,
|
||||||
usePlaceholderAsHint,
|
usePlaceholderAsHint, forceTooltipVisible,
|
||||||
...inputProps } = this.props;
|
...inputProps } = this.props;
|
||||||
|
|
||||||
// Set some defaults for the <input> element
|
// Set some defaults for the <input> element
|
||||||
|
@ -276,7 +276,7 @@ export default class Field extends React.PureComponent<PropShapes, IState> {
|
||||||
if (tooltipContent || this.state.feedback) {
|
if (tooltipContent || this.state.feedback) {
|
||||||
fieldTooltip = <Tooltip
|
fieldTooltip = <Tooltip
|
||||||
tooltipClassName={classNames("mx_Field_tooltip", tooltipClassName)}
|
tooltipClassName={classNames("mx_Field_tooltip", tooltipClassName)}
|
||||||
visible={(this.state.focused && this.props.forceTooltipVisible) || this.state.feedbackVisible}
|
visible={(this.state.focused && forceTooltipVisible) || this.state.feedbackVisible}
|
||||||
label={tooltipContent || this.state.feedback}
|
label={tooltipContent || this.state.feedback}
|
||||||
alignment={Tooltip.Alignment.Right}
|
alignment={Tooltip.Alignment.Right}
|
||||||
/>;
|
/>;
|
||||||
|
|
|
@ -118,12 +118,7 @@ export default class AppearanceUserSettingsTab extends React.Component<IProps, I
|
||||||
{ brand },
|
{ brand },
|
||||||
);
|
);
|
||||||
advanced = <>
|
advanced = <>
|
||||||
<SettingsFlag
|
<SettingsFlag name="useCompactLayout" level={SettingLevel.DEVICE} useCheckbox={true} />
|
||||||
name="useCompactLayout"
|
|
||||||
level={SettingLevel.DEVICE}
|
|
||||||
useCheckbox={true}
|
|
||||||
disabled={this.state.layout !== Layout.Group}
|
|
||||||
/>
|
|
||||||
|
|
||||||
{ !SettingsStore.getValue("feature_new_layout_switcher") ?
|
{ !SettingsStore.getValue("feature_new_layout_switcher") ?
|
||||||
<StyledCheckbox
|
<StyledCheckbox
|
||||||
|
|
|
@ -417,6 +417,7 @@ export const SETTINGS: {[setting: string]: ISetting} = {
|
||||||
supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,
|
supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,
|
||||||
displayName: _td("Use a more compact 'Modern' layout"),
|
displayName: _td("Use a more compact 'Modern' layout"),
|
||||||
default: false,
|
default: false,
|
||||||
|
controller: new IncompatibleController("layout", false, v => v !== Layout.Group),
|
||||||
},
|
},
|
||||||
"showRedactions": {
|
"showRedactions": {
|
||||||
supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,
|
supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,
|
||||||
|
|
|
@ -27,7 +27,7 @@ export default class IncompatibleController extends SettingController {
|
||||||
public constructor(
|
public constructor(
|
||||||
private settingName: string,
|
private settingName: string,
|
||||||
private forcedValue: any = false,
|
private forcedValue: any = false,
|
||||||
private incompatibleValue: any = true,
|
private incompatibleValue: any | ((v: any) => boolean) = true,
|
||||||
) {
|
) {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,9 @@ export default class IncompatibleController extends SettingController {
|
||||||
}
|
}
|
||||||
|
|
||||||
public get incompatibleSetting(): boolean {
|
public get incompatibleSetting(): boolean {
|
||||||
|
if (typeof this.incompatibleValue === "function") {
|
||||||
|
return this.incompatibleValue(SettingsStore.getValue(this.settingName));
|
||||||
|
}
|
||||||
return SettingsStore.getValue(this.settingName) === this.incompatibleValue;
|
return SettingsStore.getValue(this.settingName) === this.incompatibleValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue