import React from 'react';
import {Alert} from 'react-native';

import FeedbackView from './FeedbackView';
import {connect} from 'react-redux';
import {sendFeedBack} from '../../apis/Functions/General';
import {showLoading, hideLoading} from '../../actions/loadingAction';
import I18n from '../../helper/i18/i18n';
import {useNavigation} from '@react-navigation/native';
import {showAlert, TYPE} from '../../components/DropdownAlert';

const Feedback = (props) => {
  const naviation = useNavigation();
  const onClickSend = async (star_rate, imageAdd, txtInput) => {
    console.log(star_rate, imageAdd, txtInput);
    props.showLoading();
    const res = await sendFeedBack(
      createFormData(imageAdd, {
        star_rate,
        platform: Platform.OS,
        message: txtInput,
      }),
    );
    console.log('upload avatar', res);
    props.hideLoading();
    if (res?.status == 200 && res.data) {
      if (res.data.code == 200) {
        naviation.goBack();
        showAlert(TYPE.SUCCESS, I18n.t('Notification'), res.data.message);
      } else {
        showAlert(TYPE.ERROR, I18n.t('Notification'), res.data.message);
      }
    } else {
      showAlert(TYPE.ERROR, I18n.t('Notification'), 'upload fail');
    }
  };
  const createFormData = (photo, body) => {
    const data = new FormData();
    if (photo) {
      data.append('image_attach_file', {
        name: 'sign_img.jpg',
        type: 'image/jpg',
        uri: Platform.OS === 'android' ? photo : photo.replace('file://', ''),
      });
    }

    Object.keys(body).forEach((key) => {
      data.append(key, body[key]);
    });
    return data;
  };

  return <FeedbackView onClickSend={onClickSend} />;
};

const mapStateToProps = (state) => {
  return {
    user: state.userReducer,
  };
};
export default connect(mapStateToProps, {showLoading, hideLoading})(Feedback);