1import { withStyles } from '@material-ui/core/styles'
2import gql from 'graphql-tag'
3import React from 'react'
4import Author from '../Author'
5import Date from '../Date'
6import Label from '../Label'
7
8const styles = theme => ({
9 main: {
10 ...theme.typography.body2
11 },
12})
13
14const LabelChange = ({op, classes}) => {
15 const {added, removed} = op
16 return (
17 <div className={classes.main}>
18 <Author author={op.author} bold />
19 { added.length > 0 && <span> added the </span>}
20 { added.map((label, index) => <Label key={index} label={label} />)}
21 { (added.length > 0 && removed.length > 0) && <span> and</span>}
22 { removed.length > 0 && <span> removed the </span>}
23 { removed.map((label, index) => <Label key={index} label={label} />)}
24 <span> label{ (added.length + removed.length > 1) && 's'} </span>
25 <Date date={op.date} />
26 </div>
27 )
28}
29
30LabelChange.fragment = gql`
31 fragment LabelChange on Operation {
32 ... on LabelChangeOperation {
33 date
34 author {
35 name
36 email
37 }
38 added
39 removed
40 }
41 }
42`
43
44export default withStyles(styles)(LabelChange)