From d05fcfa1a84d8f8089e1d691e8bd3e0d0960139c Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Thu, 14 Jun 2018 05:00:11 -0400 Subject: [PATCH 1/2] Add unretweet support --- src/components/retweet_button/retweet_button.js | 2 ++ src/services/api/api.service.js | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/src/components/retweet_button/retweet_button.js b/src/components/retweet_button/retweet_button.js index 4a43542d..b5b6422c 100644 --- a/src/components/retweet_button/retweet_button.js +++ b/src/components/retweet_button/retweet_button.js @@ -9,6 +9,8 @@ const RetweetButton = { retweet () { if (!this.status.repeated) { this.$store.dispatch('retweet', {id: this.status.id}) + } else { + this.$store.dispatch('unretweet', {id: this.status.id}) } this.animated = true setTimeout(() => { diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js index d1659784..adf598b7 100644 --- a/src/services/api/api.service.js +++ b/src/services/api/api.service.js @@ -8,6 +8,7 @@ const TAG_TIMELINE_URL = '/api/statusnet/tags/timeline' const FAVORITE_URL = '/api/favorites/create' const UNFAVORITE_URL = '/api/favorites/destroy' const RETWEET_URL = '/api/statuses/retweet' +const UNRETWEET_URL = '/api/statuses/unretweet' const STATUS_UPDATE_URL = '/api/statuses/update.json' const STATUS_DELETE_URL = '/api/statuses/destroy' const STATUS_URL = '/api/statuses/show' @@ -358,6 +359,13 @@ const retweet = ({ id, credentials }) => { }) } +const unretweet = ({ id, credentials }) => { + return fetch(`${UNRETWEET_URL}/${id}.json`, { + headers: authHeaders(credentials), + method: 'POST' + }) +} + const postStatus = ({credentials, status, spoilerText, visibility, mediaIds, inReplyToStatusId}) => { const idsText = mediaIds.join(',') const form = new FormData() @@ -455,6 +463,7 @@ const apiService = { favorite, unfavorite, retweet, + unretweet, postStatus, deleteStatus, uploadMedia, From 556eb4b8a33346ecfee57ed2b3e0f65584ff8359 Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Thu, 14 Jun 2018 17:17:36 -0400 Subject: [PATCH 2/2] add unretweet action to statuses.js --- src/components/retweet_button/retweet_button.js | 1 + src/modules/statuses.js | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/components/retweet_button/retweet_button.js b/src/components/retweet_button/retweet_button.js index b5b6422c..9833e8b2 100644 --- a/src/components/retweet_button/retweet_button.js +++ b/src/components/retweet_button/retweet_button.js @@ -22,6 +22,7 @@ const RetweetButton = { classes () { return { 'retweeted': this.status.repeated, + 'retweeted-empty': !this.status.repeated, 'animate-spin': this.animated } } diff --git a/src/modules/statuses.js b/src/modules/statuses.js index b493c212..291ab53c 100644 --- a/src/modules/statuses.js +++ b/src/modules/statuses.js @@ -388,6 +388,10 @@ const statuses = { commit('setRetweeted', { status, value: true }) apiService.retweet({ id: status.id, credentials: rootState.users.currentUser.credentials }) }, + unretweet ({ rootState, commit }, status) { + commit('setRetweeted', { status, value: false }) + apiService.unretweet({ id: status.id, credentials: rootState.users.currentUser.credentials }) + }, queueFlush ({ rootState, commit }, { timeline, id }) { commit('queueFlush', { timeline, id }) }