import { useCallback, useEffect } from "react";

import isBefore from "date-fns/isBefore";

import { useRandomPhrase } from "~/constants/phrases";
import { useLastSeenBoris } from "~/hooks/auth/useLastSeenBoris";
import { useBorisStats } from "~/hooks/boris/useBorisStats";
import { IComment } from "~/types";

export const useBoris = (comments: IComment[]) => {
  const title = useRandomPhrase("BORIS_TITLE");

  const { lastSeen, setLastSeen } = useLastSeenBoris();

  useEffect(() => {
    const last_comment = comments[0];

    if (!last_comment) return;

    if (
      !last_comment.created_at ||
      !lastSeen ||
      isBefore(new Date(lastSeen), new Date(last_comment.created_at))
    ) {
      return;
    }

    void setLastSeen(last_comment.created_at);
  }, [lastSeen, setLastSeen, comments]);

  const { stats, isLoading: isLoadingStats } = useBorisStats();

  return { stats, title, isLoadingStats };
};