import React from 'react' import styles from './index.scss' import * as ycore from 'ycore' import classnames from 'classnames' class LikeBTN extends React.PureComponent { constructor(props){ super(props), this.state = { liked: this.props.liked, likes: this.props.count, type: (this.props.liked? 'dislike' : 'like' ), clicked: false } } SumLike(){ this.setState({ likes: (parseInt(this.state.likes) + 1), type: 'dislike' }) setTimeout(() => {this.setState({ liked: true })}, 500) } RestLike(){ this.setState({ likes: (parseInt(this.state.likes) - 1), type: 'like' }) setTimeout(() => {this.setState({ liked: false })}, 500) } dispatchLike(e){ const { type } = this.state ycore.yconsole.log(`Dispatch ${type} to post id => ${e}`) this.setState({ clicked: true }) setTimeout(() => { this.setState({ clicked: false }) }, 500); ycore.ActionPost('like', e, null, (exception, response) => { if (exception) { ycore.notifyError(response) return } if (type == 'like') { this.SumLike() } if (type == 'dislike') { this.RestLike() } }) } render(){ const { id } = this.props const { likes, liked, clicked } = this.state if (!id){ ycore.yconsole.error('[LikeBTN] No post id provided!') return null } return(
{likes}