From d06b91d8bc410385fc3d9a203cc9d03d8030f597 Mon Sep 17 00:00:00 2001 From: Marquis Kurt Date: Sat, 27 Apr 2019 13:21:24 -0400 Subject: [PATCH] Disable public visibility in Settings when defederated --- src/pages/Settings.tsx | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/pages/Settings.tsx b/src/pages/Settings.tsx index 76b7720..5fe8e5c 100644 --- a/src/pages/Settings.tsx +++ b/src/pages/Settings.tsx @@ -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 { @@ -61,7 +62,8 @@ class SettingsPage extends Component { 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 { 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 { value={this.state.defaultVisibility} onChange={(e, value) => this.changeVisibility(value as Visibility)} > - } label={"Public"} /> + } label={`Public ${this.state.federated? "": "(disabled by provider)"}`} disabled={!this.state.federated}/> } label={"Unlisted"} /> } label={"Private (followers only)"} /> } label={"Direct"} />