Merge pull request #524 from mkljczk/copilot/audit-browser-hang-issue

Fix useAccounts render instability and useThread infinite loop
This commit is contained in:
nicole mikołajczyk
2026-03-01 22:06:21 +01:00
committed by GitHub
2 changed files with 11 additions and 14 deletions

View File

@ -1,5 +1,4 @@
import { useQueries, useQueryClient } from '@tanstack/react-query';
import { useMemo } from 'react';
import { useClient } from '@/hooks/use-client';
import { queryKeys } from '@/queries/keys';
@ -10,7 +9,7 @@ const useAccounts = (accountIds: Array<string>) => {
const client = useClient();
const queryClient = useQueryClient();
const queries = useQueries({
return useQueries({
queries: accountIds.map((accountId) => ({
queryKey: queryKeys.accounts.show(accountId),
queryFn: async () => {
@ -23,18 +22,12 @@ const useAccounts = (accountIds: Array<string>) => {
},
enabled: !!accountId,
})),
combine: (results) => ({
data: results.map((result) => result.data).filter((account): account is Account => !!account),
isLoading: results.some((result) => result.isLoading),
isFetching: results.some((result) => result.isFetching),
}),
});
const accounts = useMemo(
() => queries.map((query) => query.data).filter((account): account is Account => !!account),
[queries],
);
return {
data: accounts,
isLoading: queries.some((query) => query.isLoading),
isFetching: queries.some((query) => query.isFetching),
};
};
export { useAccounts };

View File

@ -265,9 +265,13 @@ const useThread = (statusId?: string, linear?: boolean) => {
if (linear) {
let parentStatus: string = statusId;
const visited = new Set<string>([parentStatus]);
while (inReplyTos[parentStatus]) {
parentStatus = inReplyTos[parentStatus];
const next = inReplyTos[parentStatus];
if (visited.has(next)) break;
visited.add(next);
parentStatus = next;
}
const threadStatuses = [parentStatus];