show assigned badge
This commit is contained in:
		
							parent
							
								
									101dfc7692
								
							
						
					
					
						commit
						5430e783cc
					
				| @ -86,6 +86,7 @@ export const connectMyBadges = ({ username, password }) => (dispatch, getState) | ||||
|   .then(res => { | ||||
|     var user = getState().auth.user; | ||||
|     user.badge = res.data.account; | ||||
|     user.badges = res.data.badges; | ||||
|     dispatch({ | ||||
|       type: MYBADGES_CONNECT, | ||||
|       payload: user | ||||
| @ -109,6 +110,7 @@ export const disconnectMyBadges = () => (dispatch, getState) => { | ||||
|   .then(res => { | ||||
|     var user = getState().auth.user; | ||||
|     user.badge = null; | ||||
|     user.badges = null; | ||||
|     dispatch({ | ||||
|       type: MYBADGES_DISCONNECT, | ||||
|       payload: user | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| import { TUTORIAL_PROGRESS, GET_TUTORIAL, GET_TUTORIALS, TUTORIAL_SUCCESS, TUTORIAL_ERROR, TUTORIAL_CHANGE, TUTORIAL_XML, TUTORIAL_ID, TUTORIAL_STEP } from './types'; | ||||
| import { MYBADGES_DISCONNECT, TUTORIAL_PROGRESS, GET_TUTORIAL, GET_TUTORIALS, TUTORIAL_SUCCESS, TUTORIAL_ERROR, TUTORIAL_CHANGE, TUTORIAL_XML, TUTORIAL_ID, TUTORIAL_STEP } from './types'; | ||||
| 
 | ||||
| import axios from 'axios'; | ||||
| import { returnErrors, returnSuccess } from './messageActions'; | ||||
| @ -60,6 +60,12 @@ export const assigneBadge = (id) => (dispatch, getState) => { | ||||
|   axios.put(`${process.env.REACT_APP_BLOCKLY_API}/user/badge/${id}`) | ||||
|     .then(res => { | ||||
|       var badge = res.data.badge; | ||||
|       var user = getState().auth.user; | ||||
|       user.badges.push(badge._id); | ||||
|       dispatch({ | ||||
|         type: MYBADGES_DISCONNECT, | ||||
|         payload: user | ||||
|       }); | ||||
|       dispatch(returnSuccess(badge, res.status, 'ASSIGNE_BADGE_SUCCESS')); | ||||
|     }) | ||||
|     .catch(err => { | ||||
| @ -122,6 +128,7 @@ export const tutorialCheck = (status, step) => (dispatch, getState) => { | ||||
|     payload: tutorialsStatus | ||||
|   }); | ||||
|   dispatch(tutorialChange()); | ||||
|   dispatch(returnSuccess('','','TUTORIAL_CHECK_SUCCESS')); | ||||
| }; | ||||
| 
 | ||||
| export const storeTutorialXml = (code) => (dispatch, getState) => { | ||||
|  | ||||
| @ -5,6 +5,25 @@ import { assigneBadge } from '../../actions/tutorialActions'; | ||||
| 
 | ||||
| import Dialog from '../Dialog'; | ||||
| 
 | ||||
| import { Link } from 'react-router-dom'; | ||||
| 
 | ||||
| import { withStyles } from '@material-ui/core/styles'; | ||||
| import Paper from '@material-ui/core/Paper'; | ||||
| import Typography from '@material-ui/core/Typography'; | ||||
| import Avatar from '@material-ui/core/Avatar'; | ||||
| 
 | ||||
| const styles = (theme) => ({ | ||||
|   link: { | ||||
|     color: theme.palette.primary.main, | ||||
|     textDecoration: 'none', | ||||
|     '&:hover': { | ||||
|       color: theme.palette.primary.main, | ||||
|       textDecoration: 'underline' | ||||
|     } | ||||
|   } | ||||
| }); | ||||
| 
 | ||||
| 
 | ||||
| class Badge extends Component { | ||||
| 
 | ||||
|   state = { | ||||
| @ -14,20 +33,21 @@ class Badge extends Component { | ||||
|   }; | ||||
| 
 | ||||
|   componentDidUpdate(props){ | ||||
|     if(this.props.tutorial.badge){ | ||||
|       if(this.isSuccess()){ | ||||
|       // is connected to MyBadges?
 | ||||
|     if(this.props.message.id === 'TUTORIAL_CHECK_SUCCESS'){ | ||||
|       if(this.props.tutorial.badge){ | ||||
|         // is connected to MyBadges?
 | ||||
|         if(this.props.isAuthenticated && this.props.user && this.props.user.badge){ | ||||
|           // if(!this.props.user.badges.include(this.props.tutorial.badge)){
 | ||||
|             this.props.assigneBadge(this.props.tutorial.badge); | ||||
|           if(this.props.user.badges && !this.props.user.badges.includes(this.props.tutorial.badge)){ | ||||
|             if(this.isSuccess()){ | ||||
|               this.props.assigneBadge(this.props.tutorial.badge); | ||||
|             } | ||||
|           } | ||||
|         // }
 | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     if(props.message !== this.props.message){ | ||||
|       if(this.props.message.id === 'ASSIGNE_BADGE_SUCCESS'){ | ||||
|         alert('Badge '+props.message.msg.name); | ||||
|         this.setState({title: '', content: '', open: true}); | ||||
|         this.setState({title: `Badge: ${this.props.message.msg.name}`, content: `Herzlichen Glückwunsch! Du hast den Badge ${this.props.message.msg.name} erhalten.`, open: true}); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| @ -50,6 +70,7 @@ class Badge extends Component { | ||||
|   render() { | ||||
|     return ( | ||||
|       <Dialog | ||||
|         style={{ zIndex: 99999999 }} | ||||
|         open={this.state.open} | ||||
|         title={this.state.title} | ||||
|         content={this.state.content} | ||||
| @ -58,7 +79,17 @@ class Badge extends Component { | ||||
|         button={'Schließen'} | ||||
|       > | ||||
|         <div style={{ marginTop: '10px' }}> | ||||
| 
 | ||||
|           <Paper style={{textAlign: 'center'}}> | ||||
|             {this.props.message.msg.image && this.props.message.msg.image.path ? | ||||
|               <Avatar src={`${process.env.REACT_APP_MYBADGES}/media/${this.props.message.msg.image.path}`} style={{width: '200px', height: '200px', marginLeft: 'auto', marginRight: 'auto'}}/> | ||||
|             : <Avatar style={{width: '200px', height: '200px', marginLeft: 'auto', marginRight: 'auto'}}></Avatar>} | ||||
|             <Typography variant='h6' style={{display: 'flex', cursor: 'default', paddingBottom: '6px'}}> | ||||
|               <div style={{flexGrow:1, marginLeft: '10px', marginRight: '10px'}}>{this.props.message.msg.name}</div> | ||||
|             </Typography> | ||||
|           </Paper> | ||||
|           <Typography style={{marginTop: '10px'}}> | ||||
|             Eine Übersicht über alle erhaltenen Badges im Kontext Blockly for senseBox findest du <Link to={'/user/badge'} className={this.props.classes.link}>hier</Link>. | ||||
|           </Typography> | ||||
|         </div> | ||||
|       </Dialog> | ||||
|     ); | ||||
| @ -71,7 +102,8 @@ Badge.propTypes = { | ||||
|   change: PropTypes.number.isRequired, | ||||
|   tutorial: PropTypes.object.isRequired, | ||||
|   user: PropTypes.object, | ||||
|   isAuthenticated: PropTypes.bool.isRequired | ||||
|   isAuthenticated: PropTypes.bool.isRequired, | ||||
|   message: PropTypes.object.isRequired | ||||
| }; | ||||
| 
 | ||||
| const mapStateToProps = state => ({ | ||||
| @ -79,7 +111,8 @@ const mapStateToProps = state => ({ | ||||
|   status: state.tutorial.status, | ||||
|   tutorial: state.tutorial.tutorials[0], | ||||
|   user: state.auth.user, | ||||
|   isAuthenticated: state.auth.isAuthenticated | ||||
|   isAuthenticated: state.auth.isAuthenticated, | ||||
|   message: state.message | ||||
| }); | ||||
| 
 | ||||
| export default connect(mapStateToProps, { assigneBadge })(Badge); | ||||
| export default connect(mapStateToProps, { assigneBadge })(withStyles(styles, { withTheme: true })(Badge)); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user