diff --git a/packages/nicolium/src/queries/chats.ts b/packages/nicolium/src/queries/chats.ts index 933384228..6e773158d 100644 --- a/packages/nicolium/src/queries/chats.ts +++ b/packages/nicolium/src/queries/chats.ts @@ -39,22 +39,29 @@ const normalizeChatMessage = ( type ChatMessage = ReturnType; +const normalizeChatMessagesList = ({ + previous, + next, + items, + ...response +}: PaginatedResponse): PaginatedResponse => ({ + ...response, + previous: previous ? () => previous().then((res) => normalizeChatMessagesList(res)) : null, + next: next ? () => next().then((res) => normalizeChatMessagesList(res)) : null, + items: items.map(normalizeChatMessage), +}); + const useChatMessages = (chat: Chat) => { const client = useClient(); const isBlocked = !!useRelationshipQuery(chat?.account.id).data?.blocked_by; const getChatMessages = async ( chatId: string, - pageParam?: Pick, 'next'>, + pageParam?: Pick, 'next'>, ) => { - const response = await (pageParam?.next - ? pageParam.next() - : client.chats.getChatMessages(chatId)); + if (pageParam?.next) return pageParam.next(); - return { - ...response, - items: response.items.map(normalizeChatMessage), - }; + return normalizeChatMessagesList(await client.chats.getChatMessages(chatId)); }; const queryInfo = useInfiniteQuery({ @@ -63,11 +70,11 @@ const useChatMessages = (chat: Chat) => { enabled: !isBlocked, gcTime: 0, staleTime: 0, - initialPageParam: { next: null as (() => Promise>) | null }, + initialPageParam: { next: null as (() => Promise>) | null }, getNextPageParam: (config) => (config.next ? config : undefined), }); - const data = flattenPages(queryInfo.data as any)?.toReversed(); + const data = flattenPages(queryInfo.data)?.toReversed(); return { ...queryInfo, diff --git a/packages/nicolium/src/reducers/me.ts b/packages/nicolium/src/reducers/me.ts index 660cbd720..a7307fd94 100644 --- a/packages/nicolium/src/reducers/me.ts +++ b/packages/nicolium/src/reducers/me.ts @@ -19,7 +19,7 @@ type Me = string | null | false; const initialState: Me = null; const handleForbidden = (state: Me, error: { response: PlfeResponse }) => { - if (([401, 403] as any[]).includes(error.response?.status)) { + if (error.response?.status && [401, 403].includes(error.response.status)) { return false; } return state; diff --git a/packages/nicolium/src/utils/chats.ts b/packages/nicolium/src/utils/chats.ts index 9b8ebb6de..f896b7ca5 100644 --- a/packages/nicolium/src/utils/chats.ts +++ b/packages/nicolium/src/utils/chats.ts @@ -14,7 +14,7 @@ import type { Chat } from 'pl-api'; * @param newChat - Chat entity. */ const updateChatInChatSearchQuery = (newChat: Chat) => { - updatePageItem(queryKeys.chats.search, newChat as any, (o, n) => o.id === n.id); + updatePageItem(queryKeys.chats.search, newChat, (o, n) => o.id === n.id); }; /**