import { NativeModules, NativeEventEmitter } from 'react-native';

const { ConsistyAepsMinks } = NativeModules;
const AepsEvent = new NativeEventEmitter(ConsistyAepsMinks);

const removeSubscriptions = () => {
  AepsEvent.removeAllListeners('AEPS_PAYMENT_RESPONSE');
};

export const AEPS_DATA = {
  developer_key: '',
  developer_pass: '',
  retailer_mobile_number: '',
  partner_agent_id: '',
  txn_req_id: '',
  actionbar_title: '',
  latitude: 0.0,
  longitude: 0.0,
  imei: '',
  aadhar_no: '',
  customer_mobile_no: '',
  remark: '',
  udd: '',
  amount: '',
  amount_editable: false,
  type: 4,
};

export const AEPS_TYPE = [
  {
    type: 2,
    name: 'Cash Withdrawal',
  },
  {
    type: 4,
    name: 'Balance Enquiry',
  },
];

class AepsPayment {
  static makeAeps(data: any) {
    return new Promise(function (resolve) {
      AepsEvent.addListener('AEPS_PAYMENT_RESPONSE', (response) => {
        resolve(response);
        removeSubscriptions();
      });

      ConsistyAepsMinks.makeAEPS(
        data.developer_key,
        data.developer_pass,
        data.retailer_mobile_number,
        data.partner_agent_id,
        data.txn_req_id,
        data.actionbar_title,
        data.latitude,
        data.longitude,
        data.imei,
        data.aadhar_no,
        data.customer_mobile_no,
        data.remark,
        data.udd,
        data.amount,
        data.amount_editable,
        data.type
      );
    });
  }
}

export default AepsPayment;
