All files / libs/plan-agreements/components/src/lib/buttons/agreements/plan-agreement-finalize-button PlanAgreementFinalizeButton.tsx

100% Statements 45/45
100% Branches 3/3
100% Functions 0/0
100% Lines 45/45

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 461x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 1x 3x 3x 3x 3x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 3x 3x 1x  
import { memo, useCallback } from 'react';
import { FormattedMessage } from 'react-intl';
 
import { Button, Tooltip } from '@allshares/studio-design-system';
import { canFinalizeThisPlanAgreement } from '@amalia/kernel/auth/shared';
import { useAbilityContext } from '@amalia/kernel/auth/state';
import { useIsPlanAgreementLoading } from '@amalia/plan-agreements/state';
import { type PlanAgreement } from '@amalia/plan-agreements/types';
 
import { usePlanAgreementsModalsContext } from '../../../modals';
 
export interface PlanAgreementFinalizeButtonProps {
  readonly planAgreement: PlanAgreement;
}
 
export const PlanAgreementFinalizeButton = memo(function PlanAgreementFinalizeButton({
  planAgreement,
}: PlanAgreementFinalizeButtonProps) {
  const ability = useAbilityContext();
 
  const { openFinalizePlanAgreementModal } = usePlanAgreementsModalsContext();
  const isPlanAgreementLoading = useIsPlanAgreementLoading(planAgreement.id);
 
  const handleClickFinalize = useCallback(() => {
    openFinalizePlanAgreementModal(planAgreement);
  }, [openFinalizePlanAgreementModal, planAgreement]);
 
  return (
    canFinalizeThisPlanAgreement(ability, planAgreement) && (
      <Tooltip
        content={
          <FormattedMessage defaultMessage="Agreements are generated when you finalize the agreement template.{br}{br}You will no longer be able to edit plan agreement settings, including the template, after finalization. " />
        }
      >
        <Button
          disabled={isPlanAgreementLoading}
          variant="primary"
          onClick={handleClickFinalize}
        >
          <FormattedMessage defaultMessage="Finalize" />
        </Button>
      </Tooltip>
    )
  );
});