'use strict'; import React from 'react'; import GlobalNotificationModel from '../../models/global_notification_model'; import GlobalNotificationActions from '../../actions/global_notification_actions'; import Form from '../ascribe_forms/form'; import Property from '../ascribe_forms/property'; import InputCheckbox from '../ascribe_forms/input_checkbox'; import CollapsibleParagraph from '../ascribe_collapsible/collapsible_paragraph'; import AclProxy from '../acl_proxy'; import CopyrightAssociationForm from '../ascribe_forms/form_copyright_association'; import ApiUrls from '../../constants/api_urls'; import AscribeSpinner from '../ascribe_spinner'; import { getLangText } from '../../utils/lang_utils'; let AccountSettings = React.createClass({ propTypes: { currentUser: React.PropTypes.object.isRequired, loadUser: React.PropTypes.func.isRequired, whitelabel: React.PropTypes.object.isRequired }, handleSuccess(){ this.props.loadUser(true); let notification = new GlobalNotificationModel(getLangText('Settings succesfully updated'), 'success', 5000); GlobalNotificationActions.appendGlobalNotification(notification); }, getFormDataProfile(){ return {'email': this.props.currentUser.email}; }, render() { let content = <AscribeSpinner color='dark-blue' size='lg'/>; let profile = null; if (this.props.currentUser.username) { content = ( <Form url={ApiUrls.users_username} handleSuccess={this.handleSuccess}> <Property name='username' label={getLangText('Username')}> <input type="text" defaultValue={this.props.currentUser.username} placeholder={getLangText('Enter your username')} required/> </Property> <Property name='email' label={getLangText('Email')} overrideForm={true} editable={false}> <input type="text" defaultValue={this.props.currentUser.email} placeholder={getLangText('Enter your username')} required/> </Property> <hr /> </Form> ); profile = ( <AclProxy aclObject={this.props.whitelabel} aclName="acl_view_settings_account_hash"> <Form url={ApiUrls.users_profile} handleSuccess={this.handleSuccess} getFormData={this.getFormDataProfile}> <Property name="hash_locally" className="ascribe-property-collapsible-toggle" style={{paddingBottom: 0}}> <InputCheckbox defaultChecked={this.props.currentUser.profile.hash_locally}> <span> {' ' + getLangText('Enable hash option, e.g. slow connections or to keep piece private')} </span> </InputCheckbox> </Property> </Form> </AclProxy> ); } return ( <CollapsibleParagraph title={getLangText('Account')} defaultExpanded={true}> {content} <AclProxy aclObject={this.props.whitelabel} aclName="acl_view_settings_copyright_association"> <CopyrightAssociationForm currentUser={this.props.currentUser}/> </AclProxy> {profile} </CollapsibleParagraph> ); } }); export default AccountSettings;