1
0
mirror of https://github.com/hyperspacedev/hyperspace synced 2025-02-07 04:43:20 +01:00

Disable public visibility in Settings when defederated

This commit is contained in:
Marquis Kurt 2019-04-27 13:21:24 -04:00
parent f68a37e908
commit d06b91d8bc

View File

@ -24,7 +24,7 @@ import {
} from '@material-ui/core';
import OpenInNewIcon from '@material-ui/icons/OpenInNew';
import {styles} from './PageLayout.styles';
import {setUserDefaultBool, getUserDefaultBool, getUserDefaultTheme, setUserDefaultTheme, getUserDefaultVisibility, setUserDefaultVisibility} from '../utilities/settings';
import {setUserDefaultBool, getUserDefaultBool, getUserDefaultTheme, setUserDefaultTheme, getUserDefaultVisibility, setUserDefaultVisibility, getConfig} from '../utilities/settings';
import {canSendNotifications, browserSupportsNotificationRequests} from '../utilities/notifications';
import {themes, defaultTheme} from '../types/HyperspaceTheme';
import ThemePreview from '../components/ThemePreview';
@ -43,6 +43,7 @@ interface ISettingsState {
resetSettingsDialog: boolean;
previewTheme: Theme;
defaultVisibility: Visibility;
federated: boolean;
}
class SettingsPage extends Component<any, ISettingsState> {
@ -61,7 +62,8 @@ class SettingsPage extends Component<any, ISettingsState> {
resetHyperspaceDialog: false,
resetSettingsDialog: false,
previewTheme: setHyperspaceTheme(getUserDefaultTheme()) || setHyperspaceTheme(defaultTheme),
defaultVisibility: getUserDefaultVisibility() || "public"
defaultVisibility: getUserDefaultVisibility() || "public",
federated: true
}
this.toggleDarkMode = this.toggleDarkMode.bind(this);
@ -75,6 +77,16 @@ class SettingsPage extends Component<any, ISettingsState> {
this.setVisibility = this.setVisibility.bind(this);
}
componentDidMount() {
this.getFederatedStatus();
}
getFederatedStatus() {
getConfig().then((config: any) => {
this.setState({ federated: config.federated === "true" });
})
}
toggleDarkMode() {
this.setState({ darkModeEnabled: !this.state.darkModeEnabled });
setUserDefaultBool('darkModeEnabled', !this.state.darkModeEnabled);
@ -208,7 +220,7 @@ class SettingsPage extends Component<any, ISettingsState> {
value={this.state.defaultVisibility}
onChange={(e, value) => this.changeVisibility(value as Visibility)}
>
<FormControlLabel value={"public"} key={"public"} control={<Radio />} label={"Public"} />
<FormControlLabel value={"public"} key={"public"} control={<Radio />} label={`Public ${this.state.federated? "": "(disabled by provider)"}`} disabled={!this.state.federated}/>
<FormControlLabel value={"unlisted"} key={"unlisted"} control={<Radio />} label={"Unlisted"} />
<FormControlLabel value={"private"} key={"private"} control={<Radio />} label={"Private (followers only)"} />
<FormControlLabel value={"direct"} key={"direct"} control={<Radio />} label={"Direct"} />