imrove friend list search responsiveness and stats refresh logic

This commit is contained in:
pa
2026-03-23 11:49:11 +09:00
parent 1895d0f25c
commit 3e9bff2f1b
4 changed files with 232 additions and 24 deletions
+17
View File
@@ -59,6 +59,8 @@ export const useFriendStore = defineStore('Friend', () => {
const sortedFriends = shallowRef([]);
let sortedFriendsBatchDepth = 0;
let pendingSortedFriendsRebuild = false;
let allUserStatsRequestId = 0;
let allUserMutualCountRequestId = 0;
const derivedDebugCounters = reactive({
allFavoriteFriendIds: 0,
@@ -820,8 +822,16 @@ export const useFriendStore = defineStore('Friend', () => {
displayNames.push(ctx.ref.displayName);
}
}
if (!userIds.length) {
return;
}
const requestId = ++allUserStatsRequestId;
const data = await database.getAllUserStats(userIds, displayNames);
if (requestId !== allUserStatsRequestId) {
return;
}
const dataByDisplayName = new Map();
const friendsByDisplayName = new Map();
@@ -885,7 +895,14 @@ export const useFriendStore = defineStore('Friend', () => {
*
*/
async function getAllUserMutualCount() {
if (!friends.size) {
return;
}
const requestId = ++allUserMutualCountRequestId;
const mutualCountMap = await database.getMutualCountForAllUsers();
if (requestId !== allUserMutualCountRequestId) {
return;
}
runInSortedFriendsBatch(() => {
for (const [userId, mutualCount] of mutualCountMap.entries()) {
const ref = friends.get(userId);