import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import { BrowserRouter } from "react-router-dom";
import { App } from "./App";
import { ToastProvider } from "./contexts/ToastContext";
import "./index.css";
import { PwaInstallProvider } from "./contexts/PwaInstallContext";
import { PreferencesSync } from "./PreferencesSync";
import { startOfflineSyncLoop } from "./lib/offline";

const queryClient = new QueryClient({
  defaultOptions: {
    queries: { retry: 1, staleTime: 30_000, refetchOnWindowFocus: true },
  },
});

startOfflineSyncLoop();

createRoot(document.getElementById("root")!).render(
  <StrictMode>
    <QueryClientProvider client={queryClient}>
      <BrowserRouter>
        <PwaInstallProvider>
          <ToastProvider>
            <PreferencesSync />
            <App />
          </ToastProvider>
        </PwaInstallProvider>
      </BrowserRouter>
    </QueryClientProvider>
  </StrictMode>,
);
