commit: dff1153d1c8394aea766e1b5fd81e87a7f3b16e7
parent: 429ec1ceab520e348dd1e4dcc5fc6bf6835bc259
Author: Shpuld Shpludson <shp@cock.li>
Date: Tue, 14 Nov 2017 16:34:32 +0000
Merge branch 'fix/user-view-without-posts' into 'develop'
Use state object for user view instead of timeline.
See merge request pleroma/pleroma-fe!161
Diffstat:
4 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/src/components/user_profile/user_profile.js b/src/components/user_profile/user_profile.js
@@ -5,6 +5,9 @@ const UserProfile = {
created () {
this.$store.commit('clearTimeline', { timeline: 'user' })
this.$store.dispatch('startFetching', ['user', this.userId])
+ if (!this.$store.state.users.usersObject[this.userId]) {
+ this.$store.dispatch('fetchUser', this.userId)
+ }
},
destroyed () {
this.$store.dispatch('stopFetching', 'user')
@@ -18,7 +21,7 @@ const UserProfile = {
if (this.timeline.statuses[0]) {
return this.timeline.statuses[0].user
} else {
- return false
+ return this.$store.state.users.usersObject[this.userId] || false
}
}
},
diff --git a/src/modules/users.js b/src/modules/users.js
@@ -57,6 +57,10 @@ const users = {
state: defaultState,
mutations,
actions: {
+ fetchUser (store, id) {
+ store.rootState.api.backendInteractor.fetchUser({id})
+ .then((user) => store.commit('addNewUsers', user))
+ },
addNewStatuses (store, { statuses }) {
const users = map(statuses, 'user')
const retweetedUsers = compact(map(statuses, 'retweeted_status.user'))
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
@@ -28,7 +28,7 @@ const EXTERNAL_PROFILE_URL = '/api/externalprofile/show.json'
const QVITTER_USER_TIMELINE_URL = '/api/qvitter/statuses/user_timeline.json'
const BLOCKING_URL = '/api/blocks/create.json'
const UNBLOCKING_URL = '/api/blocks/destroy.json'
-// const USER_URL = '/api/users/show.json'
+const USER_URL = '/api/users/show.json'
import { each, map } from 'lodash'
import 'whatwg-fetch'
@@ -202,6 +202,12 @@ const unblockUser = ({id, credentials}) => {
}).then((data) => data.json())
}
+const fetchUser = ({id, credentials}) => {
+ let url = `${USER_URL}?user_id=${id}`
+ return fetch(url, { headers: authHeaders(credentials) })
+ .then((data) => data.json())
+}
+
const fetchFriends = ({id, credentials}) => {
let url = `${FRIENDS_URL}?user_id=${id}`
return fetch(url, { headers: authHeaders(credentials) })
@@ -363,6 +369,7 @@ const apiService = {
unfollowUser,
blockUser,
unblockUser,
+ fetchUser,
favorite,
unfavorite,
retweet,
diff --git a/src/services/backend_interactor_service/backend_interactor_service.js b/src/services/backend_interactor_service/backend_interactor_service.js
@@ -22,6 +22,10 @@ const backendInteractorService = (credentials) => {
return apiService.fetchAllFollowing({username, credentials})
}
+ const fetchUser = ({id}) => {
+ return apiService.fetchUser({id, credentials})
+ }
+
const followUser = (id) => {
return apiService.followUser({credentials, id})
}
@@ -65,6 +69,7 @@ const backendInteractorService = (credentials) => {
unfollowUser,
blockUser,
unblockUser,
+ fetchUser,
fetchAllFollowing,
verifyCredentials: apiService.verifyCredentials,
startFetching,