aboutsummaryrefslogtreecommitdiff
path: root/src/components/poll/poll.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/poll/poll.js')
-rw-r--r--src/components/poll/poll.js39
1 files changed, 22 insertions, 17 deletions
diff --git a/src/components/poll/poll.js b/src/components/poll/poll.js
index ecacbc35..98db5582 100644
--- a/src/components/poll/poll.js
+++ b/src/components/poll/poll.js
@@ -3,26 +3,39 @@ import { forEach, map } from 'lodash'
export default {
name: 'Poll',
- props: ['poll', 'statusId'],
+ props: ['basePoll'],
components: { Timeago },
data () {
return {
loading: false,
- choices: [],
- refreshInterval: null
+ choices: []
}
},
created () {
- this.refreshInterval = setTimeout(this.refreshPoll, 30 * 1000)
- // Initialize choices to booleans and set its length to match options
- this.choices = this.poll.options.map(_ => false)
+ if (!this.$store.state.polls.pollsObject[this.pollId]) {
+ this.$store.dispatch('mergeOrAddPoll', this.basePoll)
+ }
+ this.$store.dispatch('trackPoll', this.pollId)
},
destroyed () {
- clearTimeout(this.refreshInterval)
+ this.$store.dispatch('untrackPoll', this.pollId)
},
computed: {
+ pollId () {
+ return this.basePoll.id
+ },
+ poll () {
+ const storePoll = this.$store.state.polls.pollsObject[this.pollId]
+ return storePoll || {}
+ },
+ options () {
+ return (this.poll && this.poll.options) || []
+ },
+ expiresAt () {
+ return (this.poll && this.poll.expires_at) || 0
+ },
expired () {
- return Date.now() > Date.parse(this.poll.expires_at)
+ return (this.poll && this.poll.expired) || false
},
loggedIn () {
return this.$store.state.users.currentUser
@@ -33,9 +46,6 @@ export default {
totalVotesCount () {
return this.poll.votes_count
},
- expiresAt () {
- return Date.parse(this.poll.expires_at).toLocaleString()
- },
containerClass () {
return {
loading: this.loading
@@ -55,11 +65,6 @@ export default {
}
},
methods: {
- refreshPoll () {
- if (this.expired) return
- this.fetchPoll()
- this.refreshInterval = setTimeout(this.refreshPoll, 30 * 1000)
- },
percentageForOption (count) {
return this.totalVotesCount === 0 ? 0 : Math.round(count / this.totalVotesCount * 100)
},
@@ -104,4 +109,4 @@ export default {
})
}
}
-} \ No newline at end of file
+}