// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import React from 'react'; import {FormattedMessage} from 'react-intl'; import {ChannelCategory} from 'mattermost-redux/types/channel_categories'; import {trackEvent} from 'actions/telemetry_actions'; import QuickInput from 'components/quick_input'; import {localizeMessage} from 'utils/utils'; import '../category_modal.scss'; import GenericModal from 'components/generic_modal'; type Props = { onHide: () => void; currentTeamId: string; categoryId?: string; initialCategoryName?: string; channelIdsToAdd?: string[]; actions: { createCategory: (teamId: string, displayName: string, channelIds?: string[] | undefined) => {data: ChannelCategory}; renameCategory: (categoryId: string, newName: string) => void; }; }; type State = { categoryName: string; } export default class EditCategoryModal extends React.PureComponent { constructor(props: Props) { super(props); this.state = { categoryName: props.initialCategoryName || '', }; } handleClear = () => { this.setState({categoryName: ''}); } handleChange = (e: React.ChangeEvent) => { this.setState({categoryName: e.target.value}); } handleCancel = () => { this.handleClear(); } handleConfirm = () => { if (this.props.categoryId) { this.props.actions.renameCategory(this.props.categoryId, this.state.categoryName); } else { this.props.actions.createCategory(this.props.currentTeamId, this.state.categoryName, this.props.channelIdsToAdd); trackEvent('ui', 'ui_sidebar_created_category'); } } isConfirmDisabled = () => { return !this.state.categoryName || (Boolean(this.props.initialCategoryName) && this.props.initialCategoryName === this.state.categoryName); } getText = () => { let modalHeaderText; let editButtonText; let helpText; if (this.props.categoryId) { modalHeaderText = ( ); editButtonText = ( ); } else { modalHeaderText = ( ); editButtonText = ( ); helpText = ( ); } return { modalHeaderText, editButtonText, helpText, }; } render() { const { modalHeaderText, editButtonText, helpText, } = this.getText(); return ( {Boolean(helpText) && {helpText} } ); } }