// imports import { useInfiniteQuery, useQuery } from "@tanstack/vue-query"; import axios from "~/configs/axios.config"; import { API_ENDPOINTS, QUERY_KEYS } from "~/constants"; import type { ComputedRef } from "vue"; // types export type GetBranchResponse = ApiPaginated; // methods export const handleGetChat = async ({ productId, limit, offset }: { productId: number | string, limit: number, offset: number }) => { const { data } = await axios.get(`${API_ENDPOINTS.chat.messages}/${productId}`, { params: { offset, limit }, headers: { Authorization: `Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoyMTY3ODE2OTAwLCJpYXQiOjE3MzU4MTY5MDAsImp0aSI6ImQwN2E2Y2Y2NzgwZjRlNTE5NWIzOGQxMTAzYzU4NDQ3IiwidXNlcl9pZCI6NX0.slwd7ZSV7nUXEuDTYwwHUOo9ekCefwEEL4kVv2vSTFo` } }); return data; }; // composable const useGetBranch = ( productId: Ref, enabled: Ref ) => { return useInfiniteQuery({ enabled, queryKey: [QUERY_KEYS.chat], initialPageParam: { limit: 10, offset: 0 }, queryFn: ({ pageParam }) => handleGetChat({ limit: pageParam.limit, offset: pageParam.offset, productId: productId.value }), getNextPageParam: (lastPage, pages) => { if (!lastPage.next) return undefined; return { limit: 10, offset: pages.length * 10 }; } }); }; export default useGetBranch;