'use client';

import { useMemo } from 'react';
import { useAuth } from '@/contexts/AuthContext';
import { hasMinRole } from '@/shared/types/roles';
import type { UserRole } from '@/shared/types/roles';

export interface ReviewPermissions {
  canReview: boolean;
  canApprove: boolean;
  canManageReviewers: boolean;
  canViewReviewQueue: boolean;
  canSubmitDocument: boolean;
  role: UserRole | null;
}

export function useReviewPermission(): ReviewPermissions {
  const { userRole } = useAuth();

  return useMemo(() => {
    if (userRole === null) {
      return {
        canReview: false,
        canApprove: false,
        canManageReviewers: false,
        canViewReviewQueue: false,
        canSubmitDocument: false,
        role: null,
      };
    }

    return {
      canReview: hasMinRole(userRole, 'reviewer'),
      canApprove: hasMinRole(userRole, 'admin'),
      canManageReviewers: hasMinRole(userRole, 'admin'),
      canViewReviewQueue: hasMinRole(userRole, 'reviewer'),
      canSubmitDocument: hasMinRole(userRole, 'member'),
      role: userRole,
    };
  }, [userRole]);
}
