import React from 'react' import { connect } from 'react-redux' import UserInfo from '../component/Account/UserInfo.jsx' import MenuSubComponent from '../component/Account/MenuSubComponent.jsx' import PersonalData from '../component/Account/PersonalData.jsx' // import Calendar from '../component/Account/Calendar.jsx' import Notification from '../component/Account/Notification.jsx' import Password from '../component/Account/Password.jsx' import Timezone from '../component/Account/Timezone.jsx' import { Delimiter, PageWrapper, PageTitle, PageContent } from 'tracim_frontend_lib' import { updateUserWorkspaceSubscriptionNotif } from '../action-creator.sync.js' import { getTimezone, getUserRole } from '../action-creator.async.js' import { translate } from 'react-i18next' class Account extends React.Component { constructor (props) { super(props) this.state = { subComponentMenu: [{ name: 'personalData', menuLabel: 'Mon profil', active: true }, { name: 'notification', menuLabel: 'Espace de travail & Notifications', active: false }, { name: 'password', menuLabel: 'Mot de passe', active: false }, { name: 'timezone', menuLabel: 'Fuseau Horaire', active: false }] // { // name: 'calendar', // menuLabel: 'Calendrier personnel', // active: false // }] } } componentDidMount () { const { user, workspaceList, timezone, dispatch } = this.props if (user.id !== -1 && workspaceList.length > 0) dispatch(getUserRole(user)) if (timezone.length === 0) dispatch(getTimezone()) } componentDidUpdate () { const { user, workspaceList, dispatch } = this.props if (user.id !== -1 && workspaceList.length > 0 && workspaceList.some(ws => ws.role === undefined)) dispatch(getUserRole(user)) } handleClickSubComponentMenuItem = subMenuItemName => this.setState(prev => ({ subComponentMenu: prev.subComponentMenu.map(m => ({...m, active: m.name === subMenuItemName})) })) handleChangeSubscriptionNotif = (workspaceId, subscriptionNotif) => this.props.dispatch(updateUserWorkspaceSubscriptionNotif(workspaceId, subscriptionNotif)) handleChangeTimezone = newTimezone => console.log('(NYI) new timezone : ', newTimezone) render () { const subComponent = (() => { switch (this.state.subComponentMenu.find(({active}) => active).name) { case 'personalData': return // case 'calendar': // return case 'notification': return case 'password': return case 'timezone': return } })() return (
{ subComponent }
) } } const mapStateToProps = ({ user, workspaceList, timezone }) => ({ user, workspaceList, timezone }) export default connect(mapStateToProps)(translate()(Account))