import React from 'react'; import {Button, Col, Form} from 'react-bootstrap'; import style from './GeneralSettings.module.css'; import GlobalInfos from '../../GlobalInfos'; import InfoHeaderItem from '../../elements/InfoHeaderItem/InfoHeaderItem'; import {faArchive, faBalanceScaleLeft, faRulerVertical} from '@fortawesome/free-solid-svg-icons'; import {faAddressCard} from '@fortawesome/free-regular-svg-icons'; import {version} from '../../../package.json'; /** * Component for Generalsettings tag on Settingspage * handles general settings of mediacenter which concerns to all pages */ class GeneralSettings extends React.Component { constructor(props) { super(props); this.state = { passwordsupport: false, tmdbsupport: null, videopath: '', tvshowpath: '', mediacentername: '', password: '', videonr: null, dbsize: null, difftagnr: null, tagsadded: null }; } componentDidMount() { this.loadSettings(); } render() { const themeStyle = GlobalInfos.getThemeStyle(); return ( <>
{ e.preventDefault(); this.saveSettings(); }}> Video Path this.setState({videopath: ee.target.value})}/> TV Show Path this.setState({tvshowpath: e.target.value})}/> { this.setState({passwordsupport: !this.state.passwordsupport}); }} /> {this.state.passwordsupport ? Password this.setState({password: e.target.value})}/> : null } { this.setState({tmdbsupport: !this.state.tmdbsupport}); }} /> { GlobalInfos.enableDarkTheme(!GlobalInfos.isDarkTheme()); this.forceUpdate(); // todo initiate rerender }} /> The name of the Mediacenter this.setState({mediacentername: e.target.value})}/>
Version: {version}
); } /** * inital load of already specified settings from backend */ loadSettings() { const updateRequest = new FormData(); updateRequest.append('action', 'loadGeneralSettings'); fetch('/api/settings.php', {method: 'POST', body: updateRequest}) .then((response) => response.json() .then((result) => { console.log(result); this.setState({ videopath: result.video_path, tvshowpath: result.episode_path, mediacentername: result.mediacenter_name, password: result.password, passwordsupport: result.passwordEnabled, tmdbsupport: result.TMDB_grabbing, videonr: result.videonr, dbsize: result.dbsize, difftagnr: result.difftagnr, tagsadded: result.tagsadded }); })); } /** * save the selected and typed settings to the backend */ saveSettings() { const updateRequest = new FormData(); updateRequest.append('action', 'saveGeneralSettings'); updateRequest.append('password', this.state.passwordsupport ? this.state.password : '-1'); updateRequest.append('videopath', this.state.videopath); updateRequest.append('tvshowpath', this.state.tvshowpath); updateRequest.append('mediacentername', this.state.mediacentername); updateRequest.append('tmdbsupport', this.state.tmdbsupport); updateRequest.append('darkmodeenabled', GlobalInfos.isDarkTheme().toString()); fetch('/api/settings.php', {method: 'POST', body: updateRequest}) .then((response) => response.json() .then((result) => { if (result.success) { console.log('successfully saved settings'); // todo 2020-07-10: popup success } else { console.log('failed to save settings'); // todo 2020-07-10: popup error } })); } } export default GeneralSettings;