diff --git a/src/components/user_avatar/user_avatar.js b/src/components/user_avatar/user_avatar.js index e513b9935..e6fed3b59 100644 --- a/src/components/user_avatar/user_avatar.js +++ b/src/components/user_avatar/user_avatar.js @@ -23,6 +23,11 @@ const UserAvatar = { imageLoadError () { this.showPlaceholder = true } + }, + watch: { + src () { + this.showPlaceholder = false + } } } diff --git a/src/components/user_profile/user_profile.js b/src/components/user_profile/user_profile.js index 1bf4a86d2..82df4510f 100644 --- a/src/components/user_profile/user_profile.js +++ b/src/components/user_profile/user_profile.js @@ -68,7 +68,8 @@ const UserProfile = { }, userInStore () { const routeParams = this.$route.params - return this.$store.getters.findUser(routeParams.name || routeParams.id) + // This needs fetchedUserId so that computed will be refreshed when user is fetched + return this.$store.getters.findUser(this.fetchedUserId || routeParams.name || routeParams.id) }, user () { if (this.timeline.statuses[0]) { diff --git a/src/modules/users.js b/src/modules/users.js index e2812340b..1fe12fc82 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -94,11 +94,12 @@ export const mutations = { updateUserRelationship (state, relationships) { relationships.forEach((relationship) => { const user = state.usersObject[relationship.id] - - user.follows_you = relationship.followed_by - user.following = relationship.following - user.muted = relationship.muting - user.statusnet_blocking = relationship.blocking + if (user) { + user.follows_you = relationship.followed_by + user.following = relationship.following + user.muted = relationship.muting + user.statusnet_blocking = relationship.blocking + } }) }, saveBlocks (state, blockIds) { @@ -132,7 +133,14 @@ export const mutations = { } export const getters = { - findUser: state => query => state.usersObject[typeof query === 'string' ? query.toLowerCase() : query] + findUser: state => query => { + const result = state.usersObject[query] + // In case it's a screen_name, we can try searching case-insensitive + if (!result && typeof query === 'string') { + return state.usersObject[query.toLowerCase()] + } + return result + } } export const defaultState = {