"use client";

import { useState } from "react";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { ReactQueryDevtools } from "@tanstack/react-query-devtools";

export function QueryProvider({ children }: { children: React.ReactNode }) {
  const [queryClient] = useState(
    () =>
      new QueryClient({
        defaultOptions: {
          queries: {
            staleTime: 60 * 1000,
            gcTime: 5 * 60 * 1000,
            retry: 3,
            retryDelay: (i: number) => Math.min(1000 * 2 ** i, 30000),
            refetchOnWindowFocus: true, // returning to the tab must show fresh messages
            refetchOnReconnect: true,
            refetchOnMount: true,
            throwOnError: false,
          },
          mutations: {
            retry: 1,
            throwOnError: false,
            onError: (error: Error) => console.error("Mutation error:", error),
          },
        },
      }),
  );
  return (
    <QueryClientProvider client={queryClient}>
      {children}
      <ReactQueryDevtools initialIsOpen={false} />
    </QueryClientProvider>
  );
}
