Very basic user following.

This commit is contained in:
Roger Braun 2016-12-08 09:09:21 +01:00
parent f18f87747f
commit fc268c48bc
4 changed files with 58 additions and 0 deletions

View File

@ -6,6 +6,21 @@
<span class="glyphicon glyphicon-user"></span> <span class="glyphicon glyphicon-user"></span>
<div class='user-name'>{{user.name}}</div> <div class='user-name'>{{user.name}}</div>
<div class='user-screen-name'>@{{user.screen_name}}</div> <div class='user-screen-name'>@{{user.screen_name}}</div>
<div v-if="isOtherUser" class="following-info">
<div v-if="user.follows_you" class="following">
Follows you!
</div>
<div class="followed">
<span v-if="user.following">
Following them!
</span>
<span v-if="!user.following" >
<button @click="followUser">
Follow!
</button>
</span>
</div>
</div>
</div> </div>
</div> </div>
<div class="panel-body"> <div class="panel-body">
@ -37,6 +52,15 @@
color: `#${this.user.profile_link_color}`, color: `#${this.user.profile_link_color}`,
'background-image': `url(${this.user.cover_photo})` 'background-image': `url(${this.user.cover_photo})`
} }
},
isOtherUser () {
return this.user !== this.$store.state.users.currentUser
}
},
methods: {
followUser () {
this.$store.state.api.backendInteractor.followUser(this.user.id)
.then((x) => console.log)
} }
} }
} }

View File

@ -5,3 +5,20 @@
</template> </template>
<script src="./user_profile.js"></script> <script src="./user_profile.js"></script>
<style lang="scss">
.user-profile {
flex: 2;
flex-basis: 500px;
}
.user-info {
.following-info {
display: flex;
div {
flex: 1;
}
}
}
</style>

View File

@ -13,6 +13,9 @@ const MEDIA_UPLOAD_URL = '/api/statusnet/media/upload'
const CONVERSATION_URL = '/api/statusnet/conversation' const CONVERSATION_URL = '/api/statusnet/conversation'
const MENTIONS_URL = '/api/statuses/mentions.json' const MENTIONS_URL = '/api/statuses/mentions.json'
const FRIENDS_URL = '/api/statuses/friends.json' const FRIENDS_URL = '/api/statuses/friends.json'
const FOLLOWING_URL = '/api/friendships/create.json'
// const UNFOLLOWING_URL = '/api/friendships/create.json'
// const USER_URL = '/api/users/show.json'
const oldfetch = window.fetch const oldfetch = window.fetch
@ -30,6 +33,14 @@ const authHeaders = (user) => {
} }
} }
const followUser = ({id, credentials}) => {
let url = `${FOLLOWING_URL}?user_id=${id}`
return fetch(url, {
headers: authHeaders(credentials),
method: 'POST'
}).then((data) => data.json())
}
const fetchFriends = ({credentials}) => { const fetchFriends = ({credentials}) => {
return fetch(FRIENDS_URL, { headers: authHeaders(credentials) }) return fetch(FRIENDS_URL, { headers: authHeaders(credentials) })
.then((data) => data.json()) .then((data) => data.json())
@ -143,6 +154,7 @@ const apiService = {
fetchStatus, fetchStatus,
fetchMentions, fetchMentions,
fetchFriends, fetchFriends,
followUser,
favorite, favorite,
unfavorite, unfavorite,
retweet, retweet,

View File

@ -17,11 +17,16 @@ const backendInteractorService = (credentials) => {
return apiService.fetchFriends({credentials}) return apiService.fetchFriends({credentials})
} }
const followUser = (id) => {
return apiService.followUser({credentials, id})
}
const backendInteractorServiceInstance = { const backendInteractorServiceInstance = {
fetchStatus, fetchStatus,
fetchConversation, fetchConversation,
fetchMentions, fetchMentions,
fetchFriends, fetchFriends,
followUser,
verifyCredentials: apiService.verifyCredentials verifyCredentials: apiService.verifyCredentials
} }