fixes for user lists

This commit is contained in:
Henry Jameson 2026-08-12 15:56:31 +03:00
commit 6004243f47
5 changed files with 32 additions and 26 deletions

View file

@ -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)
}, },
}, },
} }

View file

@ -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: {

View file

@ -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')"

View file

@ -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']

View file

@ -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) {