aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiayi Zheng <thebluber@gmail.com>2016-11-13 16:42:56 +0100
committerJiayi Zheng <thebluber@gmail.com>2016-11-13 16:42:56 +0100
commit242ae8e91b1586aee185873b2f2d10bb52495ef3 (patch)
tree80da97ba9cf26c48e28860ba15ad12d250c027f0
parentee009f63dd2f4856f8daf29d66301f67ab8f2021 (diff)
Add retweet button component
Expand API service for retweet
-rw-r--r--src/components/retweet_button/retweet_button.js16
-rw-r--r--src/components/retweet_button/retweet_button.vue18
-rw-r--r--src/components/status/status.js2
-rw-r--r--src/components/status/status.vue4
-rw-r--r--src/services/api/api.service.js9
5 files changed, 46 insertions, 3 deletions
diff --git a/src/components/retweet_button/retweet_button.js b/src/components/retweet_button/retweet_button.js
new file mode 100644
index 00000000..42da2531
--- /dev/null
+++ b/src/components/retweet_button/retweet_button.js
@@ -0,0 +1,16 @@
+const RetweetButton = {
+ props: [ 'status' ],
+ methods: {
+ retweet () {
+ }
+ },
+ computed: {
+ classes () {
+ return {
+ 'retweeted': this.status.repeated
+ }
+ }
+ }
+}
+
+export default RetweetButton
diff --git a/src/components/retweet_button/retweet_button.vue b/src/components/retweet_button/retweet_button.vue
new file mode 100644
index 00000000..ed5cb935
--- /dev/null
+++ b/src/components/retweet_button/retweet_button.vue
@@ -0,0 +1,18 @@
+<template>
+ <div>
+ <i :class='classes' class='icon-retweet fa' v-on:click.prevent=''></i>
+ <span v-if='status.repeat_num > 0'>{{status.repeat_num}}</span>
+ </div>
+</template>
+
+<script src="./retweet_button.js" ></script>
+
+<style>
+ .icon-retweet {
+ cursor: pointer
+ }
+ .retweeted {
+ cursor: auto;
+ color: green;
+ }
+</style>
diff --git a/src/components/status/status.js b/src/components/status/status.js
index 6253d334..0bf2ecde 100644
--- a/src/components/status/status.js
+++ b/src/components/status/status.js
@@ -1,5 +1,6 @@
import Attachment from '../attachment/attachment.vue'
import FavoriteButton from '../favorite_button/favorite_button.vue'
+import RetweetButton from '../retweet_button/retweet_button.vue'
import PostStatusForm from '../post_status_form/post_status_form.vue'
const Status = {
@@ -24,6 +25,7 @@ const Status = {
components: {
Attachment,
FavoriteButton,
+ RetweetButton,
PostStatusForm
},
methods: {
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 48c910c0..d309c495 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -37,9 +37,7 @@
<i class='fa icon-reply'></i>
</a>
</div>
- <div>
- <i class='fa icon-retweet'></i>
- </div>
+ <retweet-button :status=status></retweet-button>
<favorite-button :status=status></favorite-button>
</div>
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
index 06585ac7..d00bc0d0 100644
--- a/src/services/api/api.service.js
+++ b/src/services/api/api.service.js
@@ -5,6 +5,7 @@ const PUBLIC_TIMELINE_URL = '/api/statuses/public_timeline.json'
const PUBLIC_AND_EXTERNAL_TIMELINE_URL = '/api/statuses/public_and_external_timeline.json'
const FAVORITE_URL = '/api/favorites/create'
const UNFAVORITE_URL = '/api/favorites/destroy'
+const RETWEET_URL = '/api/statuses/retweet'
const STATUS_UPDATE_URL = '/api/statuses/update.json'
const MEDIA_UPLOAD_URL = '/api/statusnet/media/upload'
// const CONVERSATION_URL = '/api/statusnet/conversation/';
@@ -63,6 +64,13 @@ const unfavorite = ({ id, credentials }) => {
})
}
+const retweet = ({ id, credentials }) => {
+ return fetch(`${RETWEET_URL}/${id}.json`, {
+ headers: authHeaders(credentials),
+ method: 'POST'
+ })
+}
+
const postStatus = ({credentials, status, mediaIds, inReplyToStatusId}) => {
const idsText = mediaIds.join(',')
const form = new FormData()
@@ -96,6 +104,7 @@ const apiService = {
fetchTimeline,
favorite,
unfavorite,
+ retweet,
postStatus,
uploadMedia
}