import { TicketMessage } from "@frontend/kitui";
import { useUserStore } from "@root/stores/user";

interface UseMessageOwnershipProps {
  message: TicketMessage;
  sessionId?: string;
  ticketUserId?: string;
}

interface UseMessageOwnershipResult {
  isOwnMessage: boolean;
  isUnread: boolean;
}

export const useMessageOwnership = ({ 
  message, 
  sessionId,
  ticketUserId 
}: UseMessageOwnershipProps): UseMessageOwnershipResult => {
  const userId = useUserStore((state) => state.user?._id);
  
  // Определяем владельца сообщения
  const isOwnMessage = (sessionId || userId || ticketUserId) === message.user_id;
  
  // Сообщение считается непрочитанным если:
  // 1. Оно не моё
  // 2. Не отмечено как прочитанное (shown.me !== 1)
  // 3. Не является системным (ticket_id !== "111")
  const isUnread = !isOwnMessage && message.shown?.me !== 1 && message.ticket_id !== "111";

  return {
    isOwnMessage,
    isUnread
  };
};

interface UseUnreadMessagesCountProps {
  messages: TicketMessage[];
  sessionId?: string;
  ticketUserId?: string;
}

export const useUnreadMessagesCount = ({
  messages,
  sessionId,
  ticketUserId
}: UseUnreadMessagesCountProps): number => {
  const userId = useUserStore((state) => state.user?._id);

  // Считаем непрочитанные сообщения до первого прочитанного или своего
  let unreadCount = 0;
  
  for (const message of messages) {
    const isOwnMessage = (sessionId || userId || ticketUserId) === message.user_id;
    
    // Если это моё сообщение - прерываем подсчет
    if (isOwnMessage) {
      break;
    }
    
    // Если это чужое сообщение и оно не прочитано и не системное - увеличиваем счетчик
    if (!isOwnMessage && message.shown?.me !== 1 && message.ticket_id !== "111") {
      unreadCount++;
    }
    
    // Если встретили прочитанное сообщение - прерываем подсчет
    if (message.shown?.me === 1) {
      break;
    }
  }

  return unreadCount;
}; 