Files
chad/new-client/src/widgets/chat/api/qChatMessages.ts
2026-05-22 05:08:02 +06:00

38 lines
1.1 KiB
TypeScript

import type { ChatMessage, ResponseError } from '@shared/api/generated-chad-api.ts'
import type { QueryKey } from '@tanstack/vue-query'
import api from '@shared/api/client.ts'
import { useInfiniteQuery } from '@tanstack/vue-query'
interface Response {
messages: ChatMessage[]
nextCursor?: string
}
type PageParam = string | undefined
export function qChatMessages() {
return useInfiniteQuery<Response, ResponseError, ChatMessage[], QueryKey, PageParam>({
queryKey: ['chat-messages'],
queryFn: async ({ pageParam }) => {
const response = await api.chad.chatMessages({ cursor: pageParam, limit: 25 })
return response.data
// return {
// messages: response.data.messages.reverse(),
// nextCursor: response.data.nextCursor,
// }
},
// select: data => ({
// pages: [...data.pages].reverse(),
// pageParams: [...data.pageParams].reverse(),
// }),
select: (data) => {
return data.pages.flatMap(page => page.messages).toReversed()
},
initialPageParam: undefined,
getNextPageParam: (lastPage) => {
return lastPage.nextCursor
},
shallow: true,
})
}