

import { observer } from "mobx-react";
import { useMemo } from "react";
// buzzwareTech imports
import { useTranslation } from "@buzzwaretech/i18n";
import type { TIssueServiceType } from "@buzzwaretech/types";
import { CollapsibleButton } from "@buzzwaretech/ui";
// hooks
import { useIssueDetail } from "@/hooks/store/use-issue-detail";
// local imports
import { IssueLinksActionButton } from "./quick-action-button";

type Props = {
  isOpen: boolean;
  issueId: string;
  disabled: boolean;
  issueServiceType: TIssueServiceType;
};

export const IssueLinksCollapsibleTitle = observer(
  function IssueLinksCollapsibleTitle(props: Props) {
    const { isOpen, issueId, disabled, issueServiceType } = props;
    // translation
    const { t } = useTranslation();
    // store hooks
    const {
      issue: { getIssueById },
    } = useIssueDetail(issueServiceType);

    // derived values
    const issue = getIssueById(issueId);

    const linksCount = issue?.link_count ?? 0;

    // indicator element
    const indicatorElement = useMemo(
      () => (
        <span className="flex items-center justify-center">
          <p className="text-14 !leading-3 text-tertiary">{linksCount}</p>
        </span>
      ),
      [linksCount],
    );

    return (
      <CollapsibleButton
        isOpen={isOpen}
        title={t("common.links")}
        indicatorElement={indicatorElement}
        actionItemElement={
          !disabled && (
            <IssueLinksActionButton
              issueServiceType={issueServiceType}
              disabled={disabled}
            />
          )
        }
      />
    );
  },
);
