/**
 * @copyright   (C) 2021 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
if (!window.Joomla) {
  throw new Error('Joomla API was not properly initialised!');
}

const copyToClipboardFallback = input => {
  input.focus();
  input.select();

  try {
    const copy = document.execCommand('copy');

    if (copy) {
      Joomla.renderMessages({
        message: [Joomla.Text._('COM_SCHEDULER_CONFIG_WEBCRON_LINK_COPY_SUCCESS')]
      });
    } else {
      Joomla.renderMessages({
        error: [Joomla.Text._('COM_SCHEDULER_CONFIG_WEBCRON_LINK_COPY_FAIL')]
      });
    }
  } catch (err) {
    Joomla.renderMessages({
      error: [err]
    });
  }
};

const copyToClipboard = () => {
  const button = document.getElementById('link-copy');
  button.addEventListener('click', ({
    currentTarget
  }) => {
    const input = currentTarget.previousElementSibling;

    if (!navigator.clipboard) {
      copyToClipboardFallback(input);
      return;
    }

    navigator.clipboard.writeText(input.value).then(() => {
      Joomla.renderMessages({
        message: [Joomla.Text._('COM_SCHEDULER_CONFIG_WEBCRON_LINK_COPY_SUCCESS')]
      });
    }, () => {
      Joomla.renderMessages({
        error: [Joomla.Text._('COM_SCHEDULER_CONFIG_WEBCRON_LINK_COPY_FAIL')]
      });
    });
  });
};

const onBoot = () => {
  copyToClipboard();
  document.removeEventListener('DOMContentLoaded', onBoot);
};

document.addEventListener('DOMContentLoaded', onBoot);
