Merge remote-tracking branch 'upstream/develop' into user-profile-overhault

* upstream/develop: (24 commits)
  Feature/bigger icons for mobile / #211
  Fix oauth url
  Make user profile page cleaner
  Redirect to /main/all
  Move userProfile link to methods
  Fix user profile test
  Add temporary redirects
  Add local profile test
  Implement user_profile.spec.js
  Use babel polyfill in karma
  Use 'userProfileLink' to generate user-profile link
  Rollback disableDotRule
  Use "-1" in indexOf
  Add generateProfileLink
  Use "~" as a route namespace symbol
  Disable dot rule
  Pass userName instead of userId
  Typo in tests
  Fix redirect paths
  Fix typo
  ...
This commit is contained in:
Henry Jameson 2018-12-18 22:43:26 +03:00
commit 81c83566cd
40 changed files with 1855 additions and 789 deletions

View file

@ -4,32 +4,40 @@ import Timeline from '../timeline/timeline.vue'
const UserProfile = {
created () {
debugger
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)
this.$store.dispatch('startFetching', ['user', this.fetchBy])
if (!this.user) {
this.$store.dispatch('fetchUser', this.fetchBy)
}
},
destroyed () {
this.$store.dispatch('stopFetching', 'user')
},
computed: {
timeline () { return this.$store.state.statuses.timelines.user },
friends () {
return this.user.friends
},
followers () {
return this.user.followers
timeline () {
return this.$store.state.statuses.timelines.user
},
userId () {
return this.$route.params.id
},
userName () {
return this.$route.params.name
},
user () {
if (this.timeline.statuses[0]) {
return this.timeline.statuses[0].user
} else {
return this.$store.state.users.usersObject[this.userId] || false
return Object.values(this.$store.state.users.usersObject).filter(user => {
return (this.isExternal ? user.id === this.userId : user.screen_name === this.userName)
})[0] || false
}
},
fetchBy () {
return this.isExternal ? this.userId : this.userName
},
isExternal () {
return this.$route.name === 'external-user-profile'
}
},
methods: {
@ -43,7 +51,18 @@ const UserProfile = {
}
},
watch: {
userName () {
if (this.isExternal) {
return
}
this.$store.dispatch('stopFetching', 'user')
this.$store.commit('clearTimeline', { timeline: 'user' })
this.$store.dispatch('startFetching', ['user', this.userName])
},
userId () {
if (!this.isExternal) {
return
}
this.$store.dispatch('stopFetching', 'user')
this.$store.commit('clearTimeline', { timeline: 'user' })
this.$store.dispatch('startFetching', ['user', this.userId])