logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe
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:

Msrc/components/user_profile/user_profile.js5++++-
Msrc/modules/users.js4++++
Msrc/services/api/api.service.js9++++++++-
Msrc/services/backend_interactor_service/backend_interactor_service.js5+++++
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,