2016-12-15 01:06:14 +01:00
|
|
|
import React from 'react'
|
|
|
|
import {connect} from 'react-redux'
|
|
|
|
|
|
|
|
import { Message, Icon, Button} from 'semantic-ui-react'
|
|
|
|
import { browserHistory} from 'react-router'
|
|
|
|
|
|
|
|
import * as Actions from '../actions'
|
2016-12-17 06:26:04 +01:00
|
|
|
import {Status, StatusError} from '../constants'
|
2016-12-15 01:06:14 +01:00
|
|
|
|
|
|
|
const mapStateToProps = (state) => ({
|
2016-12-17 06:26:04 +01:00
|
|
|
status: state.status
|
2016-12-15 01:06:14 +01:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
const mapDispatchToProps = dispatch => ({
|
2016-12-17 16:21:00 +01:00
|
|
|
onSave: () => dispatch(Actions.save()),
|
|
|
|
onReset: () => dispatch(Actions.reset())
|
2016-12-15 01:06:14 +01:00
|
|
|
})
|
|
|
|
|
|
|
|
const SaveStatus = (props) => {
|
2016-12-17 06:26:04 +01:00
|
|
|
if (props.status.type == Status.SAVING) return (
|
2016-12-15 01:06:14 +01:00
|
|
|
<Message size='tiny' floating compact icon>
|
|
|
|
<Icon name='circle notched' loading />
|
|
|
|
<Message.Content>
|
|
|
|
<Message.Header>Saving diff</Message.Header>
|
|
|
|
</Message.Content>
|
|
|
|
</Message>
|
|
|
|
)
|
2016-12-17 06:26:04 +01:00
|
|
|
if (props.status.type == Status.LOADING) return (
|
|
|
|
<Message size='tiny' floating compact icon>
|
|
|
|
<Icon name='circle notched' loading />
|
|
|
|
<Message.Content>
|
|
|
|
<Message.Header>Loading diff</Message.Header>
|
|
|
|
</Message.Content>
|
|
|
|
</Message>
|
|
|
|
)
|
|
|
|
else if (props.status.hasError && props.status.errorType == StatusError.SAVE_ERROR) return (
|
2016-12-15 01:06:14 +01:00
|
|
|
<Message size='tiny' floating compact icon>
|
|
|
|
<Icon name='exclamation' />
|
|
|
|
<Message.Content>
|
|
|
|
<Message.Header>Error saving diff</Message.Header>
|
2016-12-17 06:26:04 +01:00
|
|
|
{props.status.error.message}
|
2016-12-17 16:21:00 +01:00
|
|
|
<br/>
|
2016-12-17 06:26:04 +01:00
|
|
|
<Button onClick={props.onSave}>Retry</Button>
|
2016-12-15 01:06:14 +01:00
|
|
|
</Message.Content>
|
2016-12-17 06:26:04 +01:00
|
|
|
</Message>
|
|
|
|
)
|
|
|
|
else if (props.status.hasError && props.status.errorType == StatusError.LOAD_ERROR) return (
|
|
|
|
<Message size='tiny' floating compact icon>
|
|
|
|
<Icon name='exclamation' />
|
|
|
|
<Message.Content>
|
|
|
|
<Message.Header>Error loading diff</Message.Header>
|
2016-12-17 16:21:00 +01:00
|
|
|
{props.status.error.message}
|
|
|
|
<br/>
|
|
|
|
<Button onClick={props.onReset}>New Diff</Button>
|
2016-12-17 06:26:04 +01:00
|
|
|
</Message.Content>
|
|
|
|
</Message>
|
2016-12-15 01:06:14 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
else return ( <div></div> )
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export default connect(mapStateToProps, mapDispatchToProps)(SaveStatus)
|