'use client'

import { useAuthContext } from '@/contexts/AuthContext'

import { FulfillmentSidebar } from './FulfillmentSidebar'
import { LogistSidebar } from './LogistSidebar'
import { SellerSidebar } from './SellerSidebar'
import { WholesaleSidebar } from './WholesaleSidebar'

declare global {
  interface Window {
    __SIDEBAR_ROOT_MOUNTED__?: boolean
  }
}

export function Sidebar({ 
  isRootInstance = false, 
  user: propUser,
}: { 
  isRootInstance?: boolean,
  user?: any,
} = {}) {
  const { user: hookUser } = useAuthContext()
  
  // Приоритет: переданный user через props, затем из хука
  const user = propUser || hookUser

  console.warn('Sidebar render:', { 
    isRootInstance, 
    hasUser: !!user, 
    hasPropUser: !!propUser,
    hasHookUser: !!hookUser,
    userPhone: user?.phone,
    organizationType: user?.organization?.type,
    willRender: !!user?.organization?.type,
  })
  
  // Диагностика почему user пустой
  if (!user) {
    console.warn('🔴 Sidebar: NO USER DATA', { propUser, hookUser })
  }

  // Если уже есть корневой сайдбар и это не корневой экземпляр — не рендерим дубликат
  if (
    typeof window !== 'undefined' &&
    !isRootInstance &&
    window.__SIDEBAR_ROOT_MOUNTED__
  ) {
    console.warn('Sidebar: duplicate instance, not rendering')
    return null
  }

  // Помечаем, что корневой экземпляр смонтирован
  if (typeof window !== 'undefined' && isRootInstance) {
    window.__SIDEBAR_ROOT_MOUNTED__ = true
  }

  if (!user?.organization?.type) {
    console.warn('Sidebar: no user or organization type, not rendering')
    return null
  }

  // Роутинг по типам организаций
  switch (user.organization.type) {
    case 'LOGIST':
      return <LogistSidebar user={user} />
    
    case 'SELLER':
      return <SellerSidebar user={user} />
    
    case 'FULFILLMENT':
      return <FulfillmentSidebar user={user} />
    
    case 'WHOLESALE':
      return <WholesaleSidebar user={user} />
    
    default:
      return null
  }
}