'use client';

import type { ProfileTab } from '@/components/profile/ProfileTabs';
import type { DriverProfileViewData } from '@/lib/types/view-data/DriverProfileViewData';
import { DriverProfileTemplate } from '@/templates/DriverProfileTemplate';
import { ErrorTemplate, EmptyTemplate } from '@/templates/shared/StatusTemplates';
import { useRouter } from 'next/navigation';
import { useState } from 'react';
import { ClientWrapperProps } from '@/lib/contracts/components/ComponentContracts';

interface DriverProfilePageClientProps {
  viewData: DriverProfileViewData | null;
  error?: string;
  empty?: {
    title: string;
    description: string;
  };
}

export function DriverProfilePageClient({ viewData, error, empty }: DriverProfilePageClientProps) {
  const router = useRouter();
  
  // UI State (UI-only concerns)
  const [activeTab, setActiveTab] = useState<ProfileTab>('overview');
  const [friendRequestSent, setFriendRequestSent] = useState(false);

  // Event handlers (UI-only concerns)
  const handleAddFriend = () => {
    setFriendRequestSent(true);
  };

  const handleBackClick = () => {
    router.push('/drivers');
  };

  // Handle error/empty states
  if (error) {
    return (
      <ErrorTemplate 
        viewData={{}} 
        message="Error loading driver profile" 
        description="Please try again later" 
      />
    );
  }

  if (!viewData || !viewData.currentDriver) {
    if (empty) {
      return (
        <EmptyTemplate 
          viewData={{}} 
          title={empty.title} 
          description={empty.description} 
        />
      );
    }
    return null;
  }

  // Pass ViewData directly to template
  return (
    <DriverProfileTemplate
      viewData={viewData}
      onBackClick={handleBackClick}
      onAddFriend={handleAddFriend}
      friendRequestSent={friendRequestSent}
      activeTab={activeTab}
      onTabChange={setActiveTab}
    />
  );
}
