diff --git a/packages/nicolium/src/queries/accounts/use-accounts.ts b/packages/nicolium/src/queries/accounts/use-accounts.ts index c3c2ff382..6f75d9a50 100644 --- a/packages/nicolium/src/queries/accounts/use-accounts.ts +++ b/packages/nicolium/src/queries/accounts/use-accounts.ts @@ -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) => { 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) => { }, 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 }; diff --git a/packages/nicolium/src/stores/contexts.ts b/packages/nicolium/src/stores/contexts.ts index 085767764..99ae1c745 100644 --- a/packages/nicolium/src/stores/contexts.ts +++ b/packages/nicolium/src/stores/contexts.ts @@ -265,9 +265,13 @@ const useThread = (statusId?: string, linear?: boolean) => { if (linear) { let parentStatus: string = statusId; + const visited = new Set([parentStatus]); while (inReplyTos[parentStatus]) { - parentStatus = inReplyTos[parentStatus]; + const next = inReplyTos[parentStatus]; + if (visited.has(next)) break; + visited.add(next); + parentStatus = next; } const threadStatuses = [parentStatus];