import React from "react";
import classNames from "classnames";

import Announcement from "./Announcement";

const AnnouncementList = ({
  items,
  className,
  canRunActions,
  onDelete,
  onEdit,
  onSeen,
}) => {
  const buildHandler = (responderFn) => (announcement) => (evt) => {
    evt.preventDefault();
    responderFn(announcement);
  };

  const onAnnouncementEdit = buildHandler(onEdit);
  const onAnnouncementDelete = buildHandler(onDelete);

  const onAnnouncementSeen = (announcement) => () => {
    onSeen(announcement);
  };

  const getClassName = (idx) => {
    if (idx === 0) {
      return "pt-4 lg:pt-8";
    }

    if (idx === items.length - 1) {
      return "pb-4 lg:pb-8";
    }

    return "";
  };

  return (
    <div className={classNames("space-y-px", className)}>
      {items.map((item, idx) => (
        <Announcement
          className={getClassName(idx)}
          key={item.id}
          datetime={item.datetime}
          type={item.type}
          content={item.contentHtml}
          link={item.link}
          seen={item.seen}
          canRunActions={canRunActions}
          onEdit={onAnnouncementEdit(item)}
          onDelete={onAnnouncementDelete(item)}
          onSeen={onAnnouncementSeen(item)}
        />
      ))}
      {!items.length && (
        <p className="px-8 py-4 leading-snug text-sm md:text-base">
          Zatím žádná oznámení.
        </p>
      )}
    </div>
  );
};

export default AnnouncementList;