// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import ConfirmModal from 'components/confirm_modal.jsx'; import {toTitleCase} from 'utils/utils.jsx'; import React from 'react'; import PropTypes from 'prop-types'; import {FormattedMessage} from 'react-intl'; import {Preferences} from 'mattermost-redux/constants'; export default class ResetStatusModal extends React.PureComponent { static propTypes = { /* * The user's preference for whether their status is automatically reset */ autoResetPref: PropTypes.string, actions: PropTypes.shape({ /* * Function to get and then reset the user's status if needed */ autoResetStatus: PropTypes.func.isRequired, /* * Function to set the status for a user */ setStatus: PropTypes.func.isRequired, /* * Function to save user preferences */ savePreferences: PropTypes.func.isRequired }).isRequired } constructor(props) { super(props); this.state = { show: false, currentUserStatus: {} }; } componentDidMount() { this.props.actions.autoResetStatus().then( (status) => { const statusIsManual = status.manual; const autoResetPrefNotSet = this.props.autoResetPref === ''; this.setState({ currentUserStatus: status, // Set in state until status refactor where we store 'manual' field in redux show: Boolean(statusIsManual && autoResetPrefNotSet) }); } ); } onConfirm = (checked) => { this.setState({show: false}); const newStatus = {...this.state.currentUserStatus}; newStatus.status = 'online'; this.props.actions.setStatus(newStatus); if (checked) { const pref = {category: Preferences.CATEGORY_AUTO_RESET_MANUAL_STATUS, user_id: newStatus.user_id, name: newStatus.user_id, value: 'true'}; this.props.actions.savePreferences(pref.user_id, [pref]); } } onCancel = (checked) => { this.setState({show: false}); if (checked) { const status = {...this.state.currentUserStatus}; const pref = {category: Preferences.CATEGORY_AUTO_RESET_MANUAL_STATUS, user_id: status.user_id, name: status.user_id, value: 'false'}; this.props.actions.savePreferences(pref.user_id, [pref]); } } render() { const userStatus = toTitleCase(this.state.currentUserStatus.status || ''); const manualStatusTitle = ( ); const manualStatusMessage = ( ); const manualStatusButton = ( ); const manualStatusCancel = ( ); const manualStatusCheckbox = ( ); return ( ); } }