diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/components/user_profile/user_profile.js | 16 | ||||
| -rw-r--r-- | src/modules/users.js | 8 |
2 files changed, 19 insertions, 5 deletions
diff --git a/src/components/user_profile/user_profile.js b/src/components/user_profile/user_profile.js index 77bb1835..2ca09817 100644 --- a/src/components/user_profile/user_profile.js +++ b/src/components/user_profile/user_profile.js @@ -6,7 +6,7 @@ const UserProfile = { created () { this.$store.commit('clearTimeline', { timeline: 'user' }) this.$store.dispatch('startFetching', ['user', this.fetchBy]) - if (!this.user) { + if (!this.user.id) { this.$store.dispatch('fetchUser', this.fetchBy) } }, @@ -29,14 +29,20 @@ const UserProfile = { followers () { return this.user.followers }, + userInStore () { + if (this.isExternal) { + return this.$store.getters.userById(this.userId) + } + return this.$store.getters.userByName(this.userName) + }, user () { if (this.timeline.statuses[0]) { return this.timeline.statuses[0].user - } else { - return Object.values(this.$store.state.users.usersObject).filter(user => { - return (this.isExternal ? user.id === this.userId : user.screen_name === this.userName) - })[0] || {} } + if (this.userInStore) { + return this.userInStore + } + return {} }, fetchBy () { return this.isExternal ? this.userId : this.userName diff --git a/src/modules/users.js b/src/modules/users.js index 2f05ed3f..adbd37dd 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -86,6 +86,13 @@ export const mutations = { } } +export const getters = { + userById: state => id => + state.users.find(user => user.id === id), + userByName: state => name => + state.users.find(user => user.screen_name === name) +} + export const defaultState = { loggingIn: false, lastLoginName: false, @@ -99,6 +106,7 @@ export const defaultState = { const users = { state: defaultState, mutations, + getters, actions: { fetchUser (store, id) { store.rootState.api.backendInteractor.fetchUser({ id }) |
