Show Spaces beta card in Labs & My Communities view
the image is temporary
This commit is contained in:
parent
dd8abb0206
commit
c5f653245a
12 changed files with 236 additions and 18 deletions
|
@ -54,6 +54,7 @@
|
||||||
@import "./views/avatars/_MemberStatusMessageAvatar.scss";
|
@import "./views/avatars/_MemberStatusMessageAvatar.scss";
|
||||||
@import "./views/avatars/_PulsedAvatar.scss";
|
@import "./views/avatars/_PulsedAvatar.scss";
|
||||||
@import "./views/avatars/_WidgetAvatar.scss";
|
@import "./views/avatars/_WidgetAvatar.scss";
|
||||||
|
@import "./views/beta/_BetaCard.scss";
|
||||||
@import "./views/context_menus/_CallContextMenu.scss";
|
@import "./views/context_menus/_CallContextMenu.scss";
|
||||||
@import "./views/context_menus/_IconizedContextMenu.scss";
|
@import "./views/context_menus/_IconizedContextMenu.scss";
|
||||||
@import "./views/context_menus/_MessageContextMenu.scss";
|
@import "./views/context_menus/_MessageContextMenu.scss";
|
||||||
|
@ -236,6 +237,7 @@
|
||||||
@import "./views/settings/tabs/user/_AppearanceUserSettingsTab.scss";
|
@import "./views/settings/tabs/user/_AppearanceUserSettingsTab.scss";
|
||||||
@import "./views/settings/tabs/user/_GeneralUserSettingsTab.scss";
|
@import "./views/settings/tabs/user/_GeneralUserSettingsTab.scss";
|
||||||
@import "./views/settings/tabs/user/_HelpUserSettingsTab.scss";
|
@import "./views/settings/tabs/user/_HelpUserSettingsTab.scss";
|
||||||
|
@import "./views/settings/tabs/user/_LabsUserSettingsTab.scss";
|
||||||
@import "./views/settings/tabs/user/_MjolnirUserSettingsTab.scss";
|
@import "./views/settings/tabs/user/_MjolnirUserSettingsTab.scss";
|
||||||
@import "./views/settings/tabs/user/_NotificationUserSettingsTab.scss";
|
@import "./views/settings/tabs/user/_NotificationUserSettingsTab.scss";
|
||||||
@import "./views/settings/tabs/user/_PreferencesUserSettingsTab.scss";
|
@import "./views/settings/tabs/user/_PreferencesUserSettingsTab.scss";
|
||||||
|
|
|
@ -35,6 +35,12 @@ limitations under the License.
|
||||||
margin: 40px;
|
margin: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mx_MyGroups {
|
||||||
|
.mx_BetaCard {
|
||||||
|
margin: 0 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.mx_MyGroups_headerCard {
|
.mx_MyGroups_headerCard {
|
||||||
flex: 1 0 50%;
|
flex: 1 0 50%;
|
||||||
margin-bottom: 30px;
|
margin-bottom: 30px;
|
||||||
|
|
70
res/css/views/beta/_BetaCard.scss
Normal file
70
res/css/views/beta/_BetaCard.scss
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
/*
|
||||||
|
Copyright 2021 The Matrix.org Foundation C.I.C.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.mx_BetaCard {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding: 24px;
|
||||||
|
background-color: $settings-profile-placeholder-bg-color;
|
||||||
|
border-radius: 8px;
|
||||||
|
display: flex;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
> div {
|
||||||
|
.mx_BetaCard_title {
|
||||||
|
font-weight: $font-semi-bold;
|
||||||
|
font-size: $font-18px;
|
||||||
|
line-height: $font-22px;
|
||||||
|
color: $primary-fg-color;
|
||||||
|
margin: 4px 0 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mx_BetaCard_caption {
|
||||||
|
font-size: $font-15px;
|
||||||
|
line-height: $font-20px;
|
||||||
|
color: $secondary-fg-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mx_AccessibleButton {
|
||||||
|
display: block;
|
||||||
|
margin: 20px 0;
|
||||||
|
padding: 12px 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mx_BetaCard_disclaimer {
|
||||||
|
font-size: $font-12px;
|
||||||
|
line-height: $font-15px;
|
||||||
|
color: $secondary-fg-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
> img {
|
||||||
|
margin: auto 0 auto 20px;
|
||||||
|
width: 300px;
|
||||||
|
object-fit: contain;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mx_BetaCard_betaPill {
|
||||||
|
background-color: $accent-color-alt;
|
||||||
|
padding: 4px 10px;
|
||||||
|
border-radius: 8px;
|
||||||
|
margin-left: 12px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 15px;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
25
res/css/views/settings/tabs/user/_LabsUserSettingsTab.scss
Normal file
25
res/css/views/settings/tabs/user/_LabsUserSettingsTab.scss
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
/*
|
||||||
|
Copyright 2021 The Matrix.org Foundation C.I.C.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.mx_LabsUserSettingsTab {
|
||||||
|
.mx_SettingsTab_section {
|
||||||
|
margin-top: 32px;
|
||||||
|
|
||||||
|
.mx_SettingsFlag {
|
||||||
|
margin-right: 0; // remove right margin to align with beta cards
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
res/img/betas/spaces.png
Normal file
BIN
res/img/betas/spaces.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 133 KiB |
|
@ -25,6 +25,7 @@ import AccessibleButton from '../views/elements/AccessibleButton';
|
||||||
import MatrixClientContext from "../../contexts/MatrixClientContext";
|
import MatrixClientContext from "../../contexts/MatrixClientContext";
|
||||||
import AutoHideScrollbar from "./AutoHideScrollbar";
|
import AutoHideScrollbar from "./AutoHideScrollbar";
|
||||||
import {replaceableComponent} from "../../utils/replaceableComponent";
|
import {replaceableComponent} from "../../utils/replaceableComponent";
|
||||||
|
import BetaCard from "../views/beta/BetaCard";
|
||||||
|
|
||||||
@replaceableComponent("structures.MyGroups")
|
@replaceableComponent("structures.MyGroups")
|
||||||
export default class MyGroups extends React.Component {
|
export default class MyGroups extends React.Component {
|
||||||
|
@ -139,6 +140,7 @@ export default class MyGroups extends React.Component {
|
||||||
</div>
|
</div>
|
||||||
</div>*/}
|
</div>*/}
|
||||||
</div>
|
</div>
|
||||||
|
<BetaCard featureId="feature_spaces" title={_t("Communities are changing to spaces")} />
|
||||||
<div className="mx_MyGroups_content">
|
<div className="mx_MyGroups_content">
|
||||||
{ contentHeader }
|
{ contentHeader }
|
||||||
{ content }
|
{ content }
|
||||||
|
|
60
src/components/views/beta/BetaCard.tsx
Normal file
60
src/components/views/beta/BetaCard.tsx
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
/*
|
||||||
|
Copyright 2021 The Matrix.org Foundation C.I.C.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from "react";
|
||||||
|
|
||||||
|
import {_t} from "../../../languageHandler";
|
||||||
|
import AccessibleButton from "../elements/AccessibleButton";
|
||||||
|
import SettingsStore from "../../../settings/SettingsStore";
|
||||||
|
import {SettingLevel} from "../../../settings/SettingLevel";
|
||||||
|
|
||||||
|
interface IProps {
|
||||||
|
title?: string;
|
||||||
|
featureId: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const BetaPill = ({ onClick }) => {
|
||||||
|
return <span className="mx_BetaCard_betaPill" onClick={onClick}>
|
||||||
|
{ _t("Beta") }
|
||||||
|
</span>;
|
||||||
|
};
|
||||||
|
|
||||||
|
const BetaCard = ({ title: titleOverride, featureId }: IProps) => {
|
||||||
|
const { title, caption, disclaimer, image } = SettingsStore.getBetaInfo(featureId);
|
||||||
|
const value = SettingsStore.getValue(featureId);
|
||||||
|
|
||||||
|
return <div className="mx_BetaCard">
|
||||||
|
<div>
|
||||||
|
<h3 className="mx_BetaCard_title">
|
||||||
|
{ titleOverride || _t(title) }
|
||||||
|
<BetaPill />
|
||||||
|
</h3>
|
||||||
|
<span className="mx_BetaCard_caption">{ _t(caption) }</span>
|
||||||
|
<AccessibleButton
|
||||||
|
onClick={() => SettingsStore.setValue(featureId, null, SettingLevel.DEVICE, !value)}
|
||||||
|
kind="primary"
|
||||||
|
>
|
||||||
|
{ value ? _t("Leave the beta") : _t("Join the beta") }
|
||||||
|
</AccessibleButton>
|
||||||
|
{ disclaimer && <div className="mx_BetaCard_disclaimer">
|
||||||
|
{ typeof disclaimer === "string" ? _t(disclaimer) : disclaimer() }
|
||||||
|
</div> }
|
||||||
|
</div>
|
||||||
|
<img src={image} alt="" />
|
||||||
|
</div>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default BetaCard;
|
|
@ -125,7 +125,10 @@ export default class UserSettingsDialog extends React.Component {
|
||||||
"mx_UserSettingsDialog_securityIcon",
|
"mx_UserSettingsDialog_securityIcon",
|
||||||
<SecurityUserSettingsTab closeSettingsFn={this.props.onFinished} />,
|
<SecurityUserSettingsTab closeSettingsFn={this.props.onFinished} />,
|
||||||
));
|
));
|
||||||
if (SdkConfig.get()['showLabsSettings']) {
|
// Show the Labs tab if enabled or if there are any active betas
|
||||||
|
if (SdkConfig.get()['showLabsSettings']
|
||||||
|
|| SettingsStore.getFeatureSettingNames().some(k => SettingsStore.getBetaInfo(k))
|
||||||
|
) {
|
||||||
tabs.push(new Tab(
|
tabs.push(new Tab(
|
||||||
USER_LABS_TAB,
|
USER_LABS_TAB,
|
||||||
_td("Labs"),
|
_td("Labs"),
|
||||||
|
|
|
@ -22,6 +22,8 @@ import LabelledToggleSwitch from "../../../elements/LabelledToggleSwitch";
|
||||||
import * as sdk from "../../../../../index";
|
import * as sdk from "../../../../../index";
|
||||||
import {SettingLevel} from "../../../../../settings/SettingLevel";
|
import {SettingLevel} from "../../../../../settings/SettingLevel";
|
||||||
import {replaceableComponent} from "../../../../../utils/replaceableComponent";
|
import {replaceableComponent} from "../../../../../utils/replaceableComponent";
|
||||||
|
import SdkConfig from "../../../../../SdkConfig";
|
||||||
|
import BetaCard from "../../../beta/BetaCard";
|
||||||
|
|
||||||
export class LabsSettingToggle extends React.Component {
|
export class LabsSettingToggle extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
|
@ -48,14 +50,40 @@ export default class LabsUserSettingsTab extends React.Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
const features = SettingsStore.getFeatureSettingNames();
|
||||||
|
const [labs, betas] = features.reduce((arr, f) => {
|
||||||
|
arr[SettingsStore.getBetaInfo(f) ? 1 : 0].push(f);
|
||||||
|
return arr;
|
||||||
|
}, [[], []]);
|
||||||
|
|
||||||
|
let betaSection;
|
||||||
|
if (betas.length) {
|
||||||
|
betaSection = <div className="mx_SettingsTab_section">
|
||||||
|
{ betas.map(f => <BetaCard key={f} featureId={f} /> ) }
|
||||||
|
</div>;
|
||||||
|
}
|
||||||
|
|
||||||
|
let labsSection;
|
||||||
|
if (SdkConfig.get()['showLabsSettings']) {
|
||||||
const SettingsFlag = sdk.getComponent("views.elements.SettingsFlag");
|
const SettingsFlag = sdk.getComponent("views.elements.SettingsFlag");
|
||||||
const flags = SettingsStore.getFeatureSettingNames().map(f => <LabsSettingToggle featureId={f} key={f} />);
|
const flags = labs.map(f => <LabsSettingToggle featureId={f} key={f} />);
|
||||||
|
|
||||||
|
labsSection = <div className="mx_SettingsTab_section">
|
||||||
|
{flags}
|
||||||
|
<SettingsFlag name="enableWidgetScreenshots" level={SettingLevel.ACCOUNT} />
|
||||||
|
<SettingsFlag name="showHiddenEventsInTimeline" level={SettingLevel.DEVICE} />
|
||||||
|
<SettingsFlag name="lowBandwidth" level={SettingLevel.DEVICE} />
|
||||||
|
<SettingsFlag name="advancedRoomListLogging" level={SettingLevel.DEVICE} />
|
||||||
|
</div>;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="mx_SettingsTab">
|
<div className="mx_SettingsTab mx_LabsUserSettingsTab">
|
||||||
<div className="mx_SettingsTab_heading">{_t("Labs")}</div>
|
<div className="mx_SettingsTab_heading">{_t("Labs")}</div>
|
||||||
<div className='mx_SettingsTab_subsectionText'>
|
<div className='mx_SettingsTab_subsectionText'>
|
||||||
{
|
{
|
||||||
_t('Customise your experience with experimental labs features. ' +
|
_t('Feeling experimental? Labs are the best way to get things early, ' +
|
||||||
|
'test out new features and help shape them before they actually launch. ' +
|
||||||
'<a>Learn more</a>.', {}, {
|
'<a>Learn more</a>.', {}, {
|
||||||
'a': (sub) => {
|
'a': (sub) => {
|
||||||
return <a href="https://github.com/vector-im/element-web/blob/develop/docs/labs.md"
|
return <a href="https://github.com/vector-im/element-web/blob/develop/docs/labs.md"
|
||||||
|
@ -64,13 +92,8 @@ export default class LabsUserSettingsTab extends React.Component {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<div className="mx_SettingsTab_section">
|
{ betaSection }
|
||||||
{flags}
|
{ labsSection }
|
||||||
<SettingsFlag name={"enableWidgetScreenshots"} level={SettingLevel.ACCOUNT} />
|
|
||||||
<SettingsFlag name={"showHiddenEventsInTimeline"} level={SettingLevel.DEVICE} />
|
|
||||||
<SettingsFlag name={"lowBandwidth"} level={SettingLevel.DEVICE} />
|
|
||||||
<SettingsFlag name={"advancedRoomListLogging"} level={SettingLevel.DEVICE} />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -784,7 +784,9 @@
|
||||||
"%(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.",
|
"Spaces": "Spaces",
|
||||||
|
"Spaces are a new way to group people and rooms for fun, work, yourself or anything in between.": "Spaces are a new way to group people and rooms for fun, work, yourself or anything in between.",
|
||||||
|
"%(brand)s will reload with Spaces enabled, and communities and custom tags disabled. You can leave the beta at anytime. Certain features will require a compatible homeserver. Beta only available for Web, Desktop, and Android.": "%(brand)s will reload with Spaces enabled, and communities and custom tags disabled. You can leave the beta at anytime. Certain features will require a compatible homeserver. Beta only available for Web, Desktop, and Android.",
|
||||||
"Show options to enable 'Do not disturb' mode": "Show options to enable 'Do not disturb' mode",
|
"Show options to enable 'Do not disturb' mode": "Show options to enable 'Do not disturb' mode",
|
||||||
"Send and receive voice messages (in development)": "Send and receive voice messages (in development)",
|
"Send and receive voice messages (in development)": "Send and receive voice messages (in development)",
|
||||||
"Render LaTeX maths in messages": "Render LaTeX maths in messages",
|
"Render LaTeX maths in messages": "Render LaTeX maths in messages",
|
||||||
|
@ -1254,7 +1256,7 @@
|
||||||
"click to reveal": "click to reveal",
|
"click to reveal": "click to reveal",
|
||||||
"Clear cache and reload": "Clear cache and reload",
|
"Clear cache and reload": "Clear cache and reload",
|
||||||
"Labs": "Labs",
|
"Labs": "Labs",
|
||||||
"Customise your experience with experimental labs features. <a>Learn more</a>.": "Customise your experience with experimental labs features. <a>Learn more</a>.",
|
"Feeling experimental? Labs are the best way to get things early, test out new features and help shape them before they actually launch. <a>Learn more</a>.": "Feeling experimental? Labs are the best way to get things early, test out new features and help shape them before they actually launch. <a>Learn more</a>.",
|
||||||
"Ignored/Blocked": "Ignored/Blocked",
|
"Ignored/Blocked": "Ignored/Blocked",
|
||||||
"Error adding ignored user/server": "Error adding ignored user/server",
|
"Error adding ignored user/server": "Error adding ignored user/server",
|
||||||
"Something went wrong. Please try again or view your console for hints.": "Something went wrong. Please try again or view your console for hints.",
|
"Something went wrong. Please try again or view your console for hints.": "Something went wrong. Please try again or view your console for hints.",
|
||||||
|
@ -2020,7 +2022,6 @@
|
||||||
"Space selection": "Space selection",
|
"Space selection": "Space selection",
|
||||||
"Add existing rooms": "Add existing rooms",
|
"Add existing rooms": "Add existing rooms",
|
||||||
"Filter your rooms and spaces": "Filter your rooms and spaces",
|
"Filter your rooms and spaces": "Filter your rooms and spaces",
|
||||||
"Spaces": "Spaces",
|
|
||||||
"Direct Messages": "Direct Messages",
|
"Direct Messages": "Direct Messages",
|
||||||
"Don't want to add an existing room?": "Don't want to add an existing room?",
|
"Don't want to add an existing room?": "Don't want to add an existing room?",
|
||||||
"Create a new room": "Create a new room",
|
"Create a new room": "Create a new room",
|
||||||
|
@ -2451,6 +2452,9 @@
|
||||||
"Revoke permissions": "Revoke permissions",
|
"Revoke permissions": "Revoke permissions",
|
||||||
"Move left": "Move left",
|
"Move left": "Move left",
|
||||||
"Move right": "Move right",
|
"Move right": "Move right",
|
||||||
|
"Beta": "Beta",
|
||||||
|
"Leave the beta": "Leave the beta",
|
||||||
|
"Join the beta": "Join the beta",
|
||||||
"Avatar": "Avatar",
|
"Avatar": "Avatar",
|
||||||
"This room is public": "This room is public",
|
"This room is public": "This room is public",
|
||||||
"Away": "Away",
|
"Away": "Away",
|
||||||
|
@ -2584,6 +2588,7 @@
|
||||||
"Error whilst fetching joined communities": "Error whilst fetching joined communities",
|
"Error whilst fetching joined communities": "Error whilst fetching joined communities",
|
||||||
"Create a new community": "Create a new community",
|
"Create a new community": "Create a new community",
|
||||||
"Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.",
|
"Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.",
|
||||||
|
"Communities are changing to spaces": "Communities are changing to spaces",
|
||||||
"You’re all caught up": "You’re all caught up",
|
"You’re all caught up": "You’re all caught up",
|
||||||
"You have no visible notifications.": "You have no visible notifications.",
|
"You have no visible notifications.": "You have no visible notifications.",
|
||||||
"%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.": "%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.",
|
"%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.": "%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.",
|
||||||
|
|
|
@ -16,8 +16,9 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { MatrixClient } from 'matrix-js-sdk/src/client';
|
import { MatrixClient } from 'matrix-js-sdk/src/client';
|
||||||
|
import type { ReactNode } from "react";
|
||||||
|
|
||||||
import { _td } from '../languageHandler';
|
import { _t, _td } from '../languageHandler';
|
||||||
import {
|
import {
|
||||||
NotificationBodyEnabledController,
|
NotificationBodyEnabledController,
|
||||||
NotificationsEnabledController,
|
NotificationsEnabledController,
|
||||||
|
@ -39,6 +40,7 @@ import { OrderedMultiController } from "./controllers/OrderedMultiController";
|
||||||
import { Layout } from "./Layout";
|
import { Layout } from "./Layout";
|
||||||
import ReducedMotionController from './controllers/ReducedMotionController';
|
import ReducedMotionController from './controllers/ReducedMotionController';
|
||||||
import IncompatibleController from "./controllers/IncompatibleController";
|
import IncompatibleController from "./controllers/IncompatibleController";
|
||||||
|
import SdkConfig from "../SdkConfig";
|
||||||
|
|
||||||
// These are just a bunch of helper arrays to avoid copy/pasting a bunch of times
|
// These are just a bunch of helper arrays to avoid copy/pasting a bunch of times
|
||||||
const LEVELS_ROOM_SETTINGS = [
|
const LEVELS_ROOM_SETTINGS = [
|
||||||
|
@ -117,16 +119,32 @@ export interface ISetting {
|
||||||
// historical settings which we don't want existing user's values be wiped. Do
|
// historical settings which we don't want existing user's values be wiped. Do
|
||||||
// not use this for new settings.
|
// not use this for new settings.
|
||||||
invertedSettingName?: string;
|
invertedSettingName?: string;
|
||||||
|
|
||||||
|
betaInfo?: {
|
||||||
|
title: string; // _td
|
||||||
|
caption: string; // _td
|
||||||
|
disclaimer?: (() => ReactNode) | string; // _td
|
||||||
|
image: string; // require(...)
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export const SETTINGS: {[setting: string]: ISetting} = {
|
export const SETTINGS: {[setting: string]: ISetting} = {
|
||||||
"feature_spaces": {
|
"feature_spaces": {
|
||||||
isFeature: true,
|
isFeature: true,
|
||||||
displayName: _td("Spaces prototype. Incompatible with Communities, Communities v2 and Custom Tags. " +
|
|
||||||
"Requires compatible homeserver for some features."),
|
|
||||||
supportedLevels: LEVELS_FEATURE,
|
supportedLevels: LEVELS_FEATURE,
|
||||||
default: false,
|
default: false,
|
||||||
controller: new ReloadOnChangeController(),
|
controller: new ReloadOnChangeController(),
|
||||||
|
betaInfo: {
|
||||||
|
title: _td("Spaces"),
|
||||||
|
caption: _td("Spaces are a new way to group people and rooms for fun, " +
|
||||||
|
"work, yourself or anything in between."),
|
||||||
|
disclaimer: () => _t("%(brand)s will reload with Spaces enabled, " +
|
||||||
|
"and communities and custom tags disabled. " +
|
||||||
|
"You can leave the beta at anytime. " +
|
||||||
|
"Certain features will require a compatible homeserver. " +
|
||||||
|
"Beta only available for Web, Desktop, and Android.", { brand: SdkConfig.get().brand }),
|
||||||
|
image: require("../../res/img/betas/spaces.png"),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
"feature_dnd": {
|
"feature_dnd": {
|
||||||
isFeature: true,
|
isFeature: true,
|
||||||
|
|
|
@ -257,6 +257,10 @@ export default class SettingsStore {
|
||||||
return SETTINGS[settingName].isFeature;
|
return SETTINGS[settingName].isFeature;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static getBetaInfo(settingName: string) {
|
||||||
|
return SETTINGS[settingName]?.betaInfo;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines if a setting is enabled.
|
* Determines if a setting is enabled.
|
||||||
* If a setting is disabled then it should be hidden from the user.
|
* If a setting is disabled then it should be hidden from the user.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue