53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
import { requestFollow, requestUnfollow } from '../../services/follow_manipulate/follow_manipulate'
|
|
export default {
|
|
props: ['user', 'labelFollowing', 'buttonClass'],
|
|
data () {
|
|
return {
|
|
inProgress: false
|
|
}
|
|
},
|
|
computed: {
|
|
isPressed () {
|
|
return this.inProgress || this.user.following
|
|
},
|
|
title () {
|
|
if (this.inProgress || this.user.following) {
|
|
return this.$t('user_card.follow_unfollow')
|
|
} else if (this.user.requested) {
|
|
return this.$t('user_card.follow_again')
|
|
} else {
|
|
return this.$t('user_card.follow')
|
|
}
|
|
},
|
|
label () {
|
|
if (this.inProgress) {
|
|
return this.$t('user_card.follow_progress')
|
|
} else if (this.user.following) {
|
|
return this.labelFollowing || this.$t('user_card.following')
|
|
} else if (this.user.requested) {
|
|
return this.$t('user_card.follow_sent')
|
|
} else {
|
|
return this.$t('user_card.follow')
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
onClick () {
|
|
this.user.following ? this.unfollow() : this.follow()
|
|
},
|
|
follow () {
|
|
this.inProgress = true
|
|
requestFollow(this.user, this.$store).then(() => {
|
|
this.inProgress = false
|
|
})
|
|
},
|
|
unfollow () {
|
|
const store = this.$store
|
|
this.inProgress = true
|
|
requestUnfollow(this.user, store).then(() => {
|
|
this.inProgress = false
|
|
store.commit('removeStatus', { timeline: 'friends', userId: this.user.id })
|
|
})
|
|
}
|
|
}
|
|
}
|