fixes for user lists
This commit is contained in:
parent
3274a27f9e
commit
6004243f47
5 changed files with 32 additions and 26 deletions
|
|
@ -21,7 +21,7 @@ const FollowCard = {
|
||||||
return useUsersStore().currentUser
|
return useUsersStore().currentUser
|
||||||
},
|
},
|
||||||
relationship() {
|
relationship() {
|
||||||
return this.$store.getters.relationship(this.user.id)
|
return useUsersStore().relationships.get(this.user.id)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -79,14 +79,12 @@ const UserProfile = {
|
||||||
return useMergedConfigStore().mergedConfig.compactProfiles
|
return useMergedConfigStore().mergedConfig.compactProfiles
|
||||||
},
|
},
|
||||||
friends() {
|
friends() {
|
||||||
return get(useUsersStore().findUser(this.userId), 'friendIds', []).map(
|
return [...this.user.friendIds.keys()]
|
||||||
(id) => useUsersStore().findUser(id),
|
.map((id) => useUsersStore().findUser(id))
|
||||||
)
|
|
||||||
},
|
},
|
||||||
followers() {
|
followers() {
|
||||||
return get(useUsersStore().findUser(this.userId), 'followerIds', []).map(
|
return [...this.user.followerIds.keys()]
|
||||||
(id) => useUsersStore().findUser(id),
|
.map((id) => useUsersStore().findUser(id))
|
||||||
)
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
v-if="followsTabVisible"
|
v-if="followsTabVisible && user"
|
||||||
key="followees"
|
key="followees"
|
||||||
class="panel-body"
|
class="panel-body"
|
||||||
:label="$t('user_card.followees')"
|
:label="$t('user_card.followees')"
|
||||||
|
|
@ -60,7 +60,7 @@
|
||||||
</List>
|
</List>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
v-if="followersTabVisible"
|
v-if="followersTabVisible && user"
|
||||||
key="followers"
|
key="followers"
|
||||||
class="panel-body"
|
class="panel-body"
|
||||||
:label="$t('user_card.followers')"
|
:label="$t('user_card.followers')"
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,9 @@ export const parseUser = (data) => {
|
||||||
|
|
||||||
output.privileges = []
|
output.privileges = []
|
||||||
|
|
||||||
|
output.friendIds = new Set()
|
||||||
|
output.followerIds = new Set()
|
||||||
|
|
||||||
if (data.pleroma) {
|
if (data.pleroma) {
|
||||||
if (data.pleroma.settings_store) {
|
if (data.pleroma.settings_store) {
|
||||||
output.storage = data.pleroma.settings_store['pleroma-fe']
|
output.storage = data.pleroma.settings_store['pleroma-fe']
|
||||||
|
|
|
||||||
|
|
@ -121,26 +121,26 @@ export const useUsersStore = defineStore('users', {
|
||||||
this.currentUser = null
|
this.currentUser = null
|
||||||
this.lastLoginName = null
|
this.lastLoginName = null
|
||||||
},
|
},
|
||||||
saveFriendIds({ id, friendIds }) {
|
saveFriendIds(id, friendIds) {
|
||||||
const user = this.users.get(id)
|
const user = this.users.get(id)
|
||||||
user.friendIds = [...new Set([...(user.friendIds || []), ...friendIds])]
|
user.friendIds = new Set([...user.friendIds, ...friendIds])
|
||||||
},
|
},
|
||||||
saveFollowerIds({ id, followerIds }) {
|
saveFollowerIds(id, followerIds) {
|
||||||
const user = this.users.get(id)
|
const user = this.users.get(id)
|
||||||
user.followerIds = [...new Set([user.followerIds || [], ...followerIds])]
|
user.followerIds = new Set([...user.followerIds, ...followerIds])
|
||||||
},
|
},
|
||||||
// Because frontend doesn't have a reason to keep these stuff in memory
|
// Because frontend doesn't have a reason to keep these stuff in memory
|
||||||
// outside of viewing someones user profile.
|
// outside of viewing someones user profile.
|
||||||
clearFriends(userId) {
|
clearFriends(userId) {
|
||||||
const user = this.users.get(userId)
|
const user = this.users.get(userId)
|
||||||
if (user) {
|
if (user) {
|
||||||
user.friendIds = []
|
user.friendIds = new Set()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
clearFollowers(userId) {
|
clearFollowers(userId) {
|
||||||
const user = this.users.get(userId)
|
const user = this.users.get(userId)
|
||||||
if (user) {
|
if (user) {
|
||||||
user.followerIds = []
|
user.followerIds = new Set()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
addNewUsers(response) {
|
addNewUsers(response) {
|
||||||
|
|
@ -154,13 +154,18 @@ export const useUsersStore = defineStore('users', {
|
||||||
// implicit: if oldTimestamp is undefined this will still be false
|
// implicit: if oldTimestamp is undefined this will still be false
|
||||||
if (oldTimestamp > timestamp) return existing // not overwriting old data with new
|
if (oldTimestamp > timestamp) return existing // not overwriting old data with new
|
||||||
|
|
||||||
const { relationship: unused0, ...old } = existing
|
// TODO: Optimize
|
||||||
const { relationship: unused1, ...neu } = user
|
const { relationship: oldRelationship, ...oldUser } = existing
|
||||||
const newUser = { ...old, ...neu }
|
const { relationship: newRelationship, ...neuUser } = user
|
||||||
|
|
||||||
|
const relationship = { ...oldRelationship, ...newRelationship }
|
||||||
|
const newUser = { ...oldUser, ...neuUser, relationship }
|
||||||
|
|
||||||
this.users.set(user.id, newUser)
|
this.users.set(user.id, newUser)
|
||||||
this.usersByName.set(user.screen_name.toLowerCase(), newUser)
|
this.usersByName.set(user.screen_name.toLowerCase(), newUser)
|
||||||
this.usersByURL.set(user.url.toLowerCase(), newUser)
|
this.usersByURL.set(user.url.toLowerCase(), newUser)
|
||||||
|
this.relationships.set(user.id, newRelationship)
|
||||||
|
|
||||||
this.timestamps.set(newUser, timestamp)
|
this.timestamps.set(newUser, timestamp)
|
||||||
|
|
||||||
if (user.id === this.currentUser.id) {
|
if (user.id === this.currentUser.id) {
|
||||||
|
|
@ -507,10 +512,10 @@ export const useUsersStore = defineStore('users', {
|
||||||
id,
|
id,
|
||||||
maxId,
|
maxId,
|
||||||
credentials: useOAuthStore().token,
|
credentials: useOAuthStore().token,
|
||||||
}).then(({ data: friends }) => {
|
}).then((result) => {
|
||||||
this.addNewUsers(friends)
|
this.addNewUsers(result)
|
||||||
this.saveFriendIds({ id, friendIds: map(friends, 'id') })
|
this.saveFriendIds(id, map(result.data, 'id'))
|
||||||
return friends
|
return result.data
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
fetchFollowers(id) {
|
fetchFollowers(id) {
|
||||||
|
|
@ -520,10 +525,10 @@ export const useUsersStore = defineStore('users', {
|
||||||
id,
|
id,
|
||||||
maxId,
|
maxId,
|
||||||
credentials: useOAuthStore().token,
|
credentials: useOAuthStore().token,
|
||||||
}).then(({ data: followers }) => {
|
}).then((result) => {
|
||||||
this.addNewUsers(followers)
|
this.addNewUsers(result)
|
||||||
this.saveFollowerIds({ id, followerIds: map(followers, 'id') })
|
this.saveFollowerIds(id, map(result.data, 'id'))
|
||||||
return followers
|
return result.data
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
subscribeUser(id) {
|
subscribeUser(id) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue