Midtrans-Middleware/src/main.tsx

57 lines
1.6 KiB
TypeScript

import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './styles/globals.css'
import { getPaymentMode } from './features/payments/lib/paymentMode'
(() => {
const html = document.documentElement
try {
if (html.classList.contains('dark')) {
html.classList.remove('dark')
}
document.body.classList.remove('dark')
html.style.colorScheme = 'light'
html.setAttribute('data-theme', 'light')
} catch {
}
})()
// Validate payment gateway mode on startup
const mode = getPaymentMode()
if (!['CORE', 'SNAP'].includes(mode)) {
throw new Error(`Invalid PAYMENT_GATEWAY_MODE: ${mode}. Must be 'CORE' or 'SNAP'`)
}
console.log(`[PAYMENT] Mode: ${mode}`)
// Load Snap.js script conditionally for Snap mode
if (mode === 'SNAP') {
const script = document.createElement('script')
script.src = 'https://app.sandbox.midtrans.com/snap/snap.js'
script.setAttribute('data-client-key', import.meta.env.VITE_MIDTRANS_CLIENT_KEY || '')
script.async = true
document.head.appendChild(script)
script.onload = () => {
console.log('[SNAP] Snap.js loaded successfully')
}
script.onerror = () => {
console.error('[SNAP] Failed to load Snap.js')
}
}
import { AppRouter } from './app/router'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
const queryClient = new QueryClient({
defaultOptions: { queries: { refetchOnWindowFocus: false, retry: 2 } },
})
createRoot(document.getElementById('root')!).render(
<StrictMode>
<QueryClientProvider client={queryClient}>
<AppRouter />
</QueryClientProvider>
</StrictMode>,
)