f9fb85ee42
* upstream/develop: Add Korean translation Change emptlyTl to take userId better fix fixes #265 and also that thin line below gradient on chrome (UGH) fix #262 part of user profiles not being able to load previous posts Retain userId on clearing user timeline, don't flush when empty timeline
102 lines
2.5 KiB
JavaScript
102 lines
2.5 KiB
JavaScript
import UserCardContent from '../user_card_content/user_card_content.vue'
|
|
import UserCard from '../user_card/user_card.vue'
|
|
import Timeline from '../timeline/timeline.vue'
|
|
import { emptyTl } from '../../modules/statuses.js'
|
|
|
|
const UserProfile = {
|
|
created () {
|
|
this.$store.commit('clearTimeline', { timeline: 'user' })
|
|
this.$store.dispatch('startFetching', ['user', this.fetchBy])
|
|
if (!this.user.id) {
|
|
this.$store.dispatch('fetchUser', this.fetchBy)
|
|
}
|
|
},
|
|
destroyed () {
|
|
this.$store.dispatch('stopFetching', 'user')
|
|
},
|
|
data () {
|
|
return {
|
|
favorites: emptyTl({ type: 'favorites', userId: this.userId })
|
|
}
|
|
},
|
|
computed: {
|
|
timeline () {
|
|
return this.$store.state.statuses.timelines.user
|
|
},
|
|
userId () {
|
|
return this.$route.params.id || this.user.id
|
|
},
|
|
userName () {
|
|
return this.$route.params.name || this.user.screen_name
|
|
},
|
|
friends () {
|
|
return this.user.friends
|
|
},
|
|
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
|
|
}
|
|
if (this.userInStore) {
|
|
return this.userInStore
|
|
}
|
|
return {}
|
|
},
|
|
fetchBy () {
|
|
return this.isExternal ? this.userId : this.userName
|
|
},
|
|
isExternal () {
|
|
return this.$route.name === 'external-user-profile'
|
|
}
|
|
},
|
|
methods: {
|
|
fetchFollowers () {
|
|
const id = this.userId
|
|
this.$store.dispatch('addFollowers', { id })
|
|
},
|
|
fetchFriends () {
|
|
const id = this.userId
|
|
this.$store.dispatch('addFriends', { id })
|
|
}
|
|
},
|
|
watch: {
|
|
userName () {
|
|
if (this.isExternal) {
|
|
return
|
|
}
|
|
this.$store.dispatch('stopFetching', 'user')
|
|
this.$store.commit('clearTimeline', { timeline: 'user' })
|
|
this.$store.dispatch('startFetching', ['user', this.fetchBy])
|
|
},
|
|
userId () {
|
|
if (!this.isExternal) {
|
|
return
|
|
}
|
|
this.$store.dispatch('stopFetching', 'user')
|
|
this.$store.commit('clearTimeline', { timeline: 'user' })
|
|
this.$store.dispatch('startFetching', ['user', this.fetchBy])
|
|
},
|
|
user () {
|
|
if (this.user.id && !this.user.followers) {
|
|
this.fetchFollowers()
|
|
this.fetchFriends()
|
|
}
|
|
}
|
|
},
|
|
components: {
|
|
UserCardContent,
|
|
UserCard,
|
|
Timeline
|
|
}
|
|
}
|
|
|
|
export default UserProfile
|