'use client';

import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import * as React from 'react';

/**
 * EN: QueryClient configuration with caching
 * VI: Cấu hình QueryClient với caching
 */
const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      // EN: Cache time: 5 minutes / VI: Thời gian cache: 5 phút
      staleTime: 5 * 60 * 1000,
      // EN: Cache data for 10 minutes / VI: Cache dữ liệu trong 10 phút
      gcTime: 10 * 60 * 1000,
      // EN: Retry failed requests / VI: Thử lại các request thất bại
      retry: 1,
      // EN: Refetch on window focus / VI: Refetch khi focus window
      refetchOnWindowFocus: false,
    },
  },
});

/**
 * EN: QueryProvider component - Provides React Query context
 * VI: Component QueryProvider - Cung cấp context React Query
 *
 * Features:
 * - API response caching
 * - Automatic refetching
 * - Error handling
 * - Loading states
 *
 * Tính năng:
 * - Cache phản hồi API
 * - Tự động refetch
 * - Xử lý lỗi
 * - Trạng thái loading
 */
export function QueryProvider({ children }: { children: React.ReactNode }) {
  return (
    <QueryClientProvider client={queryClient}>
      {children}
    </QueryClientProvider>
  );
}
