import { useCallback } from 'react';

import type { PresaveButtonProps } from '..';

import { ServiceTypes } from '~/lib/types';
import { useAppToast } from '~/src/components/NextApp/lib/CoreUi';
import useAppleMusicPresave from '~/src/hooks/presave/useAppleMusicPresave';
import { useI18n } from '~/src/lib/i18n';
import { useItemContext } from '../../../../ItemPageContext';
import ServiceButton from '../../../lib/ServiceButton';

const AppleMusicPresaveButton = (props: Omit<PresaveButtonProps, 'type'>) => {
  const { t } = useI18n();
  const itemContext = useItemContext();
  const { item } = itemContext.data;

  const appleMusicPresave = useAppleMusicPresave({
    item,

    onSuccess: useCallback(() => {
      appToast({
        text: t('item.events.presaveSuccess'),
      });
    }, []),
  });

  const appToast = useAppToast();

  return (
    <ServiceButton
      {...props}
      serviceType={ServiceTypes.ITUNES}
      isLoading={appleMusicPresave.isLoading}
      onClick={useCallback(() => appleMusicPresave.start(), [])}
    />
  );
};

export default AppleMusicPresaveButton;
