filter pinned statuses based on pinned entity instead of a separate user entity

This commit is contained in:
taehoon 2019-04-24 14:34:55 -04:00
parent cd0a7afa06
commit e8abe1273b
4 changed files with 8 additions and 13 deletions

View file

@ -1,4 +1,5 @@
import get from 'lodash/get' import get from 'lodash/get'
import filter from 'lodash/filter'
import UserCard from '../user_card/user_card.vue' import UserCard from '../user_card/user_card.vue'
import FollowCard from '../follow_card/follow_card.vue' import FollowCard from '../follow_card/follow_card.vue'
import Timeline from '../timeline/timeline.vue' import Timeline from '../timeline/timeline.vue'
@ -41,6 +42,9 @@ const UserProfile = {
timeline () { timeline () {
return this.$store.state.statuses.timelines.user return this.$store.state.statuses.timelines.user
}, },
pinnedStatuses () {
return filter(this.timeline.statuses, { pinned: true })
},
favorites () { favorites () {
return this.$store.state.statuses.timelines.favorites return this.$store.state.statuses.timelines.favorites
}, },
@ -54,9 +58,6 @@ const UserProfile = {
user () { user () {
return this.$store.getters.findUser(this.userId) return this.$store.getters.findUser(this.userId)
}, },
pinnedStatuses () {
return this.user.pinnedStatusIds.map(id => this.$store.state.statuses.allStatusesObject[id])
},
isExternal () { isExternal () {
return this.$route.name === 'external-user-profile' return this.$route.name === 'external-user-profile'
}, },
@ -99,6 +100,7 @@ const UserProfile = {
if (this.isUs) { if (this.isUs) {
this.$store.dispatch('startFetchingTimeline', { timeline: 'favorites', userId }) this.$store.dispatch('startFetchingTimeline', { timeline: 'favorites', userId })
} }
// Fetch all pinned statuses immediately
this.$store.dispatch('fetchPinnedStatuses', userId) this.$store.dispatch('fetchPinnedStatuses', userId)
}, },
cleanUp () { cleanUp () {

View file

@ -1,4 +1,4 @@
import { remove, slice, each, findIndex, find, maxBy, minBy, merge, first, last, isArray, omitBy, map } from 'lodash' import { remove, slice, each, findIndex, find, maxBy, minBy, merge, first, last, isArray, omitBy } from 'lodash'
import { set } from 'vue' import { set } from 'vue'
import apiService from '../services/api/api.service.js' import apiService from '../services/api/api.service.js'
// import parse from '../services/status_parser/status_parser.js' // import parse from '../services/status_parser/status_parser.js'
@ -541,12 +541,9 @@ const statuses = {
rootState.api.backendInteractor.unfavorite(status.id) rootState.api.backendInteractor.unfavorite(status.id)
.then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser })) .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))
}, },
fetchPinnedStatuses ({ rootState, dispatch, commit }, userId) { fetchPinnedStatuses ({ rootState, dispatch }, userId) {
rootState.api.backendInteractor.fetchPinnedStatuses(userId) rootState.api.backendInteractor.fetchPinnedStatuses(userId)
.then(statuses => { .then(statuses => dispatch('addNewStatuses', { statuses, timeline: 'user', userId }))
dispatch('addNewStatuses', { statuses })
commit('savePinnedStatusIds', { userId, statusIds: map(statuses, 'id') })
})
}, },
updatePinned ({ rootState, commit }, status) { updatePinned ({ rootState, commit }, status) {
commit('setPinned', { status }) commit('setPinned', { status })

View file

@ -160,9 +160,6 @@ export const mutations = {
saveMuteIds (state, muteIds) { saveMuteIds (state, muteIds) {
state.currentUser.muteIds = muteIds state.currentUser.muteIds = muteIds
}, },
savePinnedStatusIds (state, { userId, statusIds }) {
state.usersObject[userId].pinnedStatusIds = statusIds
},
addMuteId (state, muteId) { addMuteId (state, muteId) {
if (state.currentUser.muteIds.indexOf(muteId) === -1) { if (state.currentUser.muteIds.indexOf(muteId) === -1) {
state.currentUser.muteIds.push(muteId) state.currentUser.muteIds.push(muteId)

View file

@ -131,7 +131,6 @@ export const parseUser = (data) => {
output.statuses_count = data.statuses_count output.statuses_count = data.statuses_count
output.friendIds = [] output.friendIds = []
output.followerIds = [] output.followerIds = []
output.pinnedStatusIds = []
if (data.pleroma) { if (data.pleroma) {
output.follow_request_count = data.pleroma.follow_request_count output.follow_request_count = data.pleroma.follow_request_count