// @flow
import React from 'react';
// @if TARGET='app'
import { ipcRenderer } from 'electron';
// @endif
import { Modal } from 'modal/modal';
import Button from 'component/button';
import I18nMessage from 'component/i18nMessage';

type Props = {
  closeModal: any => any,
  declineAutoUpdate: () => any,
};

type State = {
  disabled: boolean,
};

class ModalAutoUpdateDownloaded extends React.PureComponent<Props, State> {
  constructor(props: Props) {
    super(props);

    this.state = {
      disabled: false,
    };
  }

  render() {
    const { closeModal, declineAutoUpdate } = this.props;

    return (
      <Modal
        isOpen
        type="confirm"
        contentLabel={__('Upgrade Downloaded')}
        title={__('LBRY leveled up')}
        confirmButtonLabel={__('Upgrade Now')}
        abortButtonLabel={__('Not now')}
        confirmButtonDisabled={this.state.disabled}
        onConfirmed={() => {
          this.setState({ disabled: true });
          ipcRenderer.send('autoUpdateAccepted');
        }}
        onAborted={() => {
          declineAutoUpdate();
          closeModal();
        }}
      >
        <p>{__('A new version of LBRY is ready for you.')}</p>
        <p className="help">
          <I18nMessage
            tokens={{
              release_notes: (
                <Button
                  button="link"
                  label={__('release notes')}
                  href="https://github.com/lbryio/lbry-desktop/releases"
                />
              ),
            }}
          >
            Want to know what has changed? See the %release_notes%.
          </I18nMessage>
        </p>
      </Modal>
    );
  }
}

export default ModalAutoUpdateDownloaded;