All files / web/modules/admin/editors ChangeArticleStatusButton.tsx

0% Statements 0/24
100% Branches 0/0
0% Functions 0/3
0% Lines 0/19

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58                                                                                                                   
import message from 'antd/lib/message';
import Select from 'antd/lib/select';
import * as React from 'react';
import { Mutation } from 'react-apollo';
import { IArticle } from '../../../../shared';
import { ArticleStatuses } from '../../../../shared/ArticleStatuses';
import ErrorMessage from '../../components/ErrorMessage';
import { SETTINGS_ARTICLES } from '../queries';
import { CHANGE_ARTICLE_STATUS } from './mutations';
 
const Option = Select.Option;
 
const ChangeArticleStatusButton = ({ _id, title, status }: IArticle) => {
  const handleChange = (changeArticleStatus: any) => async (
    value: ArticleStatuses,
  ) => {
    try {
      await changeArticleStatus({ variables: { _id, status: value } });
      message.success(`Status článku "${title}" upraven`);
    } catch (e) {
      message.error(e.message);
    }
  };
 
  return (
    <Mutation
      mutation={CHANGE_ARTICLE_STATUS}
      refetchQueries={[{ query: SETTINGS_ARTICLES }]}
    >
      {(changeArticleStatus, { loading, error }) => {
        if (error) {
          return <ErrorMessage message={error.message} />;
        }
 
        return (
          <Select
            loading={loading}
            value={status}
            style={{ width: 120 }}
            onChange={handleChange(changeArticleStatus)}
          >
            <Option value={ArticleStatuses.new} disabled={true}>
              Nový
            </Option>
            <Option value={ArticleStatuses.updated} disabled={true}>
              Upravený
            </Option>
            <Option value={ArticleStatuses.rejected}>Zamítnutý</Option>
            <Option value={ArticleStatuses.published}>Zveřejněný</Option>
          </Select>
        );
      }}
    </Mutation>
  );
};
 
export default ChangeArticleStatusButton;