aboutsummaryrefslogtreecommitdiff
path: root/src/components/poll/poll.js
diff options
context:
space:
mode:
authorShpuld Shpludson <shp@cock.li>2019-06-20 13:02:04 +0000
committerShpuld Shpludson <shp@cock.li>2019-06-20 13:02:04 +0000
commite5e9bb27f3a0825b695684a503ea7e5e75073734 (patch)
treedbcd99332591acb875221d8609dca74713bbecab /src/components/poll/poll.js
parenteca533aab68322a6bb3b4fd91e62709c66daaff4 (diff)
Move poll state handling to its own module
Diffstat (limited to 'src/components/poll/poll.js')
-rw-r--r--src/components/poll/poll.js35
1 files changed, 17 insertions, 18 deletions
diff --git a/src/components/poll/poll.js b/src/components/poll/poll.js
index ecacbc35..9988070e 100644
--- a/src/components/poll/poll.js
+++ b/src/components/poll/poll.js
@@ -3,26 +3,33 @@ import { forEach, map } from 'lodash'
export default {
name: 'Poll',
- props: ['poll', 'statusId'],
+ props: ['pollId'],
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)
+ mounted () {
+ this.$store.dispatch('trackPoll', this.pollId)
},
destroyed () {
- clearTimeout(this.refreshInterval)
+ this.$store.dispatch('untrackPoll', this.pollId)
},
computed: {
+ 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 Date.now() > Date.parse(this.expiresAt)
},
loggedIn () {
return this.$store.state.users.currentUser
@@ -33,9 +40,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 +59,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 +103,4 @@ export default {
})
}
}
-} \ No newline at end of file
+}