// @flow
import React from 'react';
import { FormField, FormFieldPrice } from 'component/common/form';

type Price = {
  currency: string,
  amount: number,
};

type DaemonSettings = {
  download_dir: string,
  share_usage_data: boolean,
  max_key_fee?: Price,
  max_connections_per_download?: number,
  save_files: boolean,
  save_blobs: boolean,
  ffmpeg_path: string,
};

type SetDaemonSettingArg = boolean | string | number | Price;

type Props = {
  daemonSettings: DaemonSettings,
  setDaemonSetting: (string, ?SetDaemonSettingArg) => void,
};

export default function MaxPurchasePrice(props: Props) {
  const { daemonSettings, setDaemonSetting } = props;

  const defaultMaxKeyFee = { currency: 'USD', amount: 50 };
  const disableMaxKeyFee = !(daemonSettings && daemonSettings.max_key_fee);

  function onKeyFeeDisableChange(isDisabled: boolean) {
    if (isDisabled) {
      setDaemonSetting('max_key_fee');
    }
  }

  function onKeyFeeChange(newValue: Price) {
    setDaemonSetting('max_key_fee', newValue);
  }

  return (
    <>
      <FormField
        type="radio"
        name="no_max_purchase_no_limit"
        checked={disableMaxKeyFee}
        label={__('No Limit')}
        onChange={() => onKeyFeeDisableChange(true)}
      />
      <FormField
        type="radio"
        name="max_purchase_limit"
        checked={!disableMaxKeyFee}
        onChange={() => {
          onKeyFeeDisableChange(false);
          onKeyFeeChange(defaultMaxKeyFee);
        }}
        label={__('Choose limit')}
      />

      <FormFieldPrice
        name="max_key_fee"
        min={0}
        onChange={onKeyFeeChange}
        price={daemonSettings.max_key_fee ? daemonSettings.max_key_fee : defaultMaxKeyFee}
        disabled={disableMaxKeyFee}
      />
    </>
  );
}