//@ts-nocheck
import { observable, action } from 'mobx';
import { useState } from 'react';
import { Api } from '../../services/api';
import { myLog } from '../../utils/log';
import { Alert } from 'react-native';
class Store {
  @observable isLoading = false;
  @observable isError = false;
  @observable signLoading = false;
  @observable reSendOTPLoading = false;

  @observable countDown;
  @observable currentTime = 10;

  @observable linkPreview = '';
  @observable linkContract = '';

  @action
  async signContractForBorrower(body, onSuccess?, onFailure?) {
    const response = await Api.getInstance().signContractForBorrower(body);
    myLog(response);
    if (response.kind === 'ok') {
      if (response.data.meta.errorCode === 200) {
        this.isError = false;
        this.linkPreview = response.data.data;
        if (onSuccess) {
          onSuccess(response.data.data);
        }
      } else {
        if (onFailure) {
          onFailure();
        }
        Alert.alert('Thông báo', response.data.meta.errorMessage, [
          { text: 'Đồng ý' },
        ]);
      }
    } else {
      this.isLoading = false;
      this.isError = false;
      if (onFailure) {
        onFailure();
      }
      Alert.alert('Thông báo', 'Lỗi đã xảy ra. Vui lòng thực hiện lại', [
        { text: 'Đồng ý' },
      ]);
    }
  }

  @action
  async confirmSignContractForBorrower(body, onSuccess?, onFailure?) {
    try {
      this.isLoading = true;
      const response = await Api.getInstance().confirmSignContractForBorrower(
        body
      );
      this.isLoading = false;
      myLog(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.linkContract = response.data.data;
          if (onSuccess) {
            onSuccess(response.data.data);
          }
        } else {
          if (onFailure) {
            onFailure();
          }
          Alert.alert('Thông báo', response.data.meta.errorMessage, [
            { text: 'Đồng ý' },
          ]);
        }
      } else {
        if (onFailure) {
          onFailure();
        }
        Alert.alert('Thông báo', 'Lỗi đã xảy ra. Vui lòng thực hiện lại', [
          { text: 'Đồng ý' },
        ]);
      }
    } catch (e) {
      if (onFailure) {
        onFailure();
      }
      Alert.alert('Thông báo', 'Lỗi đã xảy ra. Vui lòng thực hiện lại', [
        { text: 'Đồng ý' },
      ]);
    }
  }

  @action
  async reSendOTP(body, onSuccess?, onFailure?) {
    try {
      this.reSendOTPLoading = true;
      const response = await Api.getInstance().eSignSendOTP(body);
      this.reSendOTPLoading = false;
      myLog(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          if (onSuccess) {
            onSuccess(response.data.data);
          }
        } else {
          if (onFailure) {
            onFailure();
          }
          Alert.alert('Thông báo', response.data.meta.errorMessage, [
            { text: 'Đồng ý' },
          ]);
        }
      } else {
        if (onFailure) {
          onFailure();
        }
        Alert.alert('Thông báo', 'Lỗi đã xảy ra. Vui lòng thực hiện lại', [
          { text: 'Đồng ý' },
        ]);
      }
    } catch (e) {
      if (onFailure) {
        onFailure();
      }
      Alert.alert('Thông báo', 'Lỗi đã xảy ra. Vui lòng thực hiện lại', [
        { text: 'Đồng ý' },
      ]);
    }
  }

  @action
  async getPreviewContract(id, onSuccess, onError, callback) {
    try {
      const response = await Api.getInstance().previewContract(id);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          if (onSuccess) onSuccess(response.data.data);
        } else {
          Alert.alert('Thông báo', response.data.meta.errorMessage, [
            {
              text: 'Đồng ý',
              onPress: () => {
                if (callback) callback();
              },
            },
          ]);
          if (onError) onError();
        }
      } else {
        Alert.alert('Thông báo', 'Có lỗi xảy ra. Vui lòng thử lại sau');
        if (onError) onError();
      }
    } catch (error) {
      Alert.alert('Thông báo', 'Có lỗi xảy ra. Vui lòng thử lại sau');
      if (onError) onError();
    }
  }
}
const eSignStore = new Store();
export default eSignStore;
