import React from 'react' import { connect } from 'react-redux' import { translate } from 'react-i18next' import { PageWrapper, PageTitle, PageContent } from 'tracim_frontend_lib' import { getWorkspaceDetail, getWorkspaceMemberList, getWorkspaceRecentActivityList, getWorkspaceReadStatusList } from '../action-creator.async.js' import { newFlashMessage, setWorkspaceDetail, setWorkspaceMemberList, setWorkspaceRecentActivityList, setWorkspaceReadStatusList } from '../action-creator.sync.js' import { ROLE } from '../helper.js' import ContentTypeBtn from '../component/Dashboard/ContentTypeBtn.jsx' import RecentActivity from '../component/Dashboard/RecentActivity.jsx' import MemberList from '../component/Dashboard/MemberList.jsx' class Dashboard extends React.Component { constructor (props) { super(props) this.state = { workspaceIdInUrl: props.match.params.idws ? parseInt(props.match.params.idws) : null, // this is used to avoid handling the parseInt everytime displayNewMemberDashboard: false, displayNotifBtn: false, displayWebdavBtn: false, displayCalendarBtn: false } } async componentDidMount () { const { props, state } = this const fetchWorkspaceDetail = await props.dispatch(getWorkspaceDetail(props.user, state.workspaceIdInUrl)) switch (fetchWorkspaceDetail.status) { case 200: props.dispatch(setWorkspaceDetail(fetchWorkspaceDetail.json)); break default: props.dispatch(newFlashMessage(props.t('An error has happened when fetching workspace detail'), 'warning')); break } const fetchWorkspaceMemberList = await props.dispatch(getWorkspaceMemberList(props.user, state.workspaceIdInUrl)) switch (fetchWorkspaceMemberList.status) { case 200: props.dispatch(setWorkspaceMemberList(fetchWorkspaceMemberList.json)); break default: props.dispatch(newFlashMessage(props.t('An error has happened while fetching member list'), 'warning')); break } const fetchWorkspaceRecentActivityList = await props.dispatch(getWorkspaceRecentActivityList(props.user, state.workspaceIdInUrl)) switch (fetchWorkspaceRecentActivityList.status) { case 200: props.dispatch(setWorkspaceRecentActivityList(fetchWorkspaceRecentActivityList.json)); break default: props.dispatch(newFlashMessage(props.t('An error has happened while fetching recent activity list'), 'warning')); break } const fetchWorkspaceReadStatusList = await props.dispatch(getWorkspaceReadStatusList(props.user, state.workspaceIdInUrl)) switch (fetchWorkspaceReadStatusList.status) { case 200: props.dispatch(setWorkspaceReadStatusList(fetchWorkspaceReadStatusList.json)); break default: props.dispatch(newFlashMessage(props.t('An error has happened while fetching read status list'), 'warning')); break } } handleToggleNewMemberDashboard = () => this.setState(prevState => ({ displayNewMemberDashboard: !prevState.displayNewMemberDashboard })) handleToggleNotifBtn = () => this.setState(prevState => ({ displayNotifBtn: !prevState.displayNotifBtn })) handleToggleWebdavBtn = () => this.setState(prevState => ({ displayWebdavBtn: !prevState.displayWebdavBtn })) handleToggleCalendarBtn = () => this.setState(prevState => ({ displayCalendarBtn: !prevState.displayCalendarBtn })) render () { const { props, state } = this return (