"use client";

import { LogInNeeded } from "@/app/components/LogInNeeded/LogInNeeded";
import ReleasesOverview from "../components/ReleasesOverview/ReleasesOverview";
import { useUserStore } from "@/app/store/user-store";
import { endpoints } from "../api/config";
import { useEffect, useState } from "react";
import { getData } from "../api/api-utils";

export default function History() {
  const userStore = useUserStore();

  const [releases, setReleases] = useState();
  const [page, setPage] = useState(0);

  const [isNextPage, setIsNextPage] = useState(true);

  async function fetchData(page = 0) {
    if (userStore.token) {
      const url = `${endpoints.user.favorites}?page=${page}&token=${userStore.token}`;
      const data = await getData(url);

      if (data.content.length < 25) {
        setIsNextPage(false);
      } else {
        setIsNextPage(true);
      }

      // Handle initial load (page 0) or subsequent pagination
      if (page === 0) {
        setReleases(data.content);
      } else {
        setReleases([...releases, ...data.content]);
      }
    }
  }

  useEffect(() => {
    fetchData();
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, [userStore]);

  useEffect(() => {
    if (releases) {
      fetchData(page); // Use fetchData for pagination
    }
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, [page]);

  return (
    <>
      {!userStore.isAuth ? (
        <LogInNeeded />
      ) : !releases ? (
        <div className="center-align">
          <progress className="circle" />
        </div>
      ) : releases.length > 0 ? (
        <ReleasesOverview
          page={page}
          setPage={setPage}
          releases={releases}
          isNextPage={isNextPage}
        />
      ) : (
        <div className="absolute padding primary center middle small-round">
          <i className="extra">sentiment_dissatisfied</i>
          <h5>Здесь пока ничего нет.</h5>
          <p>Добавьте любимое аниме, что бы его не потерять.</p>
        </div>
      )}
    </>
  );
}