import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import { RouterProvider } from '@tanstack/react-router'
import { QueryClientProvider } from '@tanstack/react-query'
import { TransportProvider } from '@connectrpc/connect-query'
import { router } from './router'
import { queryClient } from '#/lib/query-client'
import { transport } from './lib/transport'
import { startPartnerSession } from '#/features/auth/partner-session'
import { getBridge } from '#/bridge'
import { resolveLocale } from '#/lib/locale'
import { overwriteGetLocale } from '#/paraglide/runtime'
import '@fontsource-variable/plus-jakarta-sans'
import './styles.css'

// Locale dari host dibaca sekali sebelum render pertama; tanpa pemilih bahasa (design-decisions.md D-006).
async function boot() {
  const ctx = await getBridge()
    ?.getContext()
    .catch(() => null)
  const locale = resolveLocale(ctx?.locale)
  overwriteGetLocale(() => locale)
  document.documentElement.lang = locale
  startPartnerSession()
  createRoot(document.getElementById('root')!).render(
    <StrictMode>
      <TransportProvider transport={transport}>
        <QueryClientProvider client={queryClient}>
          <RouterProvider router={router} />
        </QueryClientProvider>
      </TransportProvider>
    </StrictMode>,
  )
}

void boot()
