aboutsummaryrefslogtreecommitdiff
path: root/src/modules/statuses.js
diff options
context:
space:
mode:
authorRoger Braun <roger@rogerbraun.net>2016-10-30 16:12:35 +0100
committerRoger Braun <roger@rogerbraun.net>2016-10-30 16:12:35 +0100
commit8630f91a13e8b8f7b56d2cb3dd2b700ad5ebd6f6 (patch)
tree5178ee0f0fedafc10f1994465d72700c0dfd500c /src/modules/statuses.js
parentb96b5eb32731d60f3f56971aae89db818e2742d2 (diff)
Add favorite-button.
Diffstat (limited to 'src/modules/statuses.js')
-rw-r--r--src/modules/statuses.js17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/modules/statuses.js b/src/modules/statuses.js
index d6bdba65..eee368a3 100644
--- a/src/modules/statuses.js
+++ b/src/modules/statuses.js
@@ -1,5 +1,6 @@
import { map, slice, last, intersectionBy, sortBy, unionBy, toInteger, groupBy, differenceBy, each, find } from 'lodash'
import moment from 'moment'
+import apiService from '../services/api/api.service.js'
const defaultState = {
allStatuses: [],
@@ -104,6 +105,18 @@ const updateTimestampsInStatuses = (statuses) => {
const statuses = {
state: defaultState,
+ actions: {
+ favorite ({ rootState, commit }, status) {
+ // Optimistic favoriting...
+ commit('setFavorited', { status, value: true })
+ apiService.favorite({ id: status.id, credentials: rootState.users.currentUser.credentials })
+ },
+ unfavorite ({ rootState, commit }, status) {
+ // Optimistic favoriting...
+ commit('setFavorited', { status, value: false })
+ apiService.unfavorite({ id: status.id, credentials: rootState.users.currentUser.credentials })
+ }
+ },
mutations: {
addNewStatuses (state, { statuses, showImmediately = false, timeline }) {
state.timelines[timeline] = addStatusesToTimeline(statuses, showImmediately, state.timelines[timeline])
@@ -118,6 +131,10 @@ const statuses = {
updateTimestamps (state) {
updateTimestampsInStatuses(state.allStatuses)
},
+ setFavorited (state, { status, value }) {
+ const newStatus = find(state.allStatuses, status)
+ newStatus.favorited = value
+ },
setNsfw (state, { id, nsfw }) {
// For now, walk through all the statuses because the stuff might be in the replied_to_status
// TODO: Save the replied_tos as references.