diff --git a/src/components/user_profile/user_profile.js b/src/components/user_profile/user_profile.js index 4f920ae2c4..0f387f66e6 100644 --- a/src/components/user_profile/user_profile.js +++ b/src/components/user_profile/user_profile.js @@ -37,27 +37,7 @@ const UserProfile = { }, created () { if (!this.user.id) { - let fetchPromise - if (this.userId) { - fetchPromise = this.$store.dispatch('fetchUser', this.userId) - } else { - fetchPromise = this.$store.dispatch('fetchUserByScreenName', this.userName) - .then(userId => { - this.fetchedUserId = userId - }) - } - fetchPromise - .catch((reason) => { - const errorMessage = get(reason, 'error.error') - if (errorMessage === 'No user with such user_id') { // Known error - this.error = this.$t('user_profile.profile_does_not_exist') - } else if (errorMessage) { - this.error = errorMessage - } else { - this.error = this.$t('user_profile.profile_loading_error') - } - }) - .then(() => this.startUp()) + this.fetchUserId() } }, destroyed () { @@ -112,8 +92,30 @@ const UserProfile = { this.$store.dispatch('startFetching', { timeline: 'favorites', userId: this.userId }) } }, + fetchUserId () { + let fetchPromise + if (this.userId && !this.$route.params.name) { + fetchPromise = this.$store.dispatch('fetchUser', this.userId) + } else { + fetchPromise = this.$store.dispatch('fetchUserByScreenName', this.userName) + .then(userId => { + this.fetchedUserId = userId + }) + } + fetchPromise + .catch((reason) => { + const errorMessage = get(reason, 'error.error') + if (errorMessage === 'No user with such user_id') { // Known error + this.error = this.$t('user_profile.profile_does_not_exist') + } else if (errorMessage) { + this.error = errorMessage + } else { + this.error = this.$t('user_profile.profile_loading_error') + } + }) + .then(() => this.startUp()) + }, startUp () { - this.$store.dispatch('fetchUserRelationship', this.userId) this.$store.dispatch('startFetching', { timeline: 'user', userId: this.userId }) this.$store.dispatch('startFetching', { timeline: 'media', userId: this.userId }) this.startFetchFavorites() @@ -134,6 +136,13 @@ const UserProfile = { this.startUp() } }, + userName (newVal, oldVal) { + if (this.$route.params.name) { + this.fetchUserId() + this.cleanUp() + this.startUp() + } + }, $route () { this.$refs.tabSwitcher.activateTab(0)() } diff --git a/src/modules/users.js b/src/modules/users.js index 4e17ebf2ef..e4146c3105 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -108,17 +108,11 @@ export const mutations = { state.currentUser.muteIds = muteIds }, setUserForStatus (state, status) { - // Not setting it again since it's already reactive if it has getters - if (!Object.getOwnPropertyDescriptor(status.user, 'id').get) { - status.user = state.usersObject[status.user.id] - } + status.user = state.usersObject[status.user.id] }, setUserForNotification (state, notification) { - // Not setting it again since it's already reactive if it has getters - if (!Object.getOwnPropertyDescriptor(notification.action.user, 'id').get) { - notification.action.user = state.usersObject[notification.action.user.id] - notification.from_profile = state.usersObject[notification.action.user.id] - } + notification.action.user = state.usersObject[notification.action.user.id] + notification.from_profile = state.usersObject[notification.action.user.id] }, setColor (state, { user: { id }, highlighted }) { const user = state.usersObject[id]