import { HookFormProvider } from '@tidbcloud/uikit/biz'
import React from 'react'
import { createRoot } from 'react-dom/client'
import { QueryClient, QueryClientProvider } from 'react-query'
import { UIWrapper } from 'uikit/contexts'

import { getErrorMessage } from 'utils/error'

import App from './App'
import * as serviceWorker from './serviceWorker'

console.log(`[Management Portal] git: ${process.env.GIT_HASH}`)

const queryClient = new QueryClient()

// Temporarily disable React.StrictMode in dev and prod.
// https://github.com/ant-design/ant-design/issues/22493

const container = document.getElementById('root')
if (!container) {
  throw new Error(`Container element is ${container}`)
}
const root = createRoot(container)
root.render(
  <QueryClientProvider client={queryClient}>
    <UIWrapper>
      <HookFormProvider value={{ onError: getErrorMessage }}>
        <App />
      </HookFormProvider>
    </UIWrapper>
  </QueryClientProvider>
)
// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: https://bit.ly/CRA-PWA
serviceWorker.unregister()
