38 lines
1.1 KiB
TypeScript
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,
|
|
})
|
|
}
|