UNPKG

prixa-telemedicine-rn-sdk

Version:

Welcome to Prixa Telemedicine. This is React Native SDK to our platform, Prixa Telemedicine.

10,172 lines 352 kB
'use strict';

Object.defineProperty(exports, '__esModule', { value: true });

var I18n = require('i18n-js');
var PropTypes = require('prop-types');
var React = require('react');
var reactNavigation = require('react-navigation');
var reactNavigationStack = require('react-navigation-stack');
var reactRedux = require('react-redux');
var redux = require('redux');
var reactNative = require('react-native');
var AutoHeightImage = require('react-native-auto-height-image');
var axios = require('axios');
var Markdown = require('react-native-markdown-renderer');
var AsyncStorage = require('@react-native-community/async-storage');
var Timeline = require('react-native-timeline-flatlist');
var _ = require('lodash');
var ParallaxScrollView = require('react-native-parallax-scroll-view');
var moment = require('moment');
var reactNativeWebview = require('react-native-webview');
var Modal = require('react-native-modal');
var reactNativeWheelPickerAndroid = require('react-native-wheel-picker-android');
var Slider = require('react-native-slider');
var PickerSelect = require('react-native-picker-select');
var Accordion = require('react-native-collapsible/Accordion');
var DateTimePicker = require('@react-native-community/datetimepicker');
var CameraRoll = require('@react-native-community/cameraroll');
var RNFetchBlob = require('rn-fetch-blob');
var AppIntroSlider = require('react-native-app-intro-slider');
var InCallManager = require('react-native-incall-manager');
var reactNativeVoximplant = require('react-native-voximplant');
var currency = require('currency.js');
var Svg = require('react-native-svg');
var SearchableDropdown = require('react-native-searchable-dropdown');

function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }

var I18n__default = /*#__PURE__*/_interopDefaultLegacy(I18n);
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var AutoHeightImage__default = /*#__PURE__*/_interopDefaultLegacy(AutoHeightImage);
var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
var Markdown__default = /*#__PURE__*/_interopDefaultLegacy(Markdown);
var AsyncStorage__default = /*#__PURE__*/_interopDefaultLegacy(AsyncStorage);
var Timeline__default = /*#__PURE__*/_interopDefaultLegacy(Timeline);
var ___default = /*#__PURE__*/_interopDefaultLegacy(_);
var ParallaxScrollView__default = /*#__PURE__*/_interopDefaultLegacy(ParallaxScrollView);
var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
var Modal__default = /*#__PURE__*/_interopDefaultLegacy(Modal);
var Slider__default = /*#__PURE__*/_interopDefaultLegacy(Slider);
var PickerSelect__default = /*#__PURE__*/_interopDefaultLegacy(PickerSelect);
var Accordion__default = /*#__PURE__*/_interopDefaultLegacy(Accordion);
var DateTimePicker__default = /*#__PURE__*/_interopDefaultLegacy(DateTimePicker);
var CameraRoll__default = /*#__PURE__*/_interopDefaultLegacy(CameraRoll);
var RNFetchBlob__default = /*#__PURE__*/_interopDefaultLegacy(RNFetchBlob);
var AppIntroSlider__default = /*#__PURE__*/_interopDefaultLegacy(AppIntroSlider);
var InCallManager__default = /*#__PURE__*/_interopDefaultLegacy(InCallManager);
var currency__default = /*#__PURE__*/_interopDefaultLegacy(currency);
var Svg__default = /*#__PURE__*/_interopDefaultLegacy(Svg);
var SearchableDropdown__default = /*#__PURE__*/_interopDefaultLegacy(SearchableDropdown);

function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
  try {
    var info = gen[key](arg);
    var value = info.value;
  } catch (error) {
    reject(error);
    return;
  }

  if (info.done) {
    resolve(value);
  } else {
    Promise.resolve(value).then(_next, _throw);
  }
}

function _asyncToGenerator(fn) {
  return function () {
    var self = this,
        args = arguments;
    return new Promise(function (resolve, reject) {
      var gen = fn.apply(self, args);

      function _next(value) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
      }

      function _throw(err) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
      }

      _next(undefined);
    });
  };
}

function _defineProperty(obj, key, value) {
  if (key in obj) {
    Object.defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
  } else {
    obj[key] = value;
  }

  return obj;
}

function _extends() {
  _extends = Object.assign || function (target) {
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i];

      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }

    return target;
  };

  return _extends.apply(this, arguments);
}

function _inheritsLoose(subClass, superClass) {
  subClass.prototype = Object.create(superClass.prototype);
  subClass.prototype.constructor = subClass;
  subClass.__proto__ = superClass;
}

function _assertThisInitialized(self) {
  if (self === void 0) {
    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  }

  return self;
}

var localizations = {
  date: {
    "default": "%-d %B %Y"
  },
  time: {
    "default": "%H:%M"
  }
};
var translations = {
  address: "Alamat",
  addressDelivery: "Alamat Pengiriman",
  age: "Usia",
  ageText: "Tahun",
  birthdate: "Tanggal Lahir",
  cancel: "Batal",
  "class": "Kelas",
  done: "Selesai",
  education: "Pendidikan",
  email: "Email",
  female: "Perempuan",
  gender: "Jenis Kelamin",
  hospital: "Rumah Sakit",
  intendedFor: "Ditujukan untuk siapa sesi konsultasi ini?",
  male: "Laki-Laki",
  myDependency: "Tertanggung",
  dependencyNotAvailable: "Daftar peserta tidak tersedia",
  next: "Selanjutnya",
  others: "Lainnya",
  phoneNumber: "Nomor Telepon",
  cellphoneNumber: "Nomor Ponsel",
  practiceLicense: "SIP",
  lifepackSubscriptionIdWithNumber: "Nomor Pesanan: {{no}}",
  lifepackSubscriptionId: "Nomor Pesanan",
  prescriptionNoAlt: "Nomor Resep",
  prescriptionDate: "Tanggal Resep Dibuat",
  redeemDate: "Tanggal Pembelian",
  prescriptionDelivery: "Status Pesanan",
  prescriptionStatusDelivery: "Status Pesanan: {{status}}",
  prescriptionDeliveryStatuses: {
    in_review: "Resep sedang ditinjau",
    prescription_approved: "Resep disetujui apoteker",
    prescriprion_adjusted: "Resep diterima dengan perubahan",
    order_cancelled: "Pesanan dibatalkan",
    prescription_rejected: "Resep ditolak apoteker",
    pending_address: "Menantikan alamat",
    payment_order: "Menunggu pembayaran",
    waiting_for_payment: "Menunggu pembayaran",
    payment_successful: "Pembayaran berhasil",
    payment_expired: "Tempo pembayaran kadaluarsa",
    payment_failed: "Pembayaran tidak berhasil",
    order_processed: "Pesanan dipersiapkan",
    waiting_for_pickup: "Menunggu dijemput",
    picked_up: "Pesanan sudah dijemput",
    on_delivery: "Pesanan dalam pengantaran",
    delivered: "Pesanan diterima",
    delivery_failed: "Pengantaran gagal",
    active: "Aktif",
    inactive: "Tidak aktif"
  },
  prescriptionDeliveryDetail: "Informasi Pengiriman",
  prescriptionDeliveryDetailRecipientName: "Nama Penerima",
  prescriptionDeliveryView: "Detail Status",
  prescriptionDownload: "Unduh Resep",
  prescriptionClaim: "Proses Klaim",
  prescriptionPatient: "Nama Pasien",
  prescriptionPayment: "Informasi Pembayaran",
  orderInfo: "Informasi Pesanan",
  prescriptionPaymentMedicine: "Total Biaya Obat",
  prescriptionPaymentDelivery: "Total Biaya Pengiriman",
  prescriptionPaymentTotal: "Total Harga",
  prescriptionPaymentDownload: "Unduh Invoice",
  prescriptionRejectReason: "Alasan ditolak: {{reason}}",
  prescriptionView: "Detail Pesanan",
  prescriptionRedeem: "Tebus Resep",
  prescriptionDetail: "Lihat Resep",
  prescriptionOn: "{{date}}, Pukul {{time}}",
  previous: "Sebelumnya",
  registrationCertificate: "STR",
  select: "Pilih",
  sessionOn: "Sesi pada {{date}}",
  skip: "Lewati",
  status: "Status",
  defaultStatusDelivery: "Status Pesanan: Resep Ditebus",
  consultationFor: "Pemeriksaan Untuk",
  day: "hari",
  week: "minggu",
  month: "bulan"
};
var id = {
  localizations: localizations,
  translations: translations
};

var internationalizations = {
  id: {
    date: {
      prixa: id.localizations.date
    },
    prixa: id.translations,
    time: {
      prixa: id.localizations.time
    }
  }
};

var CHANGE_CLIENT_ID = "CHANGE_CLIENT_ID";
function saveClientId(clientId) {
  return {
    clientId: clientId,
    type: CHANGE_CLIENT_ID
  };
}

var initState = {
  clientId: ""
};
function appConfig(state, action) {
  if (state === void 0) {
    state = initState;
  }

  switch (action.type) {
    case CHANGE_CLIENT_ID:
      return _extends({}, state, {
        clientId: action.clientId
      });

    default:
      return state;
  }
}

var CHANGE_INTRO_SLIDES = "CHANGE_INTRO_SLIDES";
function changeIntroSlides(introSlides) {
  return {
    introSlides: introSlides,
    type: CHANGE_INTRO_SLIDES
  };
}

function introSlides(state, action) {
  if (state === void 0) {
    state = [];
  }

  switch (action.type) {
    case CHANGE_INTRO_SLIDES:
      return action.introSlides.map(function (introSlide, index) {
        return _extends({
          key: index.toString()
        }, introSlide);
      });

    default:
      return state;
  }
}

var dynamicColors = {
  darkerPrimary: "#0056B3",
  darkestPrimary: "#1F4166",
  lighterPrimary: "#4695EA",
  lightestPrimary: "#E5F2FF",
  primary: "#006FE6"
};

var CHANGE_THEME_COLORS = "CHANGE_THEME_COLORS";
function changeThemeColors(themeColors) {
  return {
    themeColors: themeColors,
    type: CHANGE_THEME_COLORS
  };
}

function themeColors(state, action) {
  if (state === void 0) {
    state = dynamicColors;
  }

  switch (action.type) {
    case CHANGE_THEME_COLORS:
      return _extends({}, state, action.themeColors);

    default:
      return state;
  }
}

var CHANGE_TOKEN = "CHANGE_TOKEN";
var CHANGE_ACCESS_TOKEN = "CHANGE_ACCESS_TOKEN";
var CHANGE_FCM_TOKEN = "CHANGE_FCM_TOKEN";
var CHANGE_JWT_TOKEN = "CHANGE_JWT_TOKEN";
var RESET_TOKEN_STORE = "RESET_TOKEN_STORE";
function changeFcmToken(fcmToken) {
  return {
    fcmToken: fcmToken,
    type: CHANGE_FCM_TOKEN
  };
}
function changeToken(token) {
  return {
    token: token,
    type: CHANGE_TOKEN
  };
}
function changeAccessToken(accessToken) {
  return {
    accessToken: accessToken,
    type: CHANGE_ACCESS_TOKEN
  };
}
function resetTokenStore() {
  return {
    type: RESET_TOKEN_STORE
  };
}

function token(state, action) {
  if (state === void 0) {
    state = null;
  }

  switch (action.type) {
    case CHANGE_TOKEN:
      return _extends({}, state, {
        token: action.token
      });

    case CHANGE_ACCESS_TOKEN:
      return _extends({}, state, {
        accessToken: action.accessToken
      });

    case CHANGE_FCM_TOKEN:
      return _extends({}, state, {
        fcmToken: action.fcmToken
      });

    case CHANGE_JWT_TOKEN:
      return _extends({}, state, {
        jwt: action.jwt
      });

    case RESET_TOKEN_STORE:
      return {};

    default:
      return state;
  }
}

var reducers = redux.combineReducers({
  appConfig: appConfig,
  introSlides: introSlides,
  themeColors: themeColors,
  token: token
});

var store = redux.createStore(reducers);

var fonts = reactNative.Platform.OS === 'android' ? {
  bold: {
    fontFamily: "OpenSans-Bold"
  },
  light: {
    fontFamily: "OpenSans-Light"
  },
  regular: {
    fontFamily: "OpenSans-Regular"
  }
} : {
  bold: {
    fontWeight: "700"
  },
  light: {
    fontWeight: "300"
  },
  regular: {
    fontWeight: "400"
  }
};

var REACTIONS$1 = [{
  label: "Sangat Buruk",
  src: require("../assets/1a.png"),
  bigSrc: require("../assets/1.png")
}, {
  label: "Buruk",
  src: require("../assets/2a.png"),
  bigSrc: require("../assets/2.png")
}, {
  label: "Baik",
  src: require("../assets/3a.png"),
  bigSrc: require("../assets/3.png")
}, {
  label: "Sangat Baik",
  src: require("../assets/4a.png"),
  bigSrc: require("../assets/4.png")
}];
var WIDTH = 320;
var DISTANCE = WIDTH / REACTIONS$1.length;
var END = WIDTH - DISTANCE;

var EmojiRating = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(EmojiRating, _React$Component);

  function EmojiRating(props) {
    var _this;

    _this = _React$Component.call(this, props) || this;
    var s = _this.props.selected ? _this.props.selected.key : 2;
    _this._pan = new reactNative.Animated.Value(s * DISTANCE);
    _this.state = {
      selected: _this.props.selected
    };
    return _this;
  }

  var _proto = EmojiRating.prototype;

  _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {
    var _this2 = this;

    this._panResponder = reactNative.PanResponder.create({
      onMoveShouldSetResponderCapture: function onMoveShouldSetResponderCapture() {
        return true;
      },
      onMoveShouldSetPanResponderCapture: function onMoveShouldSetPanResponderCapture() {
        return true;
      },
      onPanResponderGrant: function onPanResponderGrant(e, gestureState) {
        _this2._pan.setOffset(_this2._pan._value);

        _this2._pan.setValue(0);
      },
      onPanResponderMove: reactNative.Animated.event([null, {
        dx: this._pan
      }]),
      onPanResponderRelease: function onPanResponderRelease() {
        _this2._pan.flattenOffset();

        var offset = Math.max(0, _this2._pan._value + 0);
        if (offset < 0) return _this2._pan.setValue(0);

        if (offset >= END) {
          _this2.updatePan(END);

          return _this2._pan.setValue(offset);
        }

        var modulo = offset % DISTANCE;
        offset = modulo >= DISTANCE / 2 ? offset + (DISTANCE - modulo) : offset - modulo;

        _this2.updatePan(offset);
      }
    });
  };

  _proto.updatePan = function updatePan(toValue) {
    this.setState({
      selected: {
        key: toValue / DISTANCE,
        value: REACTIONS$1[toValue / DISTANCE].label
      }
    });
    this.props.onSelected({
      key: toValue / DISTANCE,
      value: REACTIONS$1[toValue / DISTANCE].label
    });
    reactNative.Animated.spring(this._pan, {
      toValue: toValue,
      friction: 7
    }).start();
  };

  _proto.render = function render() {
    var _this3 = this;

    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$z.container
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$z.wrap
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$z.line
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$z.reactions
    }, REACTIONS$1.map(function (reaction, idx) {
      var u = idx * DISTANCE;
      var inputRange = [u - 20, u, u + 20];
      var scaleOutputRange = [1, 0.25, 1];
      var topOutputRange = [0, 10, 0];
      var colorOutputRange = ["#999", "#222", "#999"];

      if (u - 20 < 0) {
        inputRange = [u, u + 20];
        scaleOutputRange = [0.25, 1];
        topOutputRange = [10, 0];
        colorOutputRange = ["#222", "#999"];
      }

      if (u + 20 > END) {
        inputRange = [u - 20, u];
        scaleOutputRange = [1, 0.25];
        topOutputRange = [0, 10];
        colorOutputRange = ["#999", "#222"];
      }

      return /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this3.updatePan(u);
        },
        activeOpacity: 0.9,
        key: idx
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$z.smileyWrap
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Animated.Image, {
        source: reaction.src,
        style: [styles$z.smiley, {
          transform: [{
            scale: _this3.state.selected ? _this3._pan.interpolate({
              inputRange: inputRange,
              outputRange: scaleOutputRange,
              extrapolate: "clamp"
            }) : 1
          }]
        }]
      })), /*#__PURE__*/React__default['default'].createElement(reactNative.Animated.Text, {
        style: [styles$z.reactionText, {
          top: _this3.state.selected ? _this3._pan.interpolate({
            inputRange: inputRange,
            outputRange: topOutputRange,
            extrapolate: "clamp"
          }) : 0,
          color: _this3.state.selected ? _this3._pan.interpolate({
            inputRange: inputRange,
            outputRange: colorOutputRange,
            extrapolate: "clamp"
          }) : "#999"
        }]
      }, reaction.label));
    }), this.state.selected && /*#__PURE__*/React__default['default'].createElement(reactNative.Animated.View, _extends({}, this._panResponder.panHandlers, {
      style: [styles$z.bigSmiley, {
        transform: [{
          translateX: this._pan.interpolate({
            inputRange: [0, END],
            outputRange: [0, END],
            extrapolate: "clamp"
          })
        }]
      }]
    }), REACTIONS$1.map(function (reaction, idx) {
      var inputRange = [(idx - 1) * DISTANCE, idx * DISTANCE, (idx + 1) * DISTANCE];
      var outputRange = [0, 1, 0];

      if (idx == 0) {
        inputRange = [idx * DISTANCE, (idx + 1) * DISTANCE];
        outputRange = [1, 0];
      }

      if (idx == REACTIONS$1.length - 1) {
        inputRange = [(idx - 1) * DISTANCE, idx * DISTANCE];
        outputRange = [0, 1];
      }

      return /*#__PURE__*/React__default['default'].createElement(reactNative.Animated.Image, {
        key: idx,
        source: reaction.bigSrc,
        style: [styles$z.bigSmileyImage, {
          opacity: _this3._pan.interpolate({
            inputRange: inputRange,
            outputRange: outputRange,
            extrapolate: "clamp"
          })
        }]
      });
    })))));
  };

  return EmojiRating;
}(React__default['default'].Component);
var size = 42;
var styles$z = reactNative.StyleSheet.create({
  container: {
    justifyContent: "center",
    alignItems: "center",
    backgroundColor: "transparent",
    marginTop: 30
  },
  wrap: {
    width: WIDTH
  },
  welcome: _extends({
    fontSize: 18,
    textAlign: "center",
    color: "#777"
  }, fonts.light, {
    marginBottom: 50
  }),
  reactions: {
    flexDirection: "row",
    justifyContent: "space-between",
    backgroundColor: "transparent"
  },
  smileyWrap: {
    width: DISTANCE,
    height: DISTANCE,
    justifyContent: "center",
    alignItems: "center"
  },
  smiley: {
    width: size,
    height: size,
    borderRadius: size / 2,
    backgroundColor: "#c7ced3"
  },
  bigSmiley: {
    width: DISTANCE,
    height: DISTANCE,
    borderRadius: DISTANCE / 2,
    backgroundColor: "#ffb18d",
    position: "absolute",
    top: 0,
    left: 0
  },
  bigSmileyImage: {
    width: DISTANCE,
    height: DISTANCE,
    position: "absolute",
    top: 0,
    left: 0
  },
  reactionText: _extends({
    fontSize: 12,
    textAlign: "center",
    color: "#999"
  }, fonts.light, {
    marginTop: 5
  }),
  line: {
    height: 4 / reactNative.PixelRatio.get(),
    backgroundColor: "#eee",
    width: WIDTH - (DISTANCE - size),
    left: (DISTANCE - size) / 2,
    top: DISTANCE / 2 + 2 / reactNative.PixelRatio.get()
  }
});

var styles$y = reactNative.StyleSheet.create({
  button: {
    alignItems: "center",
    flexDirection: "row",
    paddingHorizontal: 16,
    paddingVertical: 16
  },
  container: {
    paddingVertical: 24
  },
  text: _extends({}, fonts.bold, {
    fontSize: 16
  })
});

var Header = /*#__PURE__*/function (_Component) {
  _inheritsLoose(Header, _Component);

  function Header() {
    return _Component.apply(this, arguments) || this;
  }

  var _proto = Header.prototype;

  _proto.render = function render() {
    var color = "#FFF";
    var iconStart = /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/round_navigate_before_white.png")
    });
    var justifyContent = "flex-start";
    return /*#__PURE__*/React__default['default'].createElement(reactNative.SafeAreaView, {
      style: styles$y.container
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: this.props.onPress
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles$y.button, {
        justifyContent: justifyContent
      }]
    }, iconStart, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$y.text, {
        color: color
      }]
    }, this.props.text))));
  };

  return Header;
}(React.Component);

var Pulse = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(Pulse, _React$Component);

  function Pulse(props) {
    var _this;

    _this = _React$Component.call(this, props) || this;
    _this.value = new reactNative.Animated.Value(0);
    return _this;
  }

  var _proto = Pulse.prototype;

  _proto.componentDidMount = function componentDidMount() {
    var delay = this.props.delay;
    reactNative.Animated.sequence([reactNative.Animated.delay(delay), reactNative.Animated.loop(reactNative.Animated.timing(this.value, {
      duration: 3600,
      toValue: 1,
      useNativeDriver: true
    }))]).start();
  };

  _proto.render = function render() {
    var themeColors = this.props.themeColors;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.Animated.View, {
      style: [styles$x.pulse, {
        backgroundColor: themeColors.lightestPrimary,
        opacity: this.value.interpolate({
          inputRange: [0, 1],
          outputRange: [1, 0]
        }),
        transform: [{
          scale: this.value.interpolate({
            inputRange: [0, 1],
            outputRange: [1, 3]
          })
        }]
      }]
    });
  };

  return Pulse;
}(React__default['default'].Component);

_defineProperty(Pulse, "propTypes", {
  delay: PropTypes__default['default'].number.isRequired
});

var styles$x = reactNative.StyleSheet.create({
  pulse: {
    borderRadius: 150,
    height: 100,
    position: "absolute",
    width: 100
  }
});
var Pulse$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(Pulse);

var PulseLoader = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(PulseLoader, _React$Component);

  function PulseLoader() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = PulseLoader.prototype;

  _proto.render = function render() {
    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$w.container
    }, Array.from({
      length: 4
    }).map(function (ignored, index) {
      return /*#__PURE__*/React__default['default'].createElement(Pulse$1, {
        delay: index * 900,
        key: index
      });
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/avatars/doctor.png"),
      style: styles$w.image
    }));
  };

  return PulseLoader;
}(React__default['default'].Component);
var styles$w = reactNative.StyleSheet.create({
  container: {
    alignItems: "center",
    height: 300,
    justifyContent: "center"
  },
  image: {
    borderRadius: 50,
    height: 100,
    width: 100
  }
});

var STATIC_CARD_NUMBERS = ["parents", "partner", "children"];

var DependencyDetail = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(DependencyDetail, _React$Component);

  function DependencyDetail() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = DependencyDetail.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        cardNumber = _this$props.cardNumber,
        fullName = _this$props.fullName,
        themeColors = _this$props.themeColors;
    return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      numberOfLines: 1,
      style: [styles$v.fullName, {
        color: themeColors.darkerPrimary
      }]
    }, fullName), !STATIC_CARD_NUMBERS.includes(cardNumber) && /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$v.cardNumber, {
        color: themeColors.darkestPrimary
      }]
    }, cardNumber));
  };

  return DependencyDetail;
}(React__default['default'].Component);

_defineProperty(DependencyDetail, "propTypes", {
  cardNumber: PropTypes__default['default'].string.isRequired,
  fullName: PropTypes__default['default'].string.isRequired
});

var styles$v = reactNative.StyleSheet.create({
  cardNumber: _extends({
    fontSize: 16
  }, fonts.regular),
  fullName: _extends({
    fontSize: 20
  }, fonts.bold)
});
var DependencyDetail$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(DependencyDetail);

var AVATARS$1 = {
  f: [require("../assets/avatars/girl/1.png"), require("../assets/avatars/girl/2.png"), require("../assets/avatars/girl/3.png"), require("../assets/avatars/girl/4.png"), require("../assets/avatars/girl/5.png"), require("../assets/avatars/girl/6.png"), require("../assets/avatars/girl/7.png"), require("../assets/avatars/girl/8.png"), require("../assets/avatars/girl/9.png"), require("../assets/avatars/girl/10.png"), require("../assets/avatars/girl/11.png"), require("../assets/avatars/girl/12.png"), require("../assets/avatars/girl/13.png"), require("../assets/avatars/girl/14.png"), require("../assets/avatars/girl/15.png"), require("../assets/avatars/girl/16.png"), require("../assets/avatars/girl/17.png"), require("../assets/avatars/girl/18.png"), require("../assets/avatars/girl/19.png"), require("../assets/avatars/girl/20.png"), require("../assets/avatars/girl/21.png"), require("../assets/avatars/girl/22.png"), require("../assets/avatars/girl/23.png"), require("../assets/avatars/girl/24.png"), require("../assets/avatars/girl/25.png"), require("../assets/avatars/girl/26.png"), require("../assets/avatars/girl/27.png")],
  m: [require("../assets/avatars/boy/1.png"), require("../assets/avatars/boy/2.png"), require("../assets/avatars/boy/3.png"), require("../assets/avatars/boy/4.png"), require("../assets/avatars/boy/5.png"), require("../assets/avatars/boy/6.png"), require("../assets/avatars/boy/7.png"), require("../assets/avatars/boy/8.png"), require("../assets/avatars/boy/9.png"), require("../assets/avatars/boy/10.png"), require("../assets/avatars/boy/11.png"), require("../assets/avatars/boy/12.png"), require("../assets/avatars/boy/13.png"), require("../assets/avatars/boy/14.png"), require("../assets/avatars/boy/15.png"), require("../assets/avatars/boy/16.png"), require("../assets/avatars/boy/17.png"), require("../assets/avatars/boy/18.png"), require("../assets/avatars/boy/19.png"), require("../assets/avatars/boy/20.png"), require("../assets/avatars/boy/21.png"), require("../assets/avatars/boy/22.png"), require("../assets/avatars/boy/23.png")]
};
var STATIC_AVATARS = {
  parents: require("../assets/avatars/parents.png"),
  partner: require("../assets/avatars/partner.png"),
  children: require("../assets/avatars/children.png")
};

var DependencyAvatar = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(DependencyAvatar, _React$Component);

  function DependencyAvatar() {
    var _this;

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;

    _defineProperty(_assertThisInitialized(_this), "state", {
      avatarImg: null
    });

    return _this;
  }

  var _proto = DependencyAvatar.prototype;

  _proto.selectAvatar = function selectAvatar() {
    var _this$props = this.props,
        cardNumber = _this$props.cardNumber,
        gender = _this$props.gender;
    var isStatic = STATIC_CARD_NUMBERS.includes(cardNumber);

    if (isStatic) {
      this.setState({
        avatarImg: STATIC_AVATARS[cardNumber]
      });
    } else {
      var seed = cardNumber.split("").reduce(function (currentSeed, c) {
        return (currentSeed + c.charCodeAt(0)) % AVATARS$1[gender].length;
      }, 0);
      this.setState({
        avatarImg: AVATARS$1[gender][seed]
      });
    }
  };

  _proto.componentDidMount = function componentDidMount() {
    this.selectAvatar();
  };

  _proto.render = function render() {
    var _this$props2 = this.props;
        _this$props2.cardNumber;
        _this$props2.gender;
        var themeColors = _this$props2.themeColors;
    var avatarImg = this.state.avatarImg;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: avatarImg,
      style: [styles$u.avatar, {
        backgroundColor: themeColors.lightestPrimary
      }]
    });
  };

  return DependencyAvatar;
}(React__default['default'].Component);

_defineProperty(DependencyAvatar, "propTypes", {
  cardNumber: PropTypes__default['default'].string.isRequired,
  gender: PropTypes__default['default'].oneOf(["f", "m", ""]).isRequired
});

var styles$u = reactNative.StyleSheet.create({
  avatar: {
    borderRadius: 30,
    height: 60,
    width: 60
  }
});
var DependencyAvatar$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(DependencyAvatar);

var DependencyAvatarWithDetail = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(DependencyAvatarWithDetail, _React$Component);

  function DependencyAvatarWithDetail() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = DependencyAvatarWithDetail.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        cardNumber = _this$props.cardNumber,
        fullName = _this$props.fullName,
        gender = _this$props.gender;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$t.container
    }, /*#__PURE__*/React__default['default'].createElement(DependencyAvatar$1, {
      cardNumber: cardNumber,
      gender: gender
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$t.detailContainer
    }, /*#__PURE__*/React__default['default'].createElement(DependencyDetail$1, {
      cardNumber: cardNumber,
      fullName: fullName
    })));
  };

  return DependencyAvatarWithDetail;
}(React__default['default'].Component);

_defineProperty(DependencyAvatarWithDetail, "propTypes", {
  cardNumber: PropTypes__default['default'].string.isRequired,
  fullName: PropTypes__default['default'].string.isRequired,
  gender: PropTypes__default['default'].oneOf(["f", "m", ""]).isRequired
});
var styles$t = reactNative.StyleSheet.create({
  container: {
    alignItems: "center",
    flexDirection: "row",
    flexGrow: 1,
    padding: 10,
    paddingEnd: 100,
    width: 0
  },
  detailContainer: {
    marginStart: 15
  }
});

var staticColors = {
  cavernous: "#515151",
  forestFern: "#5DBE66",
  grey: "#808080",
  thimbleberry: "#E64F4F",
  white: "#FFFFFF",
  red: "#B80F0A"
};

var DependencyItem = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(DependencyItem, _React$Component);

  function DependencyItem() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = DependencyItem.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        fullName = _this$props.fullName,
        cardNumber = _this$props.cardNumber,
        gender = _this$props.gender,
        onSelect = _this$props.onSelect;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$s.container
    }, /*#__PURE__*/React__default['default'].createElement(DependencyAvatarWithDetail, {
      fullName: fullName,
      cardNumber: cardNumber,
      gender: gender
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        onSelect(cardNumber);
      },
      style: styles$s.selectButton
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$s.selectText
    }, I18n__default['default'].t("prixa.select"))));
  };

  return DependencyItem;
}(React__default['default'].Component);

_defineProperty(DependencyItem, "propTypes", {
  fullName: PropTypes__default['default'].string.isRequired,
  cardNumber: PropTypes__default['default'].string.isRequired,
  gender: PropTypes__default['default'].oneOf(["f", "m", ""]).isRequired,
  onSelect: PropTypes__default['default'].func.isRequired
});
var styles$s = reactNative.StyleSheet.create({
  container: {
    alignItems: "center",
    flex: 1,
    flexDirection: "row"
  },
  selectButton: {
    backgroundColor: staticColors.forestFern,
    borderRadius: 20,
    margin: 10,
    paddingHorizontal: 20,
    paddingVertical: 5
  },
  selectText: _extends({
    color: staticColors.white,
    fontSize: 18
  }, fonts.regular)
});

var styles$r = reactNative.StyleSheet.create({
  text: _extends({}, fonts.regular, {
    fontSize: 15,
    textAlign: "center",
    paddingTop: 50,
    marginHorizontal: 15,
    paddingBottom: 50
  })
});

var DependencyList = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(DependencyList, _React$Component);

  function DependencyList() {
    var _this;

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;

    _defineProperty(_assertThisInitialized(_this), "renderItem", function (_ref) {
      var fullName = _ref.fullName,
          cardNumber = _ref.cardNumber,
          gender = _ref.gender,
          hasDoB = _ref.hasDoB;
      var _onSelect = _this.props.onSelect;
      return /*#__PURE__*/React__default['default'].createElement(DependencyItem, {
        fullName: fullName,
        cardNumber: cardNumber,
        gender: gender,
        onSelect: function onSelect() {
          _onSelect(cardNumber, fullName, hasDoB);
        }
      });
    });

    return _this;
  }

  var _proto = DependencyList.prototype;

  _proto.render = function render() {
    var _this2 = this;

    var data = this.props.data;
    return data.length > 0 ? /*#__PURE__*/React__default['default'].createElement(reactNative.FlatList, {
      data: data,
      keyExtractor: function keyExtractor(item) {
        return item.cardNumber;
      },
      renderItem: function renderItem(_ref2) {
        var item = _ref2.item;
        return _this2.renderItem(item);
      }
    }) : /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$r.text
    }, I18n__default['default'].t("prixa.dependencyNotAvailable")));
  };

  return DependencyList;
}(React__default['default'].Component);

_defineProperty(DependencyList, "propTypes", {
  data: PropTypes__default['default'].array.isRequired,
  onSelect: PropTypes__default['default'].func.isRequired
});

var activeConsultation = null;
function setConsultation(consultation) {
  activeConsultation = consultation;
}
function getConsultation() {
  return activeConsultation;
}
var medical = null;
function setMedical(height, weight) {
  if (height && weight) {
    medical = {
      height: height,
      weight: weight
    };
  } else {
    medical = null;
  }
}
function getMedical() {
  return medical;
}
var baseUrl = null;
var prixaEngineBaseUrl = null;
var apiKey = null;
var partnerAppId = null;
var partnerId = null;
var voximplantAccountName = null;
var voximplantAppName = null;
var APP_BASE_URL = null; // export const BAYMAX_WIDGET_URL = "https://poc-widget.netlify.app";

var BAYMAX_WIDGET_URL = null;
function setDevMode(devMode) {
  if (devMode) {
    APP_BASE_URL = "https://dev.api.core.prixa.ai/api";
    BAYMAX_WIDGET_URL = "https://dev.baymaxwidget.prixa.ai";
    baseUrl = "https://dev.api.core.prixa.ai/api/v1/";
    prixaEngineBaseUrl = "https://dev.api.core.prixa.ai/api/v1/nalar/";
    apiKey = "WZQRQzxN6bDxkwb8Lr7b2liEIM5E22JY";
    partnerAppId = "e58b641d-5714-45d0-9453-af17f805dc74";
    partnerId = "2255079e-752b-486d-886b-c00be708b6a1";
    voximplantAccountName = "prixa";
    voximplantAppName = "test";
  } else {
    APP_BASE_URL = "https://api.core.prixa.ai/api";
    BAYMAX_WIDGET_URL = "https://baymaxwidget.prixa.ai";
    baseUrl = "https://api.core.prixa.ai/api/v1/";
    prixaEngineBaseUrl = "https://api.core.prixa.ai/api/v1/nalar/";
    apiKey = "WZQRQzxN6bDxkwb8Lr7b2liEIM5E22JY";
    partnerAppId = "e58b641d-5714-45d0-9453-af17f805dc74";
    partnerId = "2255079e-752b-486d-886b-c00be708b6a1";
    voximplantAccountName = "prixa";
    voximplantAppName = "main";
  }
}
function getBaseUrl() {
  return baseUrl;
}
function getPrixaEngine() {
  return {
    prixaEngineBaseUrl: prixaEngineBaseUrl,
    apiKey: apiKey,
    partnerAppId: partnerAppId,
    partnerId: partnerId
  };
}
function getVoximplantAccountName() {
  return voximplantAccountName;
}
function getVoximplantAppName() {
  return voximplantAppName;
} // source: https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript

function getParameterByName(name, url) {
  if (!url) url = window.location.href;
  name = name.replace(/[\[\]]/g, "\\$&");
  var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
      results = regex.exec(url);
  if (!results) return null;
  if (!results[2]) return "";
  return decodeURIComponent(results[2].replace(/\+/g, " "));
}

var API = axios__default['default'].create({
  baseURL: APP_BASE_URL
});
API.interceptors.request.use(function (config) {
  // Do something before request is sent
  var _store$getState = store.getState(),
      accessToken = _store$getState.token.accessToken;

  if (accessToken && config.url !== APP_BASE_URL + "/v2/profile/token") config.headers.Authorization = "Bearer " + accessToken;
  return config;
}, function (error) {
  return Promise.reject(error);
});
var isAlreadyFetchingAccessToken = false;
var isAlreadyReturnGlobalError = false;
var subscribers = [];

function onAccessTokenFetched(access_token) {
  subscribers = subscribers.filter(function (callback) {
    return callback(access_token);
  });
}

function addSubscriber(callback) {
  subscribers.push(callback); // add request queue
}

var bypassRefresh = function bypassRefresh(originalRequest) {
  if (originalRequest.url.includes("v1/users/refresh") || originalRequest.url.includes("/login") || originalRequest.method === "delete") {
    return true;
  }

  return false;
}; // intercept if token expired,then extend


API.interceptors.response.use(function (response) {
  return response;
}, function (error) {
  if (!error || !error.response) {
    if (!isAlreadyReturnGlobalError) {
      isAlreadyReturnGlobalError = true;
      setTimeout(function () {
        isAlreadyReturnGlobalError = false;
      }, 10000);
    }
  }

  var config = error.config,
      status = error.response.status;
  var originalRequest = config;

  if (status === 401 && originalRequest.method !== "delete" && !bypassRefresh(originalRequest)) {
    console.log("try reauth");

    if (!isAlreadyFetchingAccessToken) {
      isAlreadyFetchingAccessToken = true;
      console.log("reauth processing");
      API.post(APP_BASE_URL + "/v2/profile/token", {}, {
        headers: {
          Authorization: "Bearer " + store.getState().token.token
        }
      }).then(function (_ref) {
        var _ref$data = _ref.data,
            access_token = _ref$data.access_token,
            metadata = _ref$data.metadata;
        isAlreadyFetchingAccessToken = false;
        var newTokenBearer = "Bearer " + access_token;
        var newAccessToken = access_token;
        console.log("reauth success, save new token");
        store.dispatch(changeAccessToken(newAccessToken));
        store.dispatch(saveClientId(metadata.client_id));
        API.defaults.headers.Authorization = "Bearer " + newAccessToken;
        originalRequest.headers.Authorization = newTokenBearer;
        onAccessTokenFetched(newAccessToken);
      })["catch"](function (error) {
        console.log((error == null ? void 0 : error.response) || error);
        reactNative.Alert.alert("Gagal Login", "Terjadi kesalahan sistem, mohon untuk mengulang proses beberapa saat lagi.", [{
          text: "OK"
        }], {
          cancelable: false
        });
      });
    }

    var retryOriginalRequest = new Promise(function (resolve) {
      addSubscriber(function (access_token) {
        console.log("try request again");
        store.dispatch(changeAccessToken(access_token));
        originalRequest.headers.Authorization = "Bearer " + access_token;
        resolve(axios__default['default'](originalRequest));
      });
    });
    return retryOriginalRequest;
  }

  if (status === 429) {
    return axios__default['default'](originalRequest);
  }

  return Promise.reject(error);
});

var styles$q = reactNative.StyleSheet.create({
  container: {
    flex: 1
  },
  contentContainer: {
    paddingVertical: 30,
    paddingHorizontal: 5,
    backgroundColor: "#FFF",
    borderTopEndRadius: 30,
    borderTopStartRadius: 30
  },
  imageContainer: {
    flex: 1,
    justifyContent: "center",
    alignItems: "center"
  },
  text: _extends({}, fonts.regular, {
    fontSize: 22,
    textAlign: "center",
    marginTop: 10,
    marginHorizontal: 15,
    marginBottom: 30
  })
});

var AskScreen$2 = /*#__PURE__*/function (_Component) {
  _inheritsLoose(AskScreen, _Component);

  function AskScreen(props) {
    var _this;

    _this = _Component.call(this, props) || this;

    _defineProperty(_assertThisInitialized(_this), "_handlePress", function () {
      _this.props.navigation.goBack();
    });

    _this.state = {
      dependencies: [],
      loading: false
    };
    return _this;
  }

  var _proto = AskScreen.prototype;

  _proto.fetchDependencies = /*#__PURE__*/function () {
    var _fetchDependencies = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
      var patientId, _yield$API$get, dependencyList;

      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              _context.prev = 0;
              patientId = this.props.navigation.state.params.patientId;
              _context.next = 4;
              return API.get(APP_BASE_URL + "/v2/profile/" + patientId + "/dependencies");

            case 4:
              _yield$API$get = _context.sent;
              dependencyList = _yield$API$get.data.data;
              this.setState({
                dependencies: dependencyList || ""
              });
              _context.next = 12;
              break;

            case 9:
              _context.prev = 9;
              _context.t0 = _context["catch"](0);
              console.log((_context.t0 == null ? void 0 : _context.t0.response) || _context.t0);

            case 12:
            case "end":
              return _context.stop();
          }
        }
      }, _callee, this, [[0, 9]]);
    }));

    function fetchDependencies() {
      return _fetchDependencies.apply(this, arguments);
    }

    return fetchDependencies;
  }();

  _proto.setStaticData = function setStaticData() {
    this.setState({
      dependencies: [{
        fullName: "Orang Tua",
        cardNumber: "parents"
      }, {
        fullName: "Pasangan",
        cardNumber: "partner"
      }, {
        fullName: "Anak",
        cardNumber: "children"
      }]
    });
  };

  _proto.componentDidMount = /*#__PURE__*/function () {
    var _componentDidMount = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
      var _this$props$navigatio, config, dependenceStatus, dependencies;

      return regeneratorRuntime.wrap(function _callee2$(_context2) {
        while (1) {
          switch (_context2.prev = _context2.next) {
            case 0:
              _this$props$navigatio = this.props.navigation.state.params, config = _this$props$navigatio.config, dependenceStatus = _this$props$navigatio.dependenceStatus;
              this.setState({
                loading: true
              });
              _context2.prev = 2;

              if (!((config == null ? void 0 : config.is_dependent_enabled) && !!dependenceStatus)) {
                _context2.next = 10;
                break;
              }

              _context2.next = 6;
              return this.fetchDependencies();

            case 6:
              dependencies = this.state.dependencies;

              if (dependencies.length === 0) {
                this.setStaticData();
              }

              _context2.next = 11;
              break;

            case 10:
              this.setStaticData();

            case 11:
              _context2.next = 16;
              break;

            case 13:
              _context2.prev = 13;
              _context2.t0 = _context2["catch"](2);
              console.log("Dependency failed to fetch");

            case 16:
              this.setState({
                loading: false
              });

            case 17:
            case "end":
              return _context2.stop();
          }
        }
      }, _callee2, this, [[2, 13]]);
    }));

    function componentDidMount() {
      return _componentDidMount.apply(this, arguments);
    }

    return componentDidMount;
  }();

  _proto.render = function render() {
    var _this2 = this;

    var loading = this.state.loading;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles$q.container, {
        backgroundColor: this.props.themeColors.primary
      }]
    }, /*#__PURE__*/React__default['default'].createElement(Header, {
      onPress: this._handlePress,
      position: "start",
      text: "Batal",
      theme: "light"
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$q.imageContainer
    }, /*#__PURE__*/React__default['default'].createElement(AutoHeightImage__default['default'], {
      width: reactNative.Dimensions.get("window").width - 120,
      source: require("../assets/illustrations/ask.png")
    })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$q.contentContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$q.text, {
        color: this.props.themeColors.darkestPrimary
      }]
    }, "Untuk siapakah konsultasi ini?"), loading ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        flex: 1,
        justifyContent: "center",
        paddingVertical: 50
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
      size: "large",
      color: this.props.themeColors.primary
    })) : /*#__PURE__*/React__default['default'].createElement(DependencyList, {
      data: this.state.dependencies.map(function (item) {
        if (!!item["fullName"]) {
          // from static data
          return {
            cardNumber: item.cardNumber,
            fullName: item.fullName,
            gender: "",
            hasDoB: true
          };
        } else {
          // from dynamic data
          return {
            cardNumber: item["card_number"],
            fullName: item["first_name"] + " " + item["last_name"],
            gender: item["gender"].toLowerCase(),
            hasDoB: !!item.dob
          };
        }
      }),
      onSelect: function onSelect(cardNumber, fullName, hasDoB) {
        console.log({
          hasDoB: hasDoB
        });

        _this2.props.navigation.replace("Symptoms", _extends({}, _this2.props.navigation.state.params, {
          policyNumber: cardNumber,
          fullName: fullName,
          hasDoB: hasDoB // patientId: this.props.navigation.state.params.patientId,
          // hasViId: this.props.navigation.state.params.hasViId,
          // enableVoiceCall: this.props.navigation.state.params
          //   .enableVoiceCall,
          // enableVideoCall: this.props.navigation.state.params
          //   .enableVideoCall,

        }));
      }
    })));
  };

  return AskScreen;
}(React.Component);

var ChildrenScreen = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(AskScreen$2);

var ConsentScreen = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(ConsentScreen, _React$Component);

  function ConsentScreen() {
    var _this;

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;

    _defineProperty(_assertThisInitialized(_this), "state", {
      isLoading: true,
      consent: null
    });

    return _this;
  }

  var _proto = ConsentScreen.prototype;

  _proto.fetchData = /*#__PURE__*/function () {
    var _fetchData = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
      var _this$props$navigatio, patientId, clientId, _yield$API$get, inboxes, _yield$API$get2, consent, inbox;

      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              _context.prev = 0;
              _this$props$navigatio = this.props.navigation.state.params, patientId = _this$props$navigatio.patientId, clientId = _this$props$navigatio.clientId;
              _context.next = 4;
              return API.get(APP_BASE_URL + "/v1/clients/" + clientId + "/inboxes");

            case 4:
              _yield$API$get = _context.sent;
              inboxes = _yield$API$get.data.data;
              _context.next = 8;
              return API.get(APP_BASE_URL + "/v2/profile/" + patientId + "/consent");

            case 8:
              _yield$API$get2 = _context.sent;
              consent = _yield$API$get2.data.data;
              // execption no inbox in baymax
              if (inboxes.length === 0) reactNative.Alert.alert("Kesalahan", "Ada kesalahan pada sistem dokter, harap melaporkan hal ini ke pusat aduan."); // find DOKTER UMUM inbox

              inbox = inboxes.find(function (_ref) {
                var name = _ref.name;
                return name.toUpperCase() === "DOKTER UMUM";
              });
              this.setState({
                isLoading: false,
                consent: consent,
                inboxId: inbox.id || inboxes[0].id,
                websiteToken: inbox.website_token || inboxes[0].website_token
              });
              _context.next = 18;
              break;

            case 15:
              _context.prev = 15;
              _context.t0 = _context["catch"](0);
              console.log((_context.t0 == null ? void 0 : _context.t0.response) || _context.t0);

            case 18:
            case "end":
              return _context.stop();
          }
        }
      }, _callee, this, [[0, 15]]);
    }));

    function fetchData() {
      return _fetchData.apply(this, arguments);
    }

    return fetchData;
  }();

  _proto.componentDidMount = function componentDidMount() {
    this.fetchData();
  };

  _proto.handleCancelPress = function handleCancelPress() {
    this.props.navigation.goBack();
  };

  _proto.render = function render() {
    var _this2 = this;

    var themeColors = this.props.themeColors;
    var content = null;

    if (this.state.isLoading) {
      content = /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
        size: "large",
        color: themeColors.primary
      });
    } else {
      content = /*#__PURE__*/React__default['default'].createElement(Markdown__default['default'], {
        style: markdownStyles
      }, this.state.consent);
    }

    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles$p.container, {
        backgroundColor: themeColors.primary
      }]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.SafeAreaView, null, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return _this2.handleCancelPress();
      },
      style: styles$p.cancelButton
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/icons/round_arrow_back_ios_white_18dp.png")
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$p.cancelText
    }, I18n__default['default'].t("prixa.cancel")))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        flexGrow: 1,
        backgroundColor: themeColors.lightestPrimary,
        borderTopEndRadius: 40,
        borderTopStartRadius: 40
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.ScrollView, {
      style: {
        flex: 1
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        padding: 25
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        marginBottom: 5,
        alignSelf: "center",
        color: themeColors.darkestPrimary,
        fontSize: 22
      }, fonts.bold)
    }, "Penjelasan dan Persetujuan"), content))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: "white",
        padding: 25,
        flexDirection: "row",
        justifyContent: "space-between"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      style: {
        backgroundColor: "#E64F4F",
        borderRadius: 20,
        paddingVertical: 12,
        paddingHorizontal: 48
      },
      onPress: function onPress() {
        return _this2.props.navigation.goBack();
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: "white",
        fontSize: 16
      }, fonts.bold)
    }, "Tolak")), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      style: {
        backgroundColor: "#5DBE66",
        borderRadius: 20,
        paddingVertical: 12,
        paddingHorizontal: 48
      },
      onPress: function onPress() {
        if (_this2.state.inboxId && _this2.state.websiteToken && _this2.state.consent) {
          _this2.props.navigation.replace("Waiting", _extends({}, _this2.props.navigation.state.params, {
            inboxId: _this2.state.inboxId,
            websiteToken: _this2.state.websiteToken // params passed {
            //   patientId,
            //   cardNumberDependency,
            //   consultation,
            //   complaintIds,
            //   duration,
            //   durationUnit,
            //   sympthomSummary,
            //   fullName,
            //   hasViId,
            //   enableVoiceCall,
            //   enableVideoCall,
            //   clientId,
            // }

          }));
        } else reactNative.Alert.alert("Whoops", "Proses belum selesai, mohon tunggu beberapa saat lagi.");
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: "white",
        fontSize: 16
      }, fonts.bold)
    }, "Setuju"))));
  };

  return ConsentScreen;
}(React__default['default'].Component);

var styles$p = reactNative.StyleSheet.create({
  cancelButton: {
    alignItems: "center",
    flexDirection: "row",
    padding: 15
  },
  cancelText: _extends({
    color: staticColors.white,
    fontSize: 16,
    marginStart: 15
  }, fonts.bold),
  container: {
    flex: 1
  }
});
var markdownStyles = reactNative.StyleSheet.create({
  text: {
    textAlign: "justify"
  },
  heading: {
    textAlign: "justify"
  },
  bullet_list: {
    textAlign: "justify"
  },
  ordered_list: {
    textAlign: "justify"
  },
  list_item: {
    textAlign: "justify"
  }
});
var ConsentScreen$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(ConsentScreen);

var TimelineSection = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(TimelineSection, _React$Component);

  function TimelineSection() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = TimelineSection.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        date = _this$props.date,
        themeColors = _this$props.themeColors;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$o.section, {
        color: themeColors.darkestPrimary
      }]
    }, I18n__default['default'].t("prixa.sessionOn", {
      date: I18n__default['default'].l("date.prixa.default", date)
    }));
  };

  return TimelineSection;
}(React__default['default'].Component);

_defineProperty(TimelineSection, "propTypes", {
  date: PropTypes__default['default'].instanceOf(Date).isRequired
});

var styles$o = reactNative.StyleSheet.create({
  section: _extends({
    fontSize: 16
  }, fonts.regular)
});
var TimelineSection$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(TimelineSection);

var AVATARS = {
  f: [require("../assets/avatars/woman/1.png"), require("../assets/avatars/woman/2.png"), require("../assets/avatars/woman/3.png"), require("../assets/avatars/woman/4.png"), require("../assets/avatars/woman/5.png"), require("../assets/avatars/woman/6.png"), require("../assets/avatars/woman/7.png"), require("../assets/avatars/woman/8.png"), require("../assets/avatars/woman/9.png"), require("../assets/avatars/woman/10.png"), require("../assets/avatars/woman/11.png"), require("../assets/avatars/woman/12.png"), require("../assets/avatars/woman/13.png"), require("../assets/avatars/woman/14.png"), require("../assets/avatars/woman/15.png"), require("../assets/avatars/woman/16.png"), require("../assets/avatars/woman/17.png"), require("../assets/avatars/woman/18.png"), require("../assets/avatars/woman/19.png"), require("../assets/avatars/woman/20.png"), require("../assets/avatars/woman/21.png"), require("../assets/avatars/woman/22.png")],
  m: [require("../assets/avatars/man/1.png"), require("../assets/avatars/man/2.png"), require("../assets/avatars/man/3.png"), require("../assets/avatars/man/4.png"), require("../assets/avatars/man/5.png"), require("../assets/avatars/man/6.png"), require("../assets/avatars/man/7.png"), require("../assets/avatars/man/8.png"), require("../assets/avatars/man/9.png"), require("../assets/avatars/man/10.png"), require("../assets/avatars/man/11.png"), require("../assets/avatars/man/12.png"), require("../assets/avatars/man/13.png"), require("../assets/avatars/man/14.png"), require("../assets/avatars/man/15.png"), require("../assets/avatars/man/16.png"), require("../assets/avatars/man/17.png"), require("../assets/avatars/man/18.png")]
};

var PatientAvatar = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(PatientAvatar, _React$Component);

  function PatientAvatar() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = PatientAvatar.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        cardNumber = _this$props.cardNumber,
        gender = _this$props.gender,
        themeColors = _this$props.themeColors;
    var seed = cardNumber.split("").reduce(function (currentSeed, c) {
      return (currentSeed + c.charCodeAt(0)) % AVATARS[gender].length;
    }, 0);
    return /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: AVATARS[gender][seed],
      style: [styles$n.avatar, {
        backgroundColor: themeColors.lightestPrimary
      }]
    });
  };

  return PatientAvatar;
}(React__default['default'].Component);

_defineProperty(PatientAvatar, "propTypes", {
  cardNumber: PropTypes__default['default'].string.isRequired,
  gender: PropTypes__default['default'].oneOf(["f", "m"]).isRequired
});

var styles$n = reactNative.StyleSheet.create({
  avatar: {
    borderRadius: 30,
    height: 60,
    width: 60
  }
});
var PatientAvatar$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(PatientAvatar);

var PatientDetail = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(PatientDetail, _React$Component);

  function PatientDetail() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = PatientDetail.prototype;

  _proto.render = function render() {
    var _this$props = this.props;
        _this$props.cardNumber;
        var fullName = _this$props.fullName;
    return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$m.fullName
    }, fullName));
  };

  return PatientDetail;
}(React__default['default'].Component);

_defineProperty(PatientDetail, "propTypes", {
  cardNumber: PropTypes__default['default'].string.isRequired,
  fullName: PropTypes__default['default'].string.isRequired
});
var styles$m = reactNative.StyleSheet.create({
  cardNumber: _extends({
    color: staticColors.white,
    fontSize: 16
  }, fonts.light),
  fullName: _extends({
    color: staticColors.white,
    fontSize: 20
  }, fonts.regular)
});

var PatientAvatarWithDetail = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(PatientAvatarWithDetail, _React$Component);

  function PatientAvatarWithDetail() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = PatientAvatarWithDetail.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        cardNumber = _this$props.cardNumber,
        fullName = _this$props.fullName,
        gender = _this$props.gender;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$l.container
    }, /*#__PURE__*/React__default['default'].createElement(PatientAvatar$1, {
      cardNumber: cardNumber,
      gender: gender
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$l.detailContainer
    }, /*#__PURE__*/React__default['default'].createElement(PatientDetail, {
      cardNumber: cardNumber,
      fullName: fullName
    })));
  };

  return PatientAvatarWithDetail;
}(React__default['default'].Component);

_defineProperty(PatientAvatarWithDetail, "propTypes", {
  cardNumber: PropTypes__default['default'].string.isRequired,
  fullName: PropTypes__default['default'].string.isRequired,
  gender: PropTypes__default['default'].oneOf(["f", "m"]).isRequired
});
var styles$l = reactNative.StyleSheet.create({
  container: {
    alignItems: "center",
    flexDirection: "row",
    flexGrow: 1
  },
  detailContainer: {
    marginStart: 15
  }
});

var PatientField = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(PatientField, _React$Component);

  function PatientField() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = PatientField.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        containerStyle = _this$props.containerStyle,
        editable = _this$props.editable,
        label = _this$props.label,
        onEditPress = _this$props.onEditPress,
        themeColors = _this$props.themeColors,
        value = _this$props.value;
    var content = /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles$k.container, containerStyle]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$k.label, {
        color: themeColors.primary
      }]
    }, label.toUpperCase()), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        alignItems: "center",
        flexDirection: "row"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$k.value
    }, value), editable && /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/icons/baseline_edit_black_18dp.png"),
      style: {
        marginStart: 10
      }
    })));

    if (editable) {
      return /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: onEditPress,
        style: containerStyle
      }, content);
    } else {
      return content;
    }
  };

  return PatientField;
}(React__default['default'].Component);

_defineProperty(PatientField, "defaultProps", {
  editable: false,
  onEditPress: function onEditPress() {}
});

_defineProperty(PatientField, "propTypes", {
  containerStyle: reactNative.ViewPropTypes.style,
  editable: PropTypes__default['default'].bool,
  label: PropTypes__default['default'].string.isRequired,
  onEditPress: PropTypes__default['default'].func,
  value: PropTypes__default['default'].string.isRequired
});

var styles$k = reactNative.StyleSheet.create({
  container: {
    padding: 5
  },
  label: _extends({
    fontSize: 16
  }, fonts.bold),
  value: _extends({
    color: staticColors.cavernous,
    fontSize: 16
  }, fonts.bold)
});
var PatientField$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(PatientField);

var PatientDetailMore = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(PatientDetailMore, _React$Component);

  function PatientDetailMore() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = PatientDetailMore.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        gender = _this$props.gender,
        height = _this$props.height,
        onEditPress = _this$props.onEditPress,
        weight = _this$props.weight;
    var genders = {
      f: I18n__default['default'].t("prixa.female"),
      m: I18n__default['default'].t("prixa.male")
    };
    return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$j.rowContainer
    }, /*#__PURE__*/React__default['default'].createElement(PatientField$1, {
      containerStyle: styles$j.halfWidth,
      label: I18n__default['default'].t("prixa.gender"),
      value: genders[gender]
    }), /*#__PURE__*/React__default['default'].createElement(PatientField$1, {
      containerStyle: styles$j.halfWidth,
      label: I18n__default['default'].t("prixa.age"),
      value: this.props.age === null || this.props.age === undefined ? '-' : this.props.age + " " + I18n__default['default'].t("prixa.ageText")
    })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$j.rowContainer
    }, /*#__PURE__*/React__default['default'].createElement(PatientField$1, {
      containerStyle: styles$j.halfWidth,
      editable: true,
      label: "Tinggi Badan",
      onEditPress: onEditPress,
      value: height ? height + " cm" : "-"
    }), /*#__PURE__*/React__default['default'].createElement(PatientField$1, {
      containerStyle: styles$j.halfWidth,
      editable: true,
      label: "Berat Badan",
      onEditPress: onEditPress,
      value: weight ? weight + " kg" : "-"
    })));
  };

  return PatientDetailMore;
}(React__default['default'].Component);

_defineProperty(PatientDetailMore, "propTypes", {
  "class": PropTypes__default['default'].string,
  gender: PropTypes__default['default'].oneOf(["f", "m"]).isRequired,
  height: PropTypes__default['default'].number,
  onEditPress: PropTypes__default['default'].func,
  organization: PropTypes__default['default'].string.isRequired,
  weight: PropTypes__default['default'].number,
  age: PropTypes__default['default'].number
});

var styles$j = reactNative.StyleSheet.create({
  fullWidth: {
    flex: 1
  },
  halfWidth: {
    flex: 0.5
  },
  organization: _extends({
    fontSize: 16,
    marginBottom: 10,
    textAlign: "center"
  }, fonts.bold),
  rowContainer: {
    flexDirection: "row",
    marginBottom: 10
  }
});
var PatientDetailMore$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(PatientDetailMore);

var DoctorAvatar = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(DoctorAvatar, _React$Component);

  function DoctorAvatar() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = DoctorAvatar.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        avatarUrl = _this$props.avatarUrl,
        themeColors = _this$props.themeColors;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: {
        uri: avatarUrl
      },
      style: [styles$i.avatar, {
        backgroundColor: themeColors.lightestPrimary
      }]
    });
  };

  return DoctorAvatar;
}(React__default['default'].Component);

_defineProperty(DoctorAvatar, "propTypes", {
  avatarUrl: PropTypes__default['default'].string
});

var styles$i = reactNative.StyleSheet.create({
  avatar: {
    borderRadius: 15,
    height: 30,
    width: 30
  }
});
var DoctorAvatar$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(DoctorAvatar);

var DoctorDetail = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(DoctorDetail, _React$Component);

  function DoctorDetail() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = DoctorDetail.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        fullName = _this$props.fullName,
        specialities = _this$props.specialities,
        themeColors = _this$props.themeColors;
    return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$h.fullName
    }, fullName), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$h.specialities, {
        color: themeColors.lighterPrimary
      }]
    }, specialities));
  };

  return DoctorDetail;
}(React__default['default'].Component);

_defineProperty(DoctorDetail, "propTypes", {
  fullName: PropTypes__default['default'].string.isRequired,
  specialities: PropTypes__default['default'].string.isRequired
});

var styles$h = reactNative.StyleSheet.create({
  fullName: _extends({
    color: staticColors.cavernous,
    fontSize: 14
  }, fonts.bold),
  specialities: _extends({
    fontSize: 12
  }, fonts.regular)
});
var DoctorDetail$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(DoctorDetail);

var DoctorAvatarWithDetail = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(DoctorAvatarWithDetail, _React$Component);

  function DoctorAvatarWithDetail() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = DoctorAvatarWithDetail.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        avatarUrl = _this$props.avatarUrl,
        fullName = _this$props.fullName,
        specialities = _this$props.specialities;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$g.container
    }, /*#__PURE__*/React__default['default'].createElement(DoctorAvatar$1, {
      avatarUrl: avatarUrl
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$g.detailContainer
    }, /*#__PURE__*/React__default['default'].createElement(DoctorDetail$1, {
      fullName: fullName,
      specialities: specialities
    })));
  };

  return DoctorAvatarWithDetail;
}(React__default['default'].Component);

_defineProperty(DoctorAvatarWithDetail, "propTypes", {
  avatarUrl: PropTypes__default['default'].string,
  fullName: PropTypes__default['default'].string.isRequired,
  specialities: PropTypes__default['default'].string.isRequired
});
var styles$g = reactNative.StyleSheet.create({
  container: {
    alignItems: "center",
    flexDirection: "row"
  },
  detailContainer: {
    marginStart: 10
  }
});

var TimelineItem = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(TimelineItem, _React$Component);

  function TimelineItem() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = TimelineItem.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        createdAt = _this$props.createdAt,
        dependent = _this$props.dependent,
        dependentStatus = _this$props.dependentStatus,
        doctor = _this$props.doctor,
        patientName = _this$props.patientName,
        summary = _this$props.summary,
        themeColors = _this$props.themeColors,
        transactionDependency = _this$props.transactionDependency;
    return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$f.createdAt, {
        color: themeColors.darkestPrimary
      }]
    }, I18n__default['default'].l("time.prixa.default", createdAt)), /*#__PURE__*/React__default['default'].createElement(DoctorAvatarWithDetail, {
      avatarUrl: doctor.avatarUrl,
      fullName: doctor.fullName,
      specialities: doctor.specialities
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        marginTop: 16
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, null, I18n__default['default'].t("prixa.consultationFor")), !!transactionDependency || !!dependentStatus ? /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$f.patient
    }, dependentStatus ? dependent : transactionDependency.first_name + " " + transactionDependency.last_name) : /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$f.patient
    }, patientName)), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$f.summary
    }, summary));
  };

  return TimelineItem;
}(React__default['default'].Component);

_defineProperty(TimelineItem, "propTypes", {
  createdAt: PropTypes__default['default'].instanceOf(Date).isRequired,
  doctor: PropTypes__default['default'].shape({
    avatarUrl: PropTypes__default['default'].string,
    fullName: PropTypes__default['default'].string.isRequired,
    specialities: PropTypes__default['default'].string.isRequired
  }).isRequired,
  summary: PropTypes__default['default'].string.isRequired,
  patientName: PropTypes__default['default'].string.isRequired,
  transactionDependency: PropTypes__default['default'].object,
  dependentStatus: PropTypes__default['default'].number,
  dependent: PropTypes__default['default'].string
});

var styles$f = reactNative.StyleSheet.create({
  createdAt: _extends({
    fontSize: 16,
    marginBottom: 20
  }, fonts.regular),
  summary: _extends({
    color: staticColors.grey,
    fontSize: 12,
    marginTop: 16,
    textAlign: "justify"
  }, fonts.regular),
  patient: _extends({
    fontSize: 14,
    marginTop: 4,
    textAlign: "justify"
  }, fonts.bold)
});
var TimelineItem$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(TimelineItem);

var CustomerProfileScreen = /*#__PURE__*/function (_Component) {
  _inheritsLoose(CustomerProfileScreen, _Component);

  function CustomerProfileScreen(props) {
    var _this;

    _this = _Component.call(this, props) || this;

    _defineProperty(_assertThisInitialized(_this), "_onPress", function () {
      if (_this.state.medical) {
        if (_this.state.activeConsultation) {
          _this.props.navigation.navigate("Waiting", {
            clientAppId: _this.state.clientAppId,
            patientId: _this.state.id,
            newPatientId: _this.state.newPatientId,
            activeConsultation: _this.state.activeConsultation,
            hasViId: _this.state.hasViId,
            enableVoiceCall: _this.state.config.is_voice_call_enabled,
            enableVideoCall: _this.state.config.is_video_call_enabled,
            inboxId: _this.state.inboxId,
            websiteToken: _this.state.websiteToken,
            transactionId: _this.state.transactionId,
            activeTransaction: _this.state.activeTransaction
          });
        } else {
          _this.props.navigation.navigate("ask", {
            clientAppId: _this.state.clientAppId,
            patientId: _this.state.id,
            newPatientId: _this.state.newPatientId,
            firstName: _this.state.firstName,
            config: _this.state.config,
            dependenceStatus: _this.state.dependenceStatus,
            hasViId: _this.state.hasViId,
            enableVoiceCall: _this.state.config.is_voice_call_enabled,
            enableVideoCall: _this.state.config.is_video_call_enabled,
            clientId: _this.state.clientId,
            hasDoB: _this.state.hasDoB
          });
        }
      } else {
        _this.props.navigation.navigate("Medical", {
          patientId: _this.state.newPatientId,
          birthdate: _this.state.birthdate,
          cardNumber: _this.state.cardNumber,
          fullName: _this.state.fullName,
          gender: _this.state.gender,
          age: _this.state.age,
          height: null,
          weight: null
        });
      }
    });

    _defineProperty(_assertThisInitialized(_this), "onHistoryPress", function () {
      var _this$state = _this.state,
          cardNumber = _this$state.cardNumber,
          fullName = _this$state.fullName,
          gender = _this$state.gender,
          config = _this$state.config,
          newPatientId = _this$state.newPatientId;

      _this.props.navigation.navigate("PrescriptionHistory", {
        cardNumber: cardNumber,
        fullName: fullName,
        gender: gender,
        config: config,
        patientId: newPatientId
      });
    });

    _defineProperty(_assertThisInitialized(_this), "onMedicalCheckPress", function () {
      _this.props.navigation.navigate("MedicalCheck", {
        url: "https://dev.diagnosa.prixa.ai/partner/dc6d7de0-cb0b-11ea-aa8b-6521aef536d7/app/a65ff9f0-dac6-11ea-811b-b3b0a791cc9e",
        patientId: _this.state.id
      });
    });

    _this.state = {
      firstName: "",
      fullName: "",
      cardNumber: "",
      organization: "",
      status: "",
      "class": "",
      age: 0,
      gender: "m",
      birthdate: new Date(),
      phone: "",
      email: "",
      id: "",
      dependenceStatus: "",
      activeConsultation: null,
      medical: null,
      historiesTotal: 0,
      historiesData: [],
      isLoading: true,
      symptomsCheckUrl: "",
      loading: false,
      config: {},
      hasViId: false
    };
    return _this;
  }

  var _proto = CustomerProfileScreen.prototype;

  _proto.checkLaunchStatus = function checkLaunchStatus() {
    if (this.props.introSlides.length > 0) {
      this.props.navigation.navigate("intro");
    }
  };

  _proto.fetchProfile = /*#__PURE__*/function () {
    var _fetchProfile = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
      var _mainPatient$config, _yield$API$get, profileData, _yield$API$get2, patientList, mainPatient, resp, _yield$API$get3, _yield$API$get3$data, consultationsHistories, consultationsHistoriesTotal, histories, lastDate, activeConsultation, age, roundedAge, checkActiveTransaction, activeTransaction, prevConsultationData, prevConsultation, isPrevConsultationActive;

      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              _context.prev = 0;
              setConsultation(null);
              this.setState({
                loading: true
              }); // ---------- new flow with external users ----------
              // get external user data

              _context.next = 5;
              return API.get(APP_BASE_URL + "/v1/external/users/me", {
                headers: {
                  "X-Client-Id": this.props.clientId
                }
              });

            case 5:
              _yield$API$get = _context.sent;
              profileData = _yield$API$get.data;
              _context.next = 9;
              return API.get(APP_BASE_URL + "/v1/patients/user/" + profileData.id);

            case 9:
              _yield$API$get2 = _context.sent;
              patientList = _yield$API$get2.data.data;
              // find main patient (or main card holder)
              mainPatient = patientList.find(function (patient) {
                return patient.dependecy_status === "0";
              }); // if no main patient in the list, get the first one

              if (!mainPatient) mainPatient = patientList[0];
              _context.next = 15;
              return API.get(APP_BASE_URL + "/v2/profile/" + mainPatient.id + "/me");

            case 15:
              resp = _context.sent;
              mainPatient = resp.data.data; // get list of consultation histories

              _context.next = 19;
              return API.get(APP_BASE_URL + "/v2/profile/" + mainPatient.id + "/consultation-history");

            case 19:
              _yield$API$get3 = _context.sent;
              _yield$API$get3$data = _yield$API$get3.data;
              consultationsHistories = _yield$API$get3$data.data;
              consultationsHistoriesTotal = _yield$API$get3$data.total;
              console.log({
                profileData: profileData,
                mainPatient: mainPatient,
                patientList: patientList,
                consultationsHistories: consultationsHistories
              }); // prepare data for consultation histories

              histories = [];

              ___default['default'].each(consultationsHistories, function (item) {
                var n = moment__default['default'](item["created_at"]);
                var date = n.format("D MMMM YYYY");

                if (lastDate !== date) {
                  histories.push({
                    type: "section",
                    date: n.toDate(),
                    icon: require("../assets/round_access_time_white_18dp.png")
                  });
                  lastDate = date;
                }

                histories.push({
                  type: "single",
                  doctor: {
                    avatar: {
                      uri: item["doctor_photo"]
                    },
                    name: item["doctor_name"],
                    position: item["doctor_specialities"]
                  },
                  createdAt: n.toDate(),
                  description: item["trx_summary"] || item.detail_complaint,
                  prescriptionId: item["prescription_id"],
                  transactionDependency: item["transaction_dependency"],
                  dependentStatus: Number(item["dependent_status"]),
                  dependent: item["dependent"],
                  patientName: item["patient_name"]
                });
              });

              activeConsultation = mainPatient.active_consultation;
              setConsultation(activeConsultation); // set medical data from patient data

              setMedical(mainPatient.patient_height, mainPatient.patient_weight);
              age = mainPatient.patient_age; // to handle if age is null, then set age = null. otherwise, age might be 0.

              roundedAge = age === null || age === undefined ? null : Math.floor(Number(age));
              mainPatient.config.is_symptoms_check_enabled;
              mainPatient.config.is_check_doctor_enabled;
              // prepare check active transaction in all member


              checkActiveTransaction = patientList.map(function (patient) {
                return API.get(APP_BASE_URL + "/v2/consultations/patient/" + patient.id).then(function (resp) {
                  return resp.data.data;
                });
              }); // GET check active transaction in patient and family member

              _context.next = 37;
              return axios__default['default'].all(checkActiveTransaction).then(axios__default['default'].spread(function () {
                for (var _len = arguments.length, transactions = new Array(_len), _key = 0; _key < _len; _key++) {
                  transactions[_key] = arguments[_key];
                }

                return transactions.find(function (trx) {
                  if (trx.length !== 0) {
                    console.log("you have one active transaction", trx);
                    return trx[0];
                  }
                });
              }));

            case 37:
              activeTransaction = _context.sent;
              setConsultation(activeTransaction);
              this.setState({
                historiesData: histories,
                historiesTotal: consultationsHistoriesTotal,
                firstName: mainPatient.patient_f_name,
                fullName: mainPatient.patient_f_name + " " + mainPatient.patient_l_name,
                cardNumber: mainPatient.patient_card_number,
                organization: mainPatient.patient_organization,
                status: mainPatient.patient_vip_status ? "VIP" : "General",
                "class": mainPatient.patient_class,
                age: roundedAge,
                gender: mainPatient.patient_gender,
                birthdate: moment__default['default'](mainPatient.patient_dob).toDate(),
                hasDoB: !!mainPatient.patient_dob,
                phone: mainPatient.patient_phone,
                email: mainPatient.patient_email,
                id: mainPatient.id,
                dependenceStatus: Number(mainPatient.dependence_status),
                activeConsultation: getConsultation(),
                medical: getMedical(),
                isLoading: false,
                symptomsCheckUrl: (_mainPatient$config = mainPatient.config) == null ? void 0 : _mainPatient$config.symptoms_check_url,
                config: mainPatient.config,
                hasViId: mainPatient.has_vi_id,
                newPatientId: mainPatient.id,
                clientId: profileData.client_id,
                inboxId: (activeTransaction == null ? void 0 : activeTransaction.length) > 0 ? activeTransaction[0].inbox_id : null,
                transactionId: (activeTransaction == null ? void 0 : activeTransaction.length) > 0 ? activeTransaction[0].transaction_id : null,
                websiteToken: (activeTransaction == null ? void 0 : activeTransaction.length) > 0 ? activeTransaction[0].website_token : null,
                activeTransaction: activeTransaction,
                clientAppId: mainPatient.client_app_id
              });

              if (this.props.screenProps.intent) {
                if (this.props.screenProps.intent.action === "text_message" && mainPatient.active_consultation) {
                  this.props.navigation.navigate("Waiting", {
                    patientId: this.state.id,
                    activeConsultation: this.state.activeConsultation
                  });
                }
              } else if (mainPatient.transaction_to_post_assess) {
                this.props.navigation.navigate("PostAssessment", {
                  transaction: {
                    doctor: {
                      avatarUrl: mainPatient.transaction_to_post_assess.doctor.doctor_photo,
                      fullName: mainPatient.transaction_to_post_assess.doctor.octor_f_name + " " + mainPatient.transaction_to_post_assess.doctor.octor_l_name
                    },
                    startedAt: mainPatient.transaction_to_post_assess.consultation_chat_started_at,
                    summary: mainPatient.transaction_to_post_assess.trx_summary
                  }
                });
              } // check for previous active consultation on local storage


              _context.next = 43;
              return AsyncStorage__default['default'].getItem("active_consultation");

            case 43:
              prevConsultationData = _context.sent;

              if (prevConsultationData) {
                prevConsultation = JSON.parse(prevConsultationData); // check prev with current active consultation

                isPrevConsultationActive = activeConsultation ? prevConsultation.trx_id === activeConsultation.trx_id && prevConsultation.room_id === activeConsultation.room_id : false;

                if (!isPrevConsultationActive) {
                  // transfer to rating page if previous consulation is not the same as current active
                  this.props.navigation.navigate("Rating", {
                    transactionId: prevConsultation.trx_id,
                    agentAvatar: prevConsultation.avatar_url,
                    agentName: prevConsultation.username,
                    agentSpecialities: prevConsultation.email
                  });
                }
              }

              this.setState({
                loading: false
              });
              _context.next = 52;
              break;

            case 48:
              _context.prev = 48;
              _context.t0 = _context["catch"](0);
              console.log((_context.t0 == null ? void 0 : _context.t0.response) || _context.t0);
              this.props.screenProps.onClose();

            case 52:
            case "end":
              return _context.stop();
          }
        }
      }, _callee, this, [[0, 48]]);
    }));

    function fetchProfile() {
      return _fetchProfile.apply(this, arguments);
    }

    return fetchProfile;
  }();

  _proto.componentDidMount = /*#__PURE__*/function () {
    var _componentDidMount = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
      var _yield$API$post, _yield$API$post$data, access_token, metadata;

      return regeneratorRuntime.wrap(function _callee2$(_context2) {
        while (1) {
          switch (_context2.prev = _context2.next) {
            case 0:
              this.checkLaunchStatus();
              _context2.prev = 1;
              _context2.next = 4;
              return API.post(APP_BASE_URL + "/v2/profile/token", {}, {
                headers: {
                  Authorization: "Bearer " + this.props.token
                }
              });

            case 4:
              _yield$API$post = _context2.sent;
              _yield$API$post$data = _yield$API$post.data;
              access_token = _yield$API$post$data.access_token;
              metadata = _yield$API$post$data.metadata;
              this.props.saveAccessToken(access_token);
              this.props.saveClientId(metadata.client_id);
              this.promise = this.fetchProfile();
              _context2.next = 17;
              break;

            case 13:
              _context2.prev = 13;
              _context2.t0 = _context2["catch"](1);
              console.log((_context2.t0 == null ? void 0 : _context2.t0.response) || _context2.t0);
              this.props.screenProps.onClose();

            case 17:
            case "end":
              return _context2.stop();
          }
        }
      }, _callee2, this, [[1, 13]]);
    }));

    function componentDidMount() {
      return _componentDidMount.apply(this, arguments);
    }

    return componentDidMount;
  }();

  _proto.render = function render() {
    var _this2 = this;

    if (this.state.isLoading) {
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flex: 1,
          backgroundColor: this.props.themeColors.primary,
          justifyContent: "center"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
        size: "large",
        color: "#fff"
      }));
    }

    var consultationHistoriesRender;

    if (this.state.historiesTotal > 0) {
      consultationHistoriesRender = /*#__PURE__*/React__default['default'].createElement(Timeline__default['default'], {
        innerCircle: "icon",
        circleColor: this.props.themeColors.lighterPrimary,
        lineColor: this.props.themeColors.primary,
        data: this.state.historiesData,
        detailContainerStyle: {
          marginTop: -13,
          marginBottom: 13
        },
        listViewContainerStyle: {
          marginLeft: 12,
          marginRight: 32
        },
        renderDetail: function renderDetail(rowData, sectionID, rowID) {
          if (rowData.type === "section") {
            return /*#__PURE__*/React__default['default'].createElement(TimelineSection$1, {
              date: rowData.date
            });
          } else {
            return /*#__PURE__*/React__default['default'].createElement(TimelineItem$1, {
              createdAt: rowData.createdAt,
              doctor: {
                avatarUrl: rowData.doctor.avatar.uri,
                specialities: rowData.doctor.position,
                fullName: rowData.doctor.name
              },
              summary: rowData.description || "",
              transactionDependency: rowData.transactionDependency,
              dependentStatus: rowData.dependentStatus,
              dependent: rowData.dependent,
              patientName: rowData.patientName
            });
          }
        },
        showTime: false
      });
    } else {
      consultationHistoriesRender = null;
    }

    return /*#__PURE__*/React__default['default'].createElement(ParallaxScrollView__default['default'], {
      ref: function ref(_ref2) {
        _this2.scrollRef = _ref2;
      },
      backgroundColor: this.props.themeColors.primary,
      parallaxHeaderHeight: 600,
      refreshControl: /*#__PURE__*/React__default['default'].createElement(reactNative.RefreshControl, {
        refreshing: this.state.loading,
        onRefresh: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
          return regeneratorRuntime.wrap(function _callee3$(_context3) {
            while (1) {
              switch (_context3.prev = _context3.next) {
                case 0:
                  _context3.next = 2;
                  return _this2.fetchProfile();

                case 2:
                  return _context3.abrupt("return", _context3.sent);

                case 3:
                case "end":
                  return _context3.stop();
              }
            }
          }, _callee3);
        }))
      }),
      renderForeground: function renderForeground() {
        var _React$createElement;

        return /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(Header, {
          onPress: function onPress() {
            _this2.props.resetTokenStore();

            _this2.props.screenProps.onClose();
          },
          position: "start",
          text: "Tutup",
          theme: "light"
        }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            justifyContent: "center",
            alignItems: "center"
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(AutoHeightImage__default['default'], {
          source: require("../assets/intro.png"),
          width: reactNative.Dimensions.get("window").width - 140
        })), _this2.state.config.is_check_doctor_enabled ? /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
          onPress: _this2._onPress,
          style: {
            marginBottom: 16
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            borderRadius: 30,
            backgroundColor: staticColors.forestFern
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            fontSize: 20
          }, fonts.bold, {
            color: "#FFF",
            width: 250,
            textAlign: "center",
            paddingVertical: 16
          })
        }, _this2.state.activeConsultation ? "LANJUT KONSULTASI" : "TANYA DOKTER"))) : null, _this2.state.config["is_prescription_claim_enabled"] ? /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, (_React$createElement = {
          style: {
            marginBottom: 16
          },
          onPress: _this2.onHistoryPress
        }, _React$createElement["style"] = {
          marginBottom: 16
        }, _React$createElement), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            borderRadius: 30,
            backgroundColor: _this2.props.themeColors.darkestPrimary
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            fontSize: 20
          }, fonts.bold, {
            color: "#FFF",
            width: 250,
            textAlign: "center",
            paddingVertical: 16
          })
        }, "RIWAYAT RESEP"))) : null, _this2.state.config.is_symptoms_check_enabled ? /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
          onPress: _this2.onMedicalCheckPress,
          style: {
            marginBottom: 16
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            borderRadius: 30,
            backgroundColor: _this2.props.themeColors.lighterPrimary
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            fontSize: 20
          }, fonts.bold, {
            color: "#FFF",
            width: 250,
            textAlign: "center",
            paddingVertical: 16
          })
        }, "PERIKSA GEJALA"))) : null));
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: this.props.themeColors.primary
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNavigation.NavigationEvents, {
      onDidFocus: function onDidFocus(payload) {
        var consultation = getConsultation();
        var medical = getMedical();

        _this2.setState({
          activeConsultation: consultation ? Object.assign({}, consultation) : null,
          medical: medical ? Object.assign({}, medical) : null
        });
      }
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        flexDirection: "row",
        alignItems: "center",
        padding: 20
      }
    }, /*#__PURE__*/React__default['default'].createElement(PatientAvatarWithDetail, {
      cardNumber: this.state.cardNumber,
      fullName: this.state.fullName,
      gender: this.state.gender
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      style: {
        marginStart: 20
      },
      onPress: function onPress() {
        return _this2.scrollRef.scrollTo({
          x: 0,
          y: 500
        });
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/baseline_keyboard_arrow_up_white_18dp.png")
    }))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: "#FFF",
        borderTopEndRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
        borderTopStartRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        padding: 30,
        paddingTop: 15
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        width: 64,
        height: 6,
        borderRadius: 3,
        marginBottom: 15,
        opacity: 0.5,
        backgroundColor: "#808080",
        alignSelf: "center"
      }
    }), /*#__PURE__*/React__default['default'].createElement(PatientDetailMore$1, {
      onEditPress: function onEditPress() {
        _this2.props.navigation.navigate("Medical", {
          patientId: _this2.state.newPatientId,
          age: _this2.state.age,
          cardNumber: _this2.state.cardNumber,
          fullName: _this2.state.fullName,
          gender: _this2.state.gender,
          height: _this2.state.medical ? _this2.state.medical.height : null,
          weight: _this2.state.medical ? _this2.state.medical.weight : null
        });
      },
      "class": this.state["class"],
      gender: this.state.gender,
      height: this.state.medical ? this.state.medical.height : null,
      organization: this.state.organization,
      weight: this.state.medical ? this.state.medical.weight : null,
      age: this.state.age
    })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: "#F1F1F1",
        height: 1,
        width: "100%",
        marginBottom: 30
      }
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        fontSize: 20
      }, fonts.bold, {
        color: this.props.themeColors.darkestPrimary,
        alignSelf: "center"
      })
    }, "RIWAYAT KONSULTASI"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        fontSize: 15
      }, fonts.regular, {
        color: this.props.themeColors.darkerPrimary,
        alignSelf: "center",
        marginBottom: 30
      })
    }, this.state.historiesTotal, " Konsultasi"), consultationHistoriesRender)));
  };

  return CustomerProfileScreen;
}(React.Component);

var mapDispatchToProps = function mapDispatchToProps(dispatch) {
  return {
    saveAccessToken: function saveAccessToken(accessToken) {
      return dispatch(changeAccessToken(accessToken));
    },
    resetTokenStore: function resetTokenStore$1() {
      return dispatch(resetTokenStore());
    },
    saveClientId: function saveClientId$1(clientId) {
      return dispatch(saveClientId(clientId));
    }
  };
};

var CustomerProfileScreen$1 = reactRedux.connect(function (state) {
  return {
    introSlides: state.introSlides,
    themeColors: state.themeColors,
    token: state.token.token,
    clientId: state.appConfig.clientId
  };
}, mapDispatchToProps)(CustomerProfileScreen);

var injectJs = "const element = document.getElementsByClassName('prixa-menubar');" + "if(element.length > 0) { element[0].style.display = 'none'; }";

var MedicalCheck = /*#__PURE__*/function (_Component) {
  _inheritsLoose(MedicalCheck, _Component);

  function MedicalCheck() {
    var _this;

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _Component.call.apply(_Component, [this].concat(args)) || this;

    _defineProperty(_assertThisInitialized(_this), "state", {
      loading: true,
      url: ""
    });

    _defineProperty(_assertThisInitialized(_this), "onNavigationStateChange", function (state) {
      if (state.loading) {
        _this.setState({
          loading: true
        });
      } else {
        _this.setState({
          loading: false
        });
      }

      var url = state.url;

      if (String(url).indexOf("/consultation-start") >= 0) {
        var sessionId = getParameterByName("sessionID", url);

        _this.getConsultationDetails(sessionId);
      }
    });

    _defineProperty(_assertThisInitialized(_this), "getConsultationDetails", /*#__PURE__*/function () {
      var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(sessionId) {
        var prixaEngine, rp, response, json, consultation, profiles, symptoms, histories, historyText, weight, height, bmiProfile, bmiStatus, mainSymptoms, mainSymptomsText, otherSymptoms, otherSymptomsText, noSymptoms, noymptomsText, unknownSymptoms, unknownSymptomsText, consultationText, navigation, param;
        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                prixaEngine = getPrixaEngine();
                rp = fetch(prixaEngine.prixaEngineBaseUrl + "prixa", {
                  method: "POST",
                  headers: {
                    "x-prixa-api-key": prixaEngine.apiKey,
                    "x-partner-app-id": prixaEngine.partnerAppId,
                    "x-partner-id": prixaEngine.partnerId
                  },
                  body: JSON.stringify({
                    sessionId: sessionId,
                    reply: {
                      type: "resume"
                    }
                  })
                });
                _context.next = 4;
                return rp;

              case 4:
                response = _context.sent;
                _context.next = 7;
                return response.json();

              case 7:
                json = _context.sent;
                consultation = [];
                profiles = ___default['default'].get(json.result, "actions.diagnosisResult.profiles", []);
                symptoms = ___default['default'].get(json.result, "actions.diagnosisResult.symptoms", []);
                ___default['default'].get(json.result, "actions.diagnosisResult.diseases", []); // STATUS KESEHATAN DAN KEBIASAAN

                consultation.push("STATUS KESEHATAN DAN KEBIASAAN");
                histories = [];

                if (profiles.length > 0) {
                  histories = ___default['default'].filter(profiles, function (profile) {
                    return profile.type === "history";
                  });
                }

                historyText = [];

                ___default['default'].forEach(histories, function (history) {
                  historyText.push("- " + history.nameIndo);
                });

                consultation.push(historyText.length > 0 ? historyText.join("\n") : "-");
                consultation.push(""); // new line
                // BMI

                consultation.push("BMI");
                weight = ___default['default'].get(json.result, "actions.diagnosisResult.user.weight", "-");
                height = ___default['default'].get(json.result, "actions.diagnosisResult.user.height", "-");
                bmiProfile = ___default['default'].find(profiles, function (profile) {
                  return profile.type === "bmi";
                });
                bmiStatus = bmiProfile ? bmiProfile.nameIndo : "-";
                consultation.push("Tinggi: " + height + " cm | berat badan " + weight + " kg (" + bmiStatus + ")");
                consultation.push(""); // new line
                // KELUHAN UTAMA

                mainSymptoms = [];

                if (symptoms.length > 0) {
                  mainSymptoms = ___default['default'].filter(symptoms, function (symptom) {
                    return symptom.answer === "yes" && symptom.chief;
                  });
                }

                consultation.push("KELUHAN UTAMA");
                mainSymptomsText = [];

                ___default['default'].forEach(mainSymptoms, function (symptom) {
                  mainSymptomsText.push(symptom.symptomName);
                });

                consultation.push(mainSymptomsText.length > 0 ? mainSymptomsText.join(", ") : "-");
                consultation.push(""); // new line
                // KELUHAN LAIN

                otherSymptoms = [];

                if (symptoms.length > 0) {
                  otherSymptoms = ___default['default'].filter(symptoms, function (symptom) {
                    return symptom.answer === "yes" && !symptom.chief;
                  });
                }

                consultation.push("KELUHAN LAIN");
                otherSymptomsText = [];

                ___default['default'].forEach(otherSymptoms, function (symptom) {
                  otherSymptomsText.push("- " + symptom.symptomName);
                });

                consultation.push(otherSymptomsText.length > 0 ? otherSymptomsText.join("\n") : "-");
                consultation.push(""); // new line
                // TIDAK ADA KELUHAN

                consultation.push("TIDAK ADA");
                noSymptoms = [];

                if (symptoms.length > 0) {
                  noSymptoms = ___default['default'].filter(symptoms, function (symptom) {
                    return symptom.answer === "no";
                  });
                }

                noymptomsText = [];

                ___default['default'].forEach(noSymptoms, function (symptom) {
                  noymptomsText.push("- " + symptom.symptomName);
                });

                consultation.push(noymptomsText.length > 0 ? noymptomsText.join("\n") : "-");
                consultation.push(""); // new line
                // TIDAK TAHU

                unknownSymptoms = [];

                if (symptoms.length > 0) {
                  unknownSymptoms = ___default['default'].filter(symptoms, function (symptom) {
                    return symptom.answer === "unknown";
                  });
                }

                consultation.push("TIDAK TAHU");
                unknownSymptomsText = [];

                ___default['default'].forEach(unknownSymptoms, function (symptom) {
                  unknownSymptomsText.push("- " + symptom.symptomName);
                });

                consultation.push(unknownSymptomsText.length > 0 ? unknownSymptomsText.join("\n") : "-");
                consultationText = consultation.join("\n");
                navigation = _this.props.navigation;
                param = {
                  patientId: navigation.state.params.patientId,
                  dependent: ___default['default'].get(navigation.state.params, "dependent", null),
                  consultation: consultationText,
                  complaintIds: [],
                  duration: 1,
                  durationUnit: "day"
                };

                _this.props.navigation.replace("Consent", param);

              case 57:
              case "end":
                return _context.stop();
            }
          }
        }, _callee);
      }));

      return function (_x) {
        return _ref.apply(this, arguments);
      };
    }());

    return _this;
  }

  var _proto = MedicalCheck.prototype;

  _proto.componentDidMount = function componentDidMount() {
    var url = this.props.navigation.state.params.url;
    this.setState({
      url: url
    });
  };

  _proto.render = function render() {
    var _this2 = this;

    var _this$state = this.state,
        loading = _this$state.loading,
        url = _this$state.url;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        flex: 1
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$e.closeContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return _this2.props.navigation.goBack();
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/close.png"),
      width: 25,
      style: styles$e.icon
    }))), url ? /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNativeWebview.WebView, {
      onNavigationStateChange: this.onNavigationStateChange,
      source: {
        uri: url
      },
      style: {
        flex: 1
      },
      originWhitelist: ["https://*"],
      injectedJavaScript: injectJs
    }), loading ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$e.activityIndicator
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
      style: {
        flex: 1
      },
      size: "large",
      color: "#FFF"
    })) : null) : null);
  };

  return MedicalCheck;
}(React.Component);

var styles$e = reactNative.StyleSheet.create({
  closeContainer: {
    padding: 16,
    backgroundColor: staticColors.grey,
    flexDirection: "row",
    justifyContent: "flex-end"
  },
  icon: {
    width: 25,
    height: 25
  },
  activityIndicator: {
    flex: 1,
    position: "absolute",
    width: "100%",
    height: "100%",
    marginTop: 40,
    backgroundColor: staticColors.grey
  }
});

var DoctorField = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(DoctorField, _React$Component);

  function DoctorField() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = DoctorField.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        label = _this$props.label,
        themeColors = _this$props.themeColors,
        value = _this$props.value;
    return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$d.label, {
        color: themeColors.primary
      }]
    }, label.toUpperCase()), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$d.value
    }, value));
  };

  return DoctorField;
}(React__default['default'].Component);

_defineProperty(DoctorField, "propTypes", {
  label: PropTypes__default['default'].string.isRequired,
  value: PropTypes__default['default'].string.isRequired
});

var styles$d = reactNative.StyleSheet.create({
  label: _extends({
    fontSize: 15
  }, fonts.bold),
  value: _extends({
    color: staticColors.grey,
    fontSize: 15,
    marginBottom: 25
  }, fonts.regular)
});
var DoctorField$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(DoctorField);

var DoctorDetailMore = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(DoctorDetailMore, _React$Component);

  function DoctorDetailMore() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = DoctorDetailMore.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        education = _this$props.education,
        hospital = _this$props.hospital,
        practiceLicense = _this$props.practiceLicense,
        registrationCertificate = _this$props.registrationCertificate;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$c.container
    }, /*#__PURE__*/React__default['default'].createElement(DoctorField$1, {
      label: I18n__default['default'].t("prixa.registrationCertificate"),
      value: registrationCertificate
    }), /*#__PURE__*/React__default['default'].createElement(DoctorField$1, {
      label: I18n__default['default'].t("prixa.practiceLicense"),
      value: practiceLicense
    }), /*#__PURE__*/React__default['default'].createElement(DoctorField$1, {
      label: I18n__default['default'].t("prixa.education"),
      value: education
    }), /*#__PURE__*/React__default['default'].createElement(DoctorField$1, {
      label: I18n__default['default'].t("prixa.hospital"),
      value: hospital
    }));
  };

  return DoctorDetailMore;
}(React__default['default'].Component);

_defineProperty(DoctorDetailMore, "propTypes", {
  education: PropTypes__default['default'].string.isRequired,
  hospital: PropTypes__default['default'].string.isRequired,
  practiceLicense: PropTypes__default['default'].string.isRequired,
  registrationCertificate: PropTypes__default['default'].string.isRequired
});
var styles$c = reactNative.StyleSheet.create({
  container: {
    padding: 30
  }
});

var _Dimensions$get$3 = reactNative.Dimensions.get("window"),
    width$2 = _Dimensions$get$3.width;

var styles$b = reactNative.StyleSheet.create({
  name: _extends({}, fonts.bold, {
    fontSize: 20,
    paddingHorizontal: 35,
    color: "#FFF"
  }),
  position: _extends({}, fonts.regular, {
    fontSize: 16,
    paddingHorizontal: 35,
    color: "#FFF"
  }),
  actionsContainer: {
    padding: 25,
    flexDirection: "row",
    justifyContent: "center",
    borderColor: "#F1F1F1",
    borderBottomWidth: 1
  },
  container: {
    backgroundColor: "#FFF",
    borderTopEndRadius: 40,
    borderTopStartRadius: 40,
    flex: 1,
    width: width$2,
    marginTop: -40
  },
  action: {
    height: 50,
    width: 50,
    borderRadius: 50,
    marginHorizontal: 10,
    alignItems: "center",
    justifyContent: "center"
  }
});

var DoctorProfileScreen = /*#__PURE__*/function (_Component) {
  _inheritsLoose(DoctorProfileScreen, _Component);

  function DoctorProfileScreen(props) {
    var _this;

    _this = _Component.call(this, props) || this;

    _defineProperty(_assertThisInitialized(_this), "checkPermissionAndLaunchAudio", function () {
      var _this$props$navigatio = _this.props.navigation.state.params,
          hasViId = _this$props$navigatio.hasViId,
          enableVoiceCall = _this$props$navigatio.enableVoiceCall;

      if (hasViId && enableVoiceCall) {
        if (reactNative.Platform.OS === "android") {
          var permissions = [reactNative.PermissionsAndroid.PERMISSIONS.RECORD_AUDIO];
          reactNative.PermissionsAndroid.requestMultiple(permissions).then(function (granted) {
            var recordAudioGranted = granted["android.permission.RECORD_AUDIO"] === "granted";

            if (recordAudioGranted) {
              _this.goToAudioCallScreen();
            }
          });
        } else {
          _this.goToAudioCallScreen();
        }
      }
    });

    _defineProperty(_assertThisInitialized(_this), "checkPermissionAndLaunchVideo", function () {
      var _this$props$navigatio2 = _this.props.navigation.state.params,
          hasViId = _this$props$navigatio2.hasViId,
          enableVideoCall = _this$props$navigatio2.enableVideoCall;

      if (hasViId && enableVideoCall) {
        if (reactNative.Platform.OS === "android") {
          var permissions = [reactNative.PermissionsAndroid.PERMISSIONS.CAMERA, reactNative.PermissionsAndroid.PERMISSIONS.RECORD_AUDIO];
          reactNative.PermissionsAndroid.requestMultiple(permissions).then(function (granted) {
            var cameraGranted = granted["android.permission.CAMERA"] === "granted";
            var recordAudioGranted = granted["android.permission.RECORD_AUDIO"] === "granted";

            if (cameraGranted && recordAudioGranted) {
              _this.goToVideoCallScreen();
            }
          });
        } else {
          _this.goToVideoCallScreen();
        }
      }
    });

    _defineProperty(_assertThisInitialized(_this), "navigateCall", function (callType) {
      var navigation = _this.props.navigation;
      navigation.navigate(callType, {
        doctor: {
          fullName: navigation.state.params.doctorFullname
        },
        patient: {
          id: navigation.state.params.patientId
        },
        transaction: {
          id: navigation.state.params.transactionId
        }
      });
    });

    _defineProperty(_assertThisInitialized(_this), "goToVideoCallScreen", function () {
      _this.navigateCall("VideoCall");
    });

    _defineProperty(_assertThisInitialized(_this), "goToAudioCallScreen", function () {
      _this.navigateCall("AudioCall");
    });

    _this.state = {
      avatarUrl: "https://izi.medlinx.id/uploads/userfiles/test.png",
      fullName: "",
      specialities: "",
      str: "",
      sip: "",
      education: "",
      hospitalName: "",
      hospitalAdress: "-"
    };
    return _this;
  }

  var _proto = DoctorProfileScreen.prototype;

  _proto.componentDidMount = function componentDidMount() {
    var _this2 = this;

    var token = this.props.token;
    fetch(getBaseUrl() + "consultations/doctor-info?trx_id=" + this.props.navigation.state.params.transactionId, {
      headers: {
        Authorization: "Bearer " + token,
        Accept: "application/json",
        "Content-Type": "application/json"
      }
    }).then(function (res) {
      return res.json();
    }).then(function (json) {
      _this2.setState({
        avatarUrl: json["data"]["doctor_photo"],
        fullName: json["data"]["doctor_f_name"] + " " + json["data"]["doctor_l_name"],
        specialities: json["data"]["speciality_name"].join(", "),
        str: json["data"]["doctor_str"],
        sip: json["data"]["doctor_sip"],
        education: json["data"]["doctor_education"],
        hospitalName: json["data"]["hospital_name"],
        hospitalAdress: json["data"]["doctor_address"]
      });
    });
  };

  _proto.render = function render() {
    var _this3 = this;

    var _this$props$navigatio3 = this.props.navigation.state.params,
        hasViId = _this$props$navigatio3.hasViId,
        enableVoiceCall = _this$props$navigatio3.enableVoiceCall,
        enableVideoCall = _this$props$navigatio3.enableVideoCall;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.ScrollView, {
      style: {
        flex: 1
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(AutoHeightImage__default['default'], {
      source: {
        uri: this.state.avatarUrl
      },
      width: width$2
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        bottom: 0,
        position: "absolute",
        paddingBottom: 50,
        paddingVertical: 10,
        backgroundColor: this.props.themeColors.primary,
        borderTopEndRadius: 40,
        borderTopStartRadius: 40,
        left: 0,
        right: 0
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$b.name
    }, this.state.fullName), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$b.position
    }, this.state.education))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$b.container
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$b.actionsContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return _this3.props.navigation.goBack();
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles$b.action, {
        backgroundColor: this.props.themeColors.primary
      }]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/round_chat_bubble_white_18dp.png"),
      style: {
        height: 24,
        width: 24
      }
    }))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: this.checkPermissionAndLaunchVideo
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles$b.action, hasViId && enableVideoCall ? {
        backgroundColor: this.props.themeColors.primary
      } : {
        backgroundColor: staticColors.grey
      }]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/round_videocam_white_18dp.png"),
      style: {
        height: 28,
        width: 28
      }
    }))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: this.checkPermissionAndLaunchAudio
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles$b.action, hasViId && enableVoiceCall ? {
        backgroundColor: this.props.themeColors.primary
      } : {
        backgroundColor: staticColors.grey
      }]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/round_call_white_18dp.png"),
      style: {
        height: 26,
        width: 26
      }
    })))), /*#__PURE__*/React__default['default'].createElement(DoctorDetailMore, {
      education: this.state.education,
      hospital: this.state.hospitalName,
      practiceLicense: this.state.sip,
      registrationCertificate: this.state.str
    }))));
  };

  return DoctorProfileScreen;
}(React.Component);

var DoctorProfileScreen$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors,
    token: state.token
  };
})(DoctorProfileScreen);

var MedicalScreen = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(MedicalScreen, _React$Component);

  function MedicalScreen(props) {
    var _this;

    _this = _React$Component.call(this, props) || this;
    var _this$props$navigatio = _this.props.navigation.state.params,
        height = _this$props$navigatio.height,
        weight = _this$props$navigatio.weight;
    var heightDecimal = height ? parseInt(height * 10) % 10 : null;
    var heightInteger = height ? parseInt(height) : null;
    var weightDecimal = weight ? parseInt(weight * 10) % 10 : null;
    var weightInteger = weight ? parseInt(weight) : null;
    _this.state = {
      bmiContainerWidth: 0,
      heightDecimal: heightDecimal,
      heightInteger: heightInteger,
      heightSelectorVisible: false,
      temporaryHeightDecimal: null,
      temporaryHeightInteger: null,
      temporaryWeightDecimal: null,
      temporaryWeightInteger: null,
      weightDecimal: weightDecimal,
      weightInteger: weightInteger,
      weightSelectorVisible: false
    };
    return _this;
  }

  var _proto = MedicalScreen.prototype;

  _proto.updateProfile = /*#__PURE__*/function () {
    var _updateProfile = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
      var _this$state, heightDecimal, heightInteger, weightDecimal, weightInteger, patient_height, patient_weight, _yield$API$patch, status;

      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              _this$state = this.state, heightDecimal = _this$state.heightDecimal, heightInteger = _this$state.heightInteger, weightDecimal = _this$state.weightDecimal, weightInteger = _this$state.weightInteger;
              patient_height = heightInteger + heightDecimal / 10;
              patient_weight = weightInteger + weightDecimal / 10;
              _context.prev = 3;
              _context.next = 6;
              return API.patch(APP_BASE_URL + "/v2/profile/me", {
                patient_id: this.props.navigation.state.params.patientId,
                patient_height: patient_height,
                patient_weight: patient_weight
              });

            case 6:
              _yield$API$patch = _context.sent;
              status = _yield$API$patch.status;

              if (status === 200) {
                setMedical(patient_height, patient_weight);
                this.props.navigation.goBack();
              }

              _context.next = 14;
              break;

            case 11:
              _context.prev = 11;
              _context.t0 = _context["catch"](3);
              console.log(_context.t0 == null ? void 0 : _context.t0.response);

            case 14:
            case "end":
              return _context.stop();
          }
        }
      }, _callee, this, [[3, 11]]);
    }));

    function updateProfile() {
      return _updateProfile.apply(this, arguments);
    }

    return updateProfile;
  }();

  _proto.render = function render() {
    var _this2 = this;

    var themeColors = this.props.themeColors;
    var _this$props$navigatio2 = this.props.navigation.state.params,
        cardNumber = _this$props$navigatio2.cardNumber,
        fullName = _this$props$navigatio2.fullName,
        gender = _this$props$navigatio2.gender,
        age = _this$props$navigatio2.age;
    var _this$state2 = this.state,
        bmiContainerWidth = _this$state2.bmiContainerWidth,
        heightDecimal = _this$state2.heightDecimal,
        heightInteger = _this$state2.heightInteger,
        heightSelectorVisible = _this$state2.heightSelectorVisible,
        temporaryHeightDecimal = _this$state2.temporaryHeightDecimal,
        temporaryHeightInteger = _this$state2.temporaryHeightInteger,
        temporaryWeightDecimal = _this$state2.temporaryWeightDecimal,
        temporaryWeightInteger = _this$state2.temporaryWeightInteger,
        weightDecimal = _this$state2.weightDecimal,
        weightInteger = _this$state2.weightInteger,
        weightSelectorVisible = _this$state2.weightSelectorVisible;
    var ageText = age === null || age === undefined ? "-" : age;
    var genderName = gender === "m" ? "Laki-Laki" : "Perempuan";
    var height = heightInteger + heightDecimal / 10;
    var weight = weightInteger + weightDecimal / 10;
    var bmiContainer = null;

    if (height && weight) {
      var bmi = Math.round(weight / Math.pow(height / 100, 2) * 10) / 10;
      var normalizedBmi = bmi;

      if (bmi < 13.5) {
        normalizedBmi = 13.5;
      }

      if (bmi > 36.5) {
        normalizedBmi = 36.5;
      }

      var color = null;
      var description = null;

      if (bmi >= 30) {
        color = "#E64F4F";
        description = "Kegemukan (Obesitas)";
      } else if (bmi >= 25) {
        color = "#FEA501";
        description = "Kelebihan berat badan";
      } else if (bmi >= 18.5) {
        color = "#5DBE66";
        description = "Normal (Ideal)";
      } else {
        color = "#4695EA";
        description = "Kekurangan berat badan";
      }

      bmiContainer = /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flexDirection: "row",
          marginBottom: 10
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: color,
          fontSize: 18
        }, fonts.bold)
      }, bmi), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: color,
          fontSize: 18
        }, fonts.light)
      }, " - "), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: color,
          fontSize: 18
        }, fonts.regular)
      }, description)), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        onLayout: function onLayout(event) {
          return _this2.setState({
            bmiContainerWidth: event.nativeEvent.layout.width
          });
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flexDirection: "row",
          height: 100
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: "#4695EA",
          flex: 5,
          justifyContent: "flex-end"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 12,
          padding: 4
        }, fonts.bold)
      }, "Kurang")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: "#5DBE66",
          flex: 6.5,
          justifyContent: "flex-end"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 12,
          padding: 4
        }, fonts.bold)
      }, "Ideal")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: "#FEA501",
          flex: 5,
          justifyContent: "flex-end"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 12,
          padding: 4
        }, fonts.bold)
      }, "Lebih")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: "#E64F4F",
          flex: 6.5,
          justifyContent: "flex-end"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 12,
          padding: 4
        }, fonts.bold)
      }, "Obesitas"))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          alignItems: "center",
          backgroundColor: staticColors.white,
          borderRadius: 10,
          height: 20,
          left: bmiContainerWidth * (normalizedBmi - 13.5) / 23 - 10,
          marginTop: 20,
          position: "absolute",
          width: 20
        }
      })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flexDirection: "row"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flex: 3.5
        }
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          flex: 3,
          textAlign: "center"
        }, fonts.regular)
      }, "18.5"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flex: 3.5
        }
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          flex: 3,
          textAlign: "center"
        }, fonts.regular)
      }, "25"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flex: 2
        }
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          flex: 3,
          textAlign: "center"
        }, fonts.regular)
      }, "30"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flex: 5
        }
      })), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this2.updateProfile();
        },
        style: {
          alignSelf: "center",
          backgroundColor: "#5DBE66",
          borderRadius: 20,
          marginTop: 20
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 16,
          paddingHorizontal: 30,
          paddingVertical: 10
        }, fonts.bold)
      }, "Simpan")));
    } else {
      bmiContainer = /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: themeColors.darkestPrimary,
          fontSize: 14
        }, fonts.regular)
      }, "Silakan lengkapi tinggi & berat badan terlebih dahulu");
    }

    return /*#__PURE__*/React__default['default'].createElement(reactNative.ScrollView, {
      style: {
        backgroundColor: staticColors.white,
        flex: 1
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: themeColors.primary
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        alignItems: "center",
        flexDirection: "row",
        paddingHorizontal: 30,
        paddingVertical: 15
      }
    }, /*#__PURE__*/React__default['default'].createElement(PatientAvatar$1, {
      cardNumber: cardNumber,
      gender: gender
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.white,
        fontSize: 24,
        marginStart: 15
      }, fonts.bold)
    }, "Profil Medis")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: staticColors.white,
        borderTopEndRadius: 40,
        borderTopStartRadius: 40,
        height: 40
      }
    })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        paddingHorizontal: 30
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: themeColors.darkestPrimary,
        fontSize: 24
      }, fonts.bold)
    }, fullName), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: themeColors.darkestPrimary,
        fontSize: 18,
        marginBottom: 20
      }, fonts.regular)
    }, genderName + ", " + ageText + " Tahun"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: themeColors.darkestPrimary,
        fontSize: 18
      }, fonts.regular)
    }, "Sebelum memulai, mohon untuk dapat melengkapi informasi berikut:"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: themeColors.darkestPrimary,
        fontSize: 18,
        marginTop: 20
      }, fonts.bold)
    }, "Tinggi Badan:"), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return _this2.setState({
          heightSelectorVisible: true
        });
      },
      style: {
        alignItems: "center",
        flexDirection: "row",
        marginTop: 10
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TextInput, {
      editable: false,
      placeholder: "Input tinggi badan",
      style: {
        backgroundColor: "#F1F1F1",
        borderRadius: 10,
        paddingHorizontal: 16,
        paddingVertical: 8
      },
      value: height ? height + " cm" : ""
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/icons/baseline_edit_black_18dp.png"),
      style: {
        marginStart: 10,
        padding: 10
      }
    }), /*#__PURE__*/React__default['default'].createElement(Modal__default['default'], {
      isVisible: heightSelectorVisible,
      useNativeDriver: true
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: staticColors.white,
        borderRadius: 40,
        padding: 30
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        alignSelf: "center",
        color: themeColors.darkestPrimary,
        fontSize: 20,
        marginBottom: 20
      }, fonts.bold)
    }, "Pilih Tinggi"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        flexDirection: "row"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNativeWheelPickerAndroid.WheelPicker, {
      data: ___default['default'].range(30, 251).map(function (i) {
        return i.toString();
      }),
      initPosition: heightInteger ? heightInteger - 30 : 130,
      onItemSelected: function onItemSelected(selectedItem) {
        _this2.setState({
          temporaryHeightInteger: selectedItem + 30
        });
      },
      selectedItem: temporaryHeightInteger ? temporaryHeightInteger - 30 : heightInteger ? heightInteger - 30 : 130
    }), /*#__PURE__*/React__default['default'].createElement(reactNativeWheelPickerAndroid.WheelPicker, {
      data: ___default['default'].range(0, 10).map(function (i) {
        return i.toString();
      }),
      initPosition: heightDecimal ? heightDecimal : 0,
      onItemSelected: function onItemSelected(selectedItem) {
        return _this2.setState({
          temporaryHeightDecimal: selectedItem
        });
      },
      selectedItem: temporaryHeightDecimal ? temporaryHeightDecimal : heightDecimal ? heightDecimal : 0,
      style: {
        width: 100
      }
    })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        flexDirection: "row",
        justifyContent: "space-between"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return _this2.setState({
          heightSelectorVisible: false,
          temporaryHeightDecimal: null,
          temporaryHeightInteger: null
        });
      },
      style: {
        backgroundColor: "#E64F4F",
        borderRadius: 20
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.white,
        fontSize: 16,
        paddingHorizontal: 30,
        paddingVertical: 10
      }, fonts.bold)
    }, "Batal")), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        var defaultHeightInteger = 160;
        var defaultHeightDecimal = 0;

        _this2.setState({
          heightDecimal: temporaryHeightDecimal === 0 ? 0 : temporaryHeightDecimal || heightDecimal || defaultHeightDecimal,
          heightInteger: temporaryHeightInteger || heightInteger || defaultHeightInteger,
          heightSelectorVisible: false,
          temporaryHeightDecimal: null,
          temporaryHeightInteger: null
        });
      },
      style: {
        backgroundColor: "#5DBE66",
        borderRadius: 20
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.white,
        fontSize: 16,
        paddingHorizontal: 30,
        paddingVertical: 10
      }, fonts.bold)
    }, "Pilih")))))), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: themeColors.darkestPrimary,
        fontSize: 18,
        marginTop: 20
      }, fonts.bold)
    }, "Berat Badan:"), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return _this2.setState({
          weightSelectorVisible: true
        });
      },
      style: {
        alignItems: "center",
        flexDirection: "row",
        marginTop: 10
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TextInput, {
      editable: false,
      placeholder: "Input berat badan",
      style: {
        backgroundColor: "#F1F1F1",
        borderRadius: 10,
        paddingHorizontal: 16,
        paddingVertical: 8
      },
      value: weight ? weight + " kg" : ""
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/icons/baseline_edit_black_18dp.png"),
      style: {
        marginStart: 10,
        padding: 10
      }
    }), /*#__PURE__*/React__default['default'].createElement(Modal__default['default'], {
      isVisible: weightSelectorVisible,
      useNativeDriver: true
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: staticColors.white,
        borderRadius: 40,
        padding: 30
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        alignSelf: "center",
        color: themeColors.darkestPrimary,
        fontSize: 20,
        marginBottom: 20
      }, fonts.bold)
    }, "Pilih Berat"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        flexDirection: "row"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNativeWheelPickerAndroid.WheelPicker, {
      data: ___default['default'].range(1, 251).map(function (i) {
        return i.toString();
      }),
      initPosition: weightInteger ? weightInteger - 1 : 69,
      onItemSelected: function onItemSelected(selectedItem) {
        return _this2.setState({
          temporaryWeightInteger: selectedItem + 1
        });
      },
      selectedItem: temporaryWeightInteger ? temporaryWeightInteger - 1 : weightInteger ? weightInteger - 1 : 69
    }), /*#__PURE__*/React__default['default'].createElement(reactNativeWheelPickerAndroid.WheelPicker, {
      data: ___default['default'].range(0, 10).map(function (i) {
        return i.toString();
      }),
      initPosition: weightDecimal ? weightDecimal : 0,
      onItemSelected: function onItemSelected(selectedItem) {
        return _this2.setState({
          temporaryWeightDecimal: selectedItem
        });
      },
      selectedItem: temporaryWeightDecimal ? temporaryWeightDecimal : weightDecimal ? weightDecimal : 0,
      style: {
        width: 100
      }
    })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        flexDirection: "row",
        justifyContent: "space-between"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        _this2.setState({
          temporaryWeightDecimal: null,
          temporaryWeightInteger: null,
          weightSelectorVisible: false
        });
      },
      style: {
        backgroundColor: "#E64F4F",
        borderRadius: 20
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.white,
        fontSize: 16,
        paddingHorizontal: 30,
        paddingVertical: 10
      }, fonts.bold)
    }, "Batal")), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        var defaultWeightDecimal = 0;
        var defaultWeightInteger = 70;

        _this2.setState({
          temporaryWeightDecimal: null,
          temporaryWeightInteger: null,
          weightDecimal: temporaryWeightDecimal === 0 ? 0 : temporaryWeightDecimal || weightDecimal || defaultWeightDecimal,
          weightInteger: temporaryWeightInteger || weightInteger || defaultWeightInteger,
          weightSelectorVisible: false
        });
      },
      style: {
        backgroundColor: "#5DBE66",
        borderRadius: 20
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.white,
        fontSize: 16,
        paddingHorizontal: 30,
        paddingVertical: 10
      }, fonts.bold)
    }, "Pilih")))))), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: themeColors.darkestPrimary,
        fontSize: 18,
        marginTop: 20
      }, fonts.bold)
    }, "BMI:"), bmiContainer));
  };

  return MedicalScreen;
}(React__default['default'].Component);

var MedicalScreen$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(MedicalScreen);

var REACTIONS = [{
  label: "Sangat Buruk",
  src: require("../assets/1a.png"),
  bigSrc: require("../assets/1.png")
}, {
  label: "Buruk",
  src: require("../assets/2a.png"),
  bigSrc: require("../assets/2.png")
}, {
  label: "Baik",
  src: require("../assets/3a.png"),
  bigSrc: require("../assets/3.png")
}, {
  label: "Sangat Baik",
  src: require("../assets/4a.png"),
  bigSrc: require("../assets/4.png")
}];
var styles$a = reactNative.StyleSheet.create({
  avatar: {
    borderRadius: 30,
    height: 60,
    marginRight: 15,
    width: 60
  },
  container: {
    justifyContent: "center",
    padding: 10
  },
  nameContainer: {
    flex: 1,
    flexWrap: "wrap",
    flexDirection: "row",
    justifyContent: "flex-start",
    alignItems: "center"
  },
  name: _extends({
    color: "#FFF"
  }, fonts.regular, {
    fontSize: 20
  }),
  position: _extends({
    color: "#FFF"
  }, fonts.light, {
    fontSize: 16
  }),
  profile: {
    alignItems: "center",
    flexDirection: "row",
    padding: 25
  },
  ratingContainer: {
    alignItems: "center",
    backgroundColor: "#FFF",
    borderRadius: 40,
    paddingVertical: 40
  },
  question: _extends({
    color: "#808080"
  }, fonts.regular, {
    fontSize: 20,
    textAlign: "center",
    paddingHorizontal: 40
  }),
  selectedValue: _extends({}, fonts.bold, {
    textTransform: "uppercase",
    fontSize: 30,
    marginTop: 30,
    textAlign: "center"
  }),
  thanks: _extends({}, fonts.regular, {
    fontSize: 20,
    marginVertical: 10,
    textAlign: "center",
    paddingHorizontal: 10
  }),
  itemLabelContainer: {
    flex: 1,
    flexDirection: "row",
    flexWrap: "wrap",
    paddingHorizontal: 0
  },
  itemLabel: _extends({}, fonts.regular, {
    fontSize: 12,
    color: "#808080",
    textAlign: "center"
  }),
  itemImage: {
    borderRadius: 72 / 2,
    height: 72,
    width: 72
  },
  item: {
    alignItems: "center",
    flex: 0.3,
    borderWidth: 1,
    padding: 2,
    margin: 2
  },
  itemContainer: {
    marginTop: 10
  },
  input: _extends({}, fonts.regular, {
    fontSize: 16,
    marginTop: 50,
    borderBottomColor: "#000000",
    borderBottomWidth: 1,
    paddingBottom: 5
  }),
  inputError: {
    borderColor: "#FF0000",
    borderWidth: 1,
    borderBottomColor: "#FF0000"
  },
  button: _extends({
    alignSelf: "center",
    borderRadius: 20,
    color: "#FFF"
  }, fonts.bold, {
    fontSize: 18,
    backgroundColor: "#5DBE66",
    paddingVertical: 10,
    paddingHorizontal: 50,
    marginTop: 40
  }),
  emoji: {
    width: 120,
    height: 120
  }
});

var RatingScreen = /*#__PURE__*/function (_Component) {
  _inheritsLoose(RatingScreen, _Component);

  function RatingScreen(props) {
    var _this;

    _this = _Component.call(this, props) || this;

    _defineProperty(_assertThisInitialized(_this), "_handleSelected", function (selection) {
      _this.setState({
        selectedRating: selection,
        selectedCategories: {},
        noteValid: true
      });
    });

    _this.state = {
      selectedRating: null,
      submitted: false,
      note: "",
      categories: [],
      selectedCategories: {},
      noteValid: true
    };
    return _this;
  }

  var _proto = RatingScreen.prototype;

  _proto.fetchRating = /*#__PURE__*/function () {
    var _fetchRating = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
      var _yield$API$get, categories;

      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              setConsultation(null);
              _context.prev = 1;
              _context.next = 4;
              return API.get(APP_BASE_URL + "/v2/rating-feedbacks");

            case 4:
              _yield$API$get = _context.sent;
              categories = _yield$API$get.data.data;
              this.setState({
                categories: categories
              });
              _context.next = 12;
              break;

            case 9:
              _context.prev = 9;
              _context.t0 = _context["catch"](1);
              console.log((_context.t0 == null ? void 0 : _context.t0.response) || _context.t0);

            case 12:
            case "end":
              return _context.stop();
          }
        }
      }, _callee, this, [[1, 9]]);
    }));

    function fetchRating() {
      return _fetchRating.apply(this, arguments);
    }

    return fetchRating;
  }();

  _proto.rate = /*#__PURE__*/function () {
    var _rate = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
      return regeneratorRuntime.wrap(function _callee2$(_context2) {
        while (1) {
          switch (_context2.prev = _context2.next) {
            case 0:
              _context2.prev = 0;
              _context2.next = 3;
              return API.post(APP_BASE_URL + "/v2/consultations/doctor-rating", {
                trx_id: this.props.navigation.state.params.transactionId,
                rating_score: this.state.selectedRating.key + 1,
                rating_notes: this.state.note,
                feedbacks: Object.keys(this.state.selectedCategories)
              });

            case 3:
              _context2.next = 5;
              return AsyncStorage__default['default'].removeItem("active_consultation");

            case 5:
              this.setState({
                submitted: true
              });
              _context2.next = 11;
              break;

            case 8:
              _context2.prev = 8;
              _context2.t0 = _context2["catch"](0);
              console.log((_context2.t0 == null ? void 0 : _context2.t0.response) || _context2.t0);

            case 11:
            case "end":
              return _context2.stop();
          }
        }
      }, _callee2, this, [[0, 8]]);
    }));

    function rate() {
      return _rate.apply(this, arguments);
    }

    return rate;
  }();

  _proto.componentDidMount = function componentDidMount() {
    this.fetchRating();
  };

  _proto.componentWillUnmount = function componentWillUnmount() {
    clearTimeout(this.closeTimeoutId);
  };

  _proto.render = function render() {
    var _this2 = this;

    var ratingContent;
    var noteValid = this.state.noteValid;

    if (this.state.submitted) {
      ratingContent = /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        style: styles$a.emoji,
        source: REACTIONS[this.state.selectedRating.key].bigSrc
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$a.selectedValue, {
          color: this.props.themeColors.primary
        }]
      }, this.state.selectedRating.value), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$a.thanks
      }, "Terima kasih atas feedback yang diberikan"));
    } else {
      var categories = ___default['default'].reject(this.state.categories, function (item) {
        var filter;

        if (_this2.state.selectedRating) {
          if (_this2.state.selectedRating.key > 1) {
            filter = "positive";
          } else {
            filter = "negative";
          }

          return item["feedback_category"] !== filter;
        } else {
          return true;
        }
      });

      ratingContent = /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$a.question
      }, "Bagaimana pengalaman konsultasi Anda"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          paddingHorizontal: 30
        }
      }, /*#__PURE__*/React__default['default'].createElement(EmojiRating, {
        onSelected: this._handleSelected,
        selected: this.state.selectedRating
      })), this.state.selectedRating && /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$a.selectedValue, {
          color: this.props.themeColors.primary
        }]
      }, this.state.selectedRating.value), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$a.thanks
      }, "Terima kasih, apa yang telah kami lakukan dengan", " ", this.state.selectedRating.value.toLowerCase(), "?"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$a.itemContainer
      }, ___default['default'].chunk(categories, 3).map(function (chunk, index) {
        return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          key: index,
          style: {
            flexDirection: "row",
            justifyContent: "center",
            paddingVertical: 10
          }
        }, chunk.map(function (item) {
          var customStyles = {
            borderColor: "transparent"
          };

          if (_this2.state.selectedCategories[item["id"]]) {
            customStyles = {
              borderColor: "#5DBE66"
            };
          }

          return /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
            style: [styles$a.item, customStyles],
            key: item["id"],
            onPress: function onPress() {
              var selectedCategories = Object.assign({}, _this2.state.selectedCategories);

              if (selectedCategories[item["id"]]) {
                selectedCategories[item["id"]] = !selectedCategories[item["id"]];
              } else {
                selectedCategories[item["id"]] = true;
              }

              _this2.setState({
                selectedCategories: selectedCategories
              });
            }
          }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
            source: {
              uri: item["feedback_photo"]
            },
            style: [styles$a.itemImage, {
              backgroundColor: _this2.props.themeColors.lightestPrimary
            }]
          }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
            style: styles$a.itemLabelContainer
          }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
            style: styles$a.itemLabel
          }, item["feedback_name"])));
        }));
      })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          marginHorizontal: 20
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TextInput, {
        style: [styles$a.input, noteValid ? {} : styles$a.inputError],
        placeholder: "Catatan",
        placeholderTextColor: "#808080",
        onChangeText: function onChangeText(note) {
          return _this2.setState({
            note: note,
            noteValid: true
          });
        },
        value: this.state.note
      })), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          // check required if rate <= 1
          var _this2$state = _this2.state,
              selectedRating = _this2$state.selectedRating,
              note = _this2$state.note;
          var currentRating = selectedRating.key;
          var noteValid = true;

          if (currentRating <= 1 && !note) {
            noteValid = false;
          }

          _this2.setState({
            noteValid: noteValid
          }, function () {
            var noteValid = _this2.state.noteValid;

            if (!noteValid) {
              return;
            }

            _this2.rate();

            _this2.closeTimeoutId = setTimeout(function () {
              return _this2.props.navigation.goBack();
            }, 3000);
          });
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$a.button
      }, "Kirim"))));
    }

    var profile = /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$a.profile
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: this.props.navigation.state.params.agentAvatar ? {
        uri: this.props.navigation.state.params.agentAvatar
      } : require("../assets/avatars/doctor.png"),
      style: styles$a.avatar
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$a.nameContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$a.name
    }, this.props.navigation.state.params.agentName), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$a.position
    }, this.props.navigation.state.params.agentSpecialities)), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
        return regeneratorRuntime.wrap(function _callee3$(_context3) {
          while (1) {
            switch (_context3.prev = _context3.next) {
              case 0:
                _context3.next = 2;
                return AsyncStorage__default['default'].removeItem("active_consultation");

              case 2:
                _this2.props.navigation.pop();

              case 3:
              case "end":
                return _context3.stop();
            }
          }
        }, _callee3);
      }))
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        marginStart: 15,
        backgroundColor: "#E64F4F",
        borderRadius: 10,
        paddingHorizontal: 10,
        paddingVertical: 10,
        borderColor: "#FFF",
        borderWidth: 2
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/outline_close_white_24dp.png")
    }))));
    var rating = /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$a.ratingContainer
    }, ratingContent);

    if (this.state.submitted || !this.state.selectedRating) {
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: this.props.themeColors.primary,
          flex: 1,
          alignItems: "center",
          justifyContent: "center"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.SafeAreaView, {
        style: styles$a.container
      }, profile, rating));
    } else {
      return /*#__PURE__*/React__default['default'].createElement(reactNative.ScrollView, {
        style: {
          backgroundColor: this.props.themeColors.primary,
          flex: 1
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$a.container
      }, profile, rating));
    }
  };

  return RatingScreen;
}(React.Component);

var RatingScreen$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(RatingScreen);

var SymptomsScreen = /*#__PURE__*/function (_Component) {
  _inheritsLoose(SymptomsScreen, _Component);

  function SymptomsScreen(props) {
    var _this;

    _this = _Component.call(this, props) || this;

    _defineProperty(_assertThisInitialized(_this), "_renderHeader", function (section) {
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          padding: 20,
          borderTopColor: "#707070",
          borderTopWidth: 1,
          borderTopEndRadius: 20,
          borderTopStartRadius: 20,
          flexDirection: "row",
          justifyContent: "center",
          alignItems: "center"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: "#707070",
          fontSize: 18
        }, fonts.bold, {
          flexGrow: 1
        })
      }, section.name), /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/round_keyboard_arrow_down_black_18dp.png")
      }));
    });

    _defineProperty(_assertThisInitialized(_this), "_renderContent", function (section) {
      var chunks = ___default['default'].chunk(section.items, 2);

      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          padding: 5
        }
      }, chunks.map(function (chunk, index) {
        return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          key: index,
          style: {
            flexDirection: "row"
          }
        }, chunk.map(function (item) {
          return /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
            style: {
              flex: 0.5
            },
            key: item["id"],
            onPress: function onPress() {
              _this.setState({
                symptomsSimple: _this.state.symptomsSimple.map(function (a) {
                  return {
                    name: a.name,
                    items: a.items.map(function (b) {
                      return b["id"] === item["id"] ? Object.assign({}, b, {
                        selected: !b.selected
                      }) : b;
                    })
                  };
                })
              });
            }
          }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
            style: {
              padding: 10,
              margin: 10,
              borderRadius: 20,
              borderColor: item["selected"] ? "#5DBE66" : "#808080",
              borderWidth: 2,
              alignItems: "center"
            }
          }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
            style: _extends({
              color: "#808080",
              fontSize: 16
            }, fonts.regular)
          }, item["complaint_name"])));
        }));
      }));
    });

    _defineProperty(_assertThisInitialized(_this), "_updateSections", function (activeSections) {
      _this.setState({
        activeSections: activeSections
      });
    });

    _defineProperty(_assertThisInitialized(_this), "onDatePickerChange", function (_event, selectedDate) {
      var patientDob = selectedDate || _this.state.patientDob; // setShow(Platform.OS === "ios");

      _this.setState({
        patientDob: patientDob,
        showDatePicker: false
      });
    });

    _defineProperty(_assertThisInitialized(_this), "showDatePickerHandler", function () {
      _this.setState({
        showDatePicker: true
      });
    });

    _defineProperty(_assertThisInitialized(_this), "formatDate", function (date) {
      if (!date) return "Lengkapi Tanggal Lahir Anda";
      return date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear();
    });

    _this.state = {
      consultation: "",
      duration: 0,
      activeSections: [],
      symptoms: [],
      symptomsSimple: [],
      selectedUnit: "day",
      patientDob: "",
      showDatePicker: false
    };
    return _this;
  }

  var _proto = SymptomsScreen.prototype;

  _proto.fetchSymptoms = /*#__PURE__*/function () {
    var _fetchSymptoms = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
      var _yield$API$get, symptoms;

      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              _context.prev = 0;
              _context.next = 3;
              return API.get(APP_BASE_URL + "/v2/info/complaints");

            case 3:
              _yield$API$get = _context.sent;
              symptoms = _yield$API$get.data.data;
              this.setState({
                symptoms: symptoms,
                symptomsSimple: ___default['default'].map(___default['default'].groupBy(symptoms, "complaint_group"), function (item, key) {
                  return {
                    name: key,
                    items: item.map(function (item) {
                      return Object.assign({}, item, {
                        selected: false
                      });
                    })
                  };
                })
              });
              _context.next = 11;
              break;

            case 8:
              _context.prev = 8;
              _context.t0 = _context["catch"](0);
              console.log((_context.t0 == null ? void 0 : _context.t0.response) || _context.t0);

            case 11:
            case "end":
              return _context.stop();
          }
        }
      }, _callee, this, [[0, 8]]);
    }));

    function fetchSymptoms() {
      return _fetchSymptoms.apply(this, arguments);
    }

    return fetchSymptoms;
  }();

  _proto.componentDidMount = function componentDidMount() {
    this.promise = this.fetchSymptoms();
  };

  _proto.render = function render() {
    var _this2 = this;

    var fm1 = ___default['default'].flatMap(this.state.symptomsSimple, function (item) {
      return item.items;
    });

    var fm2 = ___default['default'].filter(fm1, function (item) {
      return item.selected;
    });

    var fm3 = ___default['default'].map(fm2, function (item) {
      return item["complaint_name"];
    });

    var fm4 = ___default['default'].map(fm2, function (item) {
      return item["id"];
    });

    var symptomsSummary = fm3.join(", ");
    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: this.props.themeColors.primary,
        flex: 1
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.ScrollView, null, /*#__PURE__*/React__default['default'].createElement(reactNative.SafeAreaView, null, /*#__PURE__*/React__default['default'].createElement(Header, {
      onPress: function onPress() {
        _this2.props.navigation.goBack();
      },
      position: "start",
      text: "Batal",
      theme: "light"
    })), !this.props.navigation.state.params.hasDoB && /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        padding: 20,
        paddingTop: 10
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: this.showDatePickerHandler
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        borderRadius: 20,
        paddingHorizontal: 20,
        paddingVertical: 20,
        backgroundColor: "#FFFFFF",
        minHeight: 50
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        paddingHorizontal: 30,
        fontSize: 18
      }, fonts.bold, {
        color: this.props.themeColors.darkestPrimary,
        marginBottom: 10,
        alignSelf: "center"
      })
    }, "Tanggal Lahir:"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: {
        alignSelf: "center"
      }
    }, this.formatDate(this.state.patientDob))))), this.state.showDatePicker && /*#__PURE__*/React__default['default'].createElement(DateTimePicker__default['default'], {
      testID: "dateTimePicker",
      value: this.state.patientDob || new Date(),
      mode: "date",
      display: reactNative.Platform.select({
        ios: "default",
        android: "spinner"
      }),
      maximumDate: Date.parse(new Date()),
      onChange: this.onDatePickerChange
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        padding: 20,
        paddingTop: 0
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableWithoutFeedback, {
      onPress: function onPress() {
        return _this2.inputRef.focus();
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        borderRadius: 20,
        paddingHorizontal: 20,
        paddingVertical: 10,
        backgroundColor: "#FFFFFF",
        minHeight: 100
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TextInput, {
      ref: function ref(_ref) {
        _this2.inputRef = _ref;
      },
      value: this.state.consultation,
      onChangeText: function onChangeText(value) {
        return _this2.setState({
          consultation: value
        });
      },
      placeholder: "Tuliskan Keluhan Utama Anda",
      multiline: true,
      maxLength: 250,
      textAlignVertical: "top"
    })))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        padding: 20,
        paddingTop: 0
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        paddingVertical: 20,
        paddingHorizontal: 10,
        backgroundColor: "#FFFFFF",
        borderRadius: 20
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        paddingHorizontal: 30,
        fontSize: 18
      }, fonts.bold, {
        color: this.props.themeColors.darkestPrimary,
        marginBottom: 10,
        alignSelf: "center"
      })
    }, "Lama Keluhan:"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        flexDirection: "row",
        paddingLeft: 20
      }
    }, /*#__PURE__*/React__default['default'].createElement(Slider__default['default'], {
      style: {
        flexGrow: 1,
        alignSelf: "center"
      },
      onValueChange: function onValueChange(value) {
        return _this2.setState({
          duration: value
        });
      },
      minimumTrackTintColor: this.props.themeColors.lighterPrimary,
      maximumTrackTintColor: this.props.themeColors.lightestPrimary,
      step: 1,
      minimumValue: 0,
      maximumValue: 13,
      thumbTintColor: this.props.themeColors.darkerPrimary
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [{
        marginStart: 20,
        width: 100
      }, reactNative.Platform.OS === "android" ? {
        alignItems: "center"
      } : null]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        fontSize: 27
      }, fonts.bold, {
        paddingHorizontal: 10,
        color: this.props.themeColors.lighterPrimary
      })
    }, this.state.duration > 12 ? "12+" : this.state.duration), /*#__PURE__*/React__default['default'].createElement(PickerSelect__default['default'], {
      onValueChange: function onValueChange(itemValue) {
        _this2.setState({
          selectedUnit: itemValue
        });
      },
      useNativeAndroidPickerStyle: false,
      items: [{
        label: "Hari",
        value: "day"
      }, {
        label: "Minggu",
        value: "week"
      }, {
        label: "Bulan",
        value: "month"
      }],
      style: {
        inputIOS: {
          fontSize: 16,
          paddingVertical: 12,
          paddingHorizontal: 10,
          color: "black",
          paddingRight: 30
        },
        inputAndroid: {
          fontSize: 16,
          paddingHorizontal: 10,
          paddingVertical: 8,
          color: "black",
          paddingRight: 30
        },
        iconContainer: {
          top: 10
        }
      },
      placeholder: {},
      Icon: function Icon() {
        return /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
          style: {
            height: 24,
            width: 24
          },
          source: require("../assets/round_keyboard_arrow_down_black_18dp.png")
        });
      }
    }))))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        marginHorizontal: 30,
        color: "#FFFFFF",
        fontSize: 18
      }, fonts.bold, {
        marginTop: 25,
        alignSelf: "center"
      })
    }, "Keluhan Tambahan:"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        marginHorizontal: 30,
        color: "#FFFFFF",
        fontSize: 18
      }, fonts.light, {
        marginBottom: 25,
        alignSelf: "center"
      })
    }, symptomsSummary || "-"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: "#FFF",
        marginHorizontal: 10,
        borderRadius: 20,
        marginBottom: 10
      }
    }, /*#__PURE__*/React__default['default'].createElement(Accordion__default['default'], {
      touchableComponent: reactNative.TouchableOpacity,
      sections: this.state.symptomsSimple,
      activeSections: this.state.activeSections,
      renderHeader: this._renderHeader,
      renderContent: this._renderContent,
      onChange: this._updateSections
    }))))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: "#FFFFFF"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: "rgba(0, 0, 0, 0.16)",
        height: 3,
        width: reactNative.Dimensions.get("window").width
      }
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        padding: 20
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        if (_this2.state.consultation.length === 0 || _this2.state.duration === 0 || !_this2.props.navigation.state.params.hasDoB && !_this2.state.patientDob) {
          reactNative.Alert.alert("Kesalahan", "Isi " + (!_this2.props.navigation.state.params.hasDoB ? "tanggal lahir, keluhan, dan durasi" : "keluhan dan durasi") + " sejak kapan keluhan dirasakan sebelum memulai konsultasi dengan dokter.");
          return;
        }

        _this2.props.navigation.replace("Consent", _extends({}, _this2.props.navigation.state.params, {
          // params passed {
          //   patientId,
          //   fullName,
          //   hasViId,
          //   enableVoiceCall,
          //   enableVideoCall,
          //   clientId,
          // }
          cardNumberDependency: _this2.props.navigation.state.params ? _this2.props.navigation.state.params.policyNumber : null,
          consultation: _this2.state.consultation,
          symptomsSummary: symptomsSummary,
          complaintIds: fm4,
          duration: _this2.state.duration,
          durationUnit: _this2.state.selectedUnit,
          patientDob: _this2.state.patientDob
        }));
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        marginBottom: 0,
        paddingVertical: 10,
        paddingHorizontal: 40,
        backgroundColor: "#5DBE66",
        borderRadius: 20,
        alignSelf: "center"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        fontSize: 16
      }, fonts.bold, {
        color: "#FFFFFF"
      })
    }, "Selanjutnya"))))));
  };

  return SymptomsScreen;
}(React.Component);

var SymptomsScreen$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(SymptomsScreen);

var getDownloadPermissionAndroid = /*#__PURE__*/function () {
  var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
    var granted;
    return regeneratorRuntime.wrap(function _callee$(_context) {
      while (1) {
        switch (_context.prev = _context.next) {
          case 0:
            _context.prev = 0;
            _context.next = 3;
            return reactNative.PermissionsAndroid.request(reactNative.PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE, {
              title: "Image Download Permission",
              message: "Your permission is required to save images to your device",
              buttonNegative: "Cancel",
              buttonPositive: "OK"
            });

          case 3:
            granted = _context.sent;

            if (!(granted === reactNative.PermissionsAndroid.RESULTS.GRANTED)) {
              _context.next = 6;
              break;
            }

            return _context.abrupt("return", true);

          case 6:
            reactNative.Alert.alert("Save remote Image", "Grant Me Permission to save Image", [{
              text: "OK",
              onPress: function onPress() {
                return console.log("OK Pressed");
              }
            }], {
              cancelable: false
            });
            _context.next = 12;
            break;

          case 9:
            _context.prev = 9;
            _context.t0 = _context["catch"](0);
            reactNative.Alert.alert("Save remote Image", "Failed to save Image: " + _context.t0.message, [{
              text: "OK",
              onPress: function onPress() {
                return console.log("OK Pressed");
              }
            }], {
              cancelable: false
            });

          case 12:
          case "end":
            return _context.stop();
        }
      }
    }, _callee, null, [[0, 9]]);
  }));

  return function getDownloadPermissionAndroid() {
    return _ref.apply(this, arguments);
  };
}();

var savePrescription = /*#__PURE__*/function () {
  var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(url) {
    var granted, dirs, splitted, fileName, blob, saveToDevice;
    return regeneratorRuntime.wrap(function _callee2$(_context2) {
      while (1) {
        switch (_context2.prev = _context2.next) {
          case 0:
            if (!(reactNative.Platform.OS === "android")) {
              _context2.next = 6;
              break;
            }

            _context2.next = 3;
            return getDownloadPermissionAndroid();

          case 3:
            granted = _context2.sent;

            if (granted) {
              _context2.next = 6;
              break;
            }

            return _context2.abrupt("return");

          case 6:
            dirs = RNFetchBlob__default['default'].fs.dirs;
            splitted = url.split("/");
            fileName = splitted[splitted.length - 1].match("([^/?]*)");
            _context2.prev = 9;
            _context2.next = 12;
            return RNFetchBlob__default['default'].config({
              fileCache: true,
              appendExt: "jpg",
              path: dirs.PictureDir + "/" + fileName[0]
            }).fetch("GET", encodeURI(url));

          case 12:
            blob = _context2.sent;
            console.log("savePrescription", {
              url: url,
              blob: blob,
              fileName: fileName
            });
            _context2.next = 16;
            return CameraRoll__default['default'].save(blob.data, {
              type: "photo",
              album: "prescription"
            });

          case 16:
            saveToDevice = _context2.sent;
            console.log({
              saveToDevice: saveToDevice
            });
            reactNative.Alert.alert("Simpan Resep", "Resep berhasil disimpan", [{
              text: "OK",
              onPress: function onPress() {
                return console.log("OK Pressed");
              }
            }], {
              cancelable: false
            });
            return _context2.abrupt("return", true);

          case 22:
            _context2.prev = 22;
            _context2.t0 = _context2["catch"](9);
            reactNative.Alert.alert("Simpan Resep", "Resep gagal disimpan. Error:" + _context2.t0, [{
              text: "OK",
              onPress: function onPress() {
                return console.log("OK Pressed");
              }
            }], {
              cancelable: false
            });
            return _context2.abrupt("return", false);

          case 26:
          case "end":
            return _context2.stop();
        }
      }
    }, _callee2, null, [[9, 22]]);
  }));

  return function savePrescription(_x) {
    return _ref2.apply(this, arguments);
  };
}();

var styles$9 = reactNative.StyleSheet.create({
  container: {
    flex: 1,
    position: "absolute",
    width: "100%",
    height: "100%"
  },
  content: {
    alignItems: "center",
    flex: 1,
    justifyContent: "center",
    padding: 30
  },
  message: _extends({
    color: "#FFF"
  }, fonts.regular, {
    fontSize: 20,
    padding: 40,
    paddingBottom: 10,
    textAlign: "center"
  }),
  activityIndicator: {
    flex: 1,
    position: "absolute",
    width: "100%",
    height: "100%",
    backgroundColor: staticColors.grey
  }
});

var WaitingScreen = /*#__PURE__*/function (_Component) {
  _inheritsLoose(WaitingScreen, _Component);

  function WaitingScreen(props) {
    var _this;

    _this = _Component.call(this, props) || this;

    _defineProperty(_assertThisInitialized(_this), "onCancel", function () {
      _this.clearRoom(_this.state.temporaryRoom);
    });

    _defineProperty(_assertThisInitialized(_this), "finishConsultation", function () {
      _this.props.navigation.replace("Rating", {
        transactionId: _this.state.room.transaction_id,
        agentAvatar: _this.state.doctorInfo.doctor_photo,
        agentName: _this.state.doctorInfo.doctor_f_name + " " + _this.state.doctorInfo.doctor_l_name,
        agentSpecialities: _this.state.doctorInfo.specialities[0].speciality_desc
      });
    });

    _defineProperty(_assertThisInitialized(_this), "onNavigationStateChange", function (state) {
      if (state.loading) {
        _this.setState({
          loading: true
        });
      } else {
        _this.setState({
          loading: false
        });

        if (reactNative.Platform.OS === "android") {
          var permissions = [reactNative.PermissionsAndroid.PERMISSIONS.CAMERA, reactNative.PermissionsAndroid.PERMISSIONS.RECORD_AUDIO];
          reactNative.PermissionsAndroid.requestMultiple(permissions).then(function (granted) {
            var cameraGranted = granted["android.permission.CAMERA"] === "granted";
            var recordAudioGranted = granted["android.permission.RECORD_AUDIO"] === "granted";
            console.log({
              cameraGranted: cameraGranted,
              recordAudioGranted: recordAudioGranted
            });
          });
        }
      }
    });

    _defineProperty(_assertThisInitialized(_this), "onMessage", function (event) {
      var data = JSON.parse(event.nativeEvent.data); // console.log("onMessage", event, data);

      if (data.event === "endChat") {
        _this.finishConsultation();

        setConsultation(null);
      }

      if (data.event === "download") savePrescription(data.data);
    });

    _defineProperty(_assertThisInitialized(_this), "navigateCall", function (callType) {
      var navigation = _this.props.navigation;
      var _this$state = _this.state,
          agent = _this$state.agent,
          room = _this$state.room;
      navigation.navigate(callType, {
        doctor: {
          fullName: agent["username"]
        },
        patient: {
          id: navigation.state.params.patientId
        },
        transaction: {
          id: room["trx_id"]
        }
      });
    });

    _this.messageIds = new Set();
    _this.messages = [];
    _this.state = {
      agentAvatar: "",
      doctor: null,
      room: null,
      temporaryRoom: null,
      isModalVisible: false,
      agent: null,
      messages: [],
      time: 0,
      loading: true
    };
    return _this;
  }

  var _proto = WaitingScreen.prototype;

  _proto.createRoom = /*#__PURE__*/function () {
    var _createRoom = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
      var responseData, isStatic, card_number_dependency, dependent, dependency_full_name, symptoms, _this$props$navigatio, patient_id, inbox_id, client_app_id, patientDob, hasDoB, payload, patient_dob, _yield$API$post, data;

      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              // console.log("start create room");
              responseData = null;
              isStatic = STATIC_CARD_NUMBERS.includes(this.props.navigation.state.params.cardNumberDependency);
              card_number_dependency = !isStatic ? this.props.navigation.state.params.cardNumberDependency : undefined;
              dependent = isStatic ? this.props.navigation.state.params.cardNumberDependency : undefined;
              dependency_full_name = !isStatic ? this.props.navigation.state.params.fullName : undefined;
              symptoms = {
                complaint_id: this.props.navigation.state.params.complaintIds,
                consultation: this.props.navigation.state.params.consultation,
                duration: this.props.navigation.state.params.duration,
                duration_unit: this.props.navigation.state.params.durationUnit
              };

              if (!this.props.navigation.state.params.activeTransaction) {
                _context.next = 10;
                break;
              }

              // console.log("resume transaction");
              responseData = {
                trx_id: this.props.navigation.state.params.transactionId,
                patient_id: this.props.navigation.state.params.newPatientId
              };
              _context.next = 26;
              break;

            case 10:
              // console.log("create new transaction");
              _this$props$navigatio = this.props.navigation.state.params, patient_id = _this$props$navigatio.newPatientId, inbox_id = _this$props$navigatio.inboxId, client_app_id = _this$props$navigatio.clientAppId, patientDob = _this$props$navigatio.patientDob, hasDoB = _this$props$navigatio.hasDoB;
              payload = {
                inbox_id: inbox_id,
                patient_id: patient_id,
                client_app_id: client_app_id,
                card_number_dependency: card_number_dependency,
                dependent: dependent,
                dependency_full_name: dependency_full_name,
                symptoms: symptoms
              };
              patient_dob = patientDob ? patientDob.getFullYear() + "-" + (patientDob.getMonth() + 1) + "-" + patientDob.getDate() : null;
              if (!hasDoB) payload["patient_dob"] = patient_dob;
              _context.prev = 14;
              _context.next = 17;
              return API.post(APP_BASE_URL + "/v2/consultations/start", payload);

            case 17:
              _yield$API$post = _context.sent;
              data = _yield$API$post.data.data;
              responseData = _extends({}, data, {
                patient_id: patient_id
              });
              _context.next = 26;
              break;

            case 22:
              _context.prev = 22;
              _context.t0 = _context["catch"](14);
              reactNative.Alert.alert("Gagal", "Tidak berhasil menghubungkan dengan dokter, coba lagi beberapa saat lagi.");
              console.log((_context.t0 == null ? void 0 : _context.t0.response) || _context.t0);

            case 26:
              this.setState({
                temporaryRoom: responseData
              });

              if (responseData) {
                this.checkRoom(responseData);
              }

            case 28:
            case "end":
              return _context.stop();
          }
        }
      }, _callee, this, [[14, 22]]);
    }));

    function createRoom() {
      return _createRoom.apply(this, arguments);
    }

    return createRoom;
  }();

  _proto.sendMessage = function sendMessage(_ref) {
    var website_token = _ref.website_token,
        cw_token = _ref.cw_token;
    var _this$props$navigatio2 = this.props.navigation.state.params,
        consultation = _this$props$navigatio2.consultation,
        duration = _this$props$navigatio2.duration,
        durationUnit = _this$props$navigatio2.durationUnit,
        symptomsSummary = _this$props$navigatio2.symptomsSummary,
        cardNumberDependency = _this$props$navigatio2.cardNumberDependency,
        fullName = _this$props$navigatio2.fullName;
    var dependentMessage = "";

    if (STATIC_CARD_NUMBERS.includes(cardNumberDependency)) {
      dependentMessage = "Jenis Pasien: \"Tertanggung tidak terdaftar\"\n";
    }

    if (cardNumberDependency) {
      dependentMessage = dependentMessage + ("Pemeriksaan untuk: " + fullName + "\n");
    }

    var durationUnitTi18n = I18n__default['default'].t("prixa." + durationUnit);
    API.post(APP_BASE_URL + "/v1/widgets/messages?website_token=" + website_token + "&cw_conversation=" + cw_token, {
      message: {
        content: dependentMessage + "Keluhan Utama: " + consultation + "\n          Lama keluhan: " + duration + " " + durationUnitTi18n + "\n          Keluhan Tambahan: " + (symptomsSummary || "-") + "\n          ",
        timestamp: new Date().toString(),
        "content-type": "text"
      }
    })["catch"](function (err) {
      return console.log(err.response);
    });
  };

  _proto.clearRoom = /*#__PURE__*/function () {
    var _clearRoom = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(roomData) {
      return regeneratorRuntime.wrap(function _callee2$(_context2) {
        while (1) {
          switch (_context2.prev = _context2.next) {
            case 0:
              if (!roomData) {
                _context2.next = 12;
                break;
              }

              _context2.prev = 1;
              _context2.next = 4;
              return API.post(APP_BASE_URL + "/v2/consultations/cancel", {
                trx_id: roomData.trx_id
              });

            case 4:
              _context2.next = 6;
              return API.post(APP_BASE_URL + "/v2/consultations/finish", {
                trx_id: roomData.trx_id
              });

            case 6:
              _context2.next = 11;
              break;

            case 8:
              _context2.prev = 8;
              _context2.t0 = _context2["catch"](1);
              console.log(_context2.t0.response);

            case 11:
              reactNative.Alert.alert("Timeout", "Tidak ada dokter yang tersedia, silakan coba beberapa saat lagi.");

            case 12:
              this.props.navigation.goBack();

            case 13:
            case "end":
              return _context2.stop();
          }
        }
      }, _callee2, this, [[1, 8]]);
    }));

    function clearRoom(_x) {
      return _clearRoom.apply(this, arguments);
    }

    return clearRoom;
  }();

  _proto.getDoctorInfo = /*#__PURE__*/function () {
    var _getDoctorInfo = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(transaction) {
      var _yield$API$get, doctorInfo;

      return regeneratorRuntime.wrap(function _callee3$(_context3) {
        while (1) {
          switch (_context3.prev = _context3.next) {
            case 0:
              _context3.prev = 0;
              _context3.next = 3;
              return API.get(APP_BASE_URL + "/v2/consultations/doctor-info?trx_id=" + transaction.transaction_id);

            case 3:
              _yield$API$get = _context3.sent;
              doctorInfo = _yield$API$get.data.data;
              this.setState({
                doctorInfo: doctorInfo
              });
              console.log(doctorInfo);
              _context3.next = 12;
              break;

            case 9:
              _context3.prev = 9;
              _context3.t0 = _context3["catch"](0);
              console.log(_context3.t0.response);

            case 12:
            case "end":
              return _context3.stop();
          }
        }
      }, _callee3, this, [[0, 9]]);
    }));

    function getDoctorInfo(_x2) {
      return _getDoctorInfo.apply(this, arguments);
    }

    return getDoctorInfo;
  }();

  _proto.checkRoom = function checkRoom(roomData) {
    var _this2 = this;

    var time = 0; // start polling check transaction status

    this.pollingInterval = setInterval(function () {
      API.get(APP_BASE_URL + "/v2/consultations/patient/" + roomData.patient_id + "?trxId=" + roomData.trx_id).then(function (_ref2) {
        var pollingResp = _ref2.data.data;

        _this2.setState({
          time: time * 3
        }); // transaction get doctor


        if ((pollingResp == null ? void 0 : pollingResp.length) > 0 && pollingResp[0].state === "in_progress") {
          console.log("doctor found, connecting to doctor", pollingResp); // send consultation if new transaction to message room

          if (_this2.props.navigation.state.params.consultation && !_this2.props.navigation.state.params.activeTransaction) {
            _this2.sendMessage(pollingResp[0]);
          }

          _this2.setState({
            room: pollingResp[0]
          });

          _this2.getDoctorInfo(pollingResp[0]);

          clearInterval(_this2.pollingInterval);
        } // transaction didn't get doctor


        if ((pollingResp == null ? void 0 : pollingResp.length) > 0 && pollingResp[0].state === "doctor_not_found") {
          console.log("doctor not found, alert to cancel");

          _this2.clearRoom(roomData);

          clearInterval(_this2.pollingInterval);
        } // too long in progress state so canceled by system


        if (++time >= 20) {
          console.log("canceled by system");

          _this2.clearRoom(roomData);

          clearInterval(_this2.pollingInterval);
        }
      });
    }, 3000);
  };

  _proto.componentDidMount = function componentDidMount() {
    this.promise = this.createRoom();
  };

  _proto.componentWillUnmount = function componentWillUnmount() {
    clearInterval(this.interval);
    clearInterval(this.pollingInterval);
  };

  _proto.getBaymaxWidgetURL = function getBaymaxWidgetURL() {
    var _this$state$room = this.state.room,
        website_token = _this$state$room.website_token,
        transaction_id = _this$state$room.transaction_id;
    return BAYMAX_WIDGET_URL + "/website_token/" + website_token + "/transaction_id/" + transaction_id + "/access_token/" + this.props.accessToken;
  };

  _proto.render = function render() {
    var _this3 = this;

    var avatar;

    if (this.state.doctorInfo) {
      avatar = this.state.doctorInfo.doctor_photo;
    } else {
      avatar = require("../assets/avatars/doctor.png");
    }

    var _this$props$navigatio3 = this.props.navigation.state.params,
        enableVoiceCall = _this$props$navigatio3.enableVoiceCall,
        enableVideoCall = _this$props$navigatio3.enableVideoCall; // inject voximplant config to widget

    var injectJs = "window.voximplantConfig = {\n      enableVoiceCall:" + enableVoiceCall + ", \n      enableVideoCall:" + enableVideoCall + "\n    }";

    var foreground = function foreground(msg) {
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: [styles$9.container, {
          backgroundColor: _this3.props.themeColors.primary
        }]
      }, _this3.state.time >= 10 && /*#__PURE__*/React__default['default'].createElement(Header, {
        onPress: _this3.onCancel,
        position: "start",
        text: "Batal",
        theme: "light"
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$9.content
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$9.message
      }, msg), /*#__PURE__*/React__default['default'].createElement(PulseLoader, {
        avatar: avatar
      })));
    };

    if (this.state.room) {
      var uri = this.getBaymaxWidgetURL();
      return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.KeyboardAvoidingView, {
        enabled: true,
        contentContainerStyle: {
          flex: 1
        },
        keyboardVerticalOffset: reactNative.Platform.select({
          ios: -50,
          android: 20
        }),
        style: {
          flexGrow: 1
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNativeWebview.WebView, {
        onNavigationStateChange: this.onNavigationStateChange,
        source: {
          uri: uri
        },
        style: {
          flex: 1
        },
        originWhitelist: ["https://*"],
        onMessage: function onMessage(e) {
          return _this3.onMessage(e);
        },
        allowsInlineMediaPlayback: true,
        mediaPlaybackRequiresUserAction: false,
        injectedJavaScript: injectJs
      })), this.state.loading && this.state.doctorInfo ? foreground("Anda terhubung dengan " + this.state.doctorInfo.doctor_f_name + " " + this.state.doctorInfo.doctor_l_name + ", sedang memuat percakapan.") : null);
    } else {
      return foreground("Tunggu Sebentar ya, Kami sedang mencarikan Dokter untuk Anda");
    }
  };

  return WaitingScreen;
}(React.Component);

var WaitingScreen$1 = reactRedux.connect(function (state) {
  return {
    fcmToken: state.token.fcmToken,
    themeColors: state.themeColors,
    accessToken: state.token.accessToken
  };
})(WaitingScreen);

var AskScreen = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(AskScreen, _React$Component);

  function AskScreen() {
    var _this;

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;

    _defineProperty(_assertThisInitialized(_this), "state", {
      containerWidth: 0
    });

    return _this;
  }

  var _proto = AskScreen.prototype;

  _proto.handleCancelPress = function handleCancelPress() {
    this.props.navigation.goBack();
  };

  _proto.handleContainerLayout = function handleContainerLayout(_ref) {
    var width = _ref.nativeEvent.layout.width;
    this.setState({
      containerWidth: width
    });
  };

  _proto.handleDependencyPress = function handleDependencyPress() {
    this.props.navigation.replace("dependencies", _extends({}, this.props.navigation.state.params));
  };

  _proto.handlePatientPress = function handlePatientPress() {
    this.props.navigation.replace("symptom", _extends({}, this.props.navigation.state.params));
  };

  _proto.render = function render() {
    var _this2 = this;

    var themeColors = this.props.themeColors;
    var containerWidth = this.state.containerWidth;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      onLayout: function onLayout(e) {
        return _this2.handleContainerLayout(e);
      },
      style: [styles$8.container, {
        backgroundColor: themeColors.primary
      }]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.SafeAreaView, null, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return _this2.handleCancelPress();
      },
      style: styles$8.cancelButton
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/icons/round_arrow_back_ios_white_18dp.png")
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$8.cancelText
    }, I18n__default['default'].t("prixa.cancel")))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$8.illustrationContainer
    }, /*#__PURE__*/React__default['default'].createElement(AutoHeightImage__default['default'], {
      source: require("../assets/illustrations/ask.png"),
      width: containerWidth - 120
    })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$8.contentContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$8.question, {
        color: themeColors.darkestPrimary
      }]
    }, I18n__default['default'].t("prixa.intendedFor")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$8.actionsContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return _this2.handlePatientPress();
      },
      style: [styles$8.dependencyButton, {
        backgroundColor: themeColors.darkestPrimary
      }]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$8.dependencyText
    }, this.props.navigation.state.params.firstName)), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return _this2.handleDependencyPress();
      },
      style: styles$8.patientButton
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$8.patientText
    }, I18n__default['default'].t("prixa.others"))))));
  };

  return AskScreen;
}(React__default['default'].Component);

var styles$8 = reactNative.StyleSheet.create({
  actionsContainer: {
    flexDirection: "row",
    justifyContent: "space-between"
  },
  cancelButton: {
    alignItems: "center",
    flexDirection: "row",
    padding: 15,
    paddingVertical: 36
  },
  cancelText: _extends({
    color: staticColors.white,
    fontSize: 16,
    marginStart: 15
  }, fonts.bold),
  container: {
    flex: 1
  },
  contentContainer: {
    backgroundColor: staticColors.white,
    borderTopEndRadius: 40,
    borderTopStartRadius: 40,
    paddingHorizontal: 30,
    paddingVertical: 40
  },
  dependencyButton: {
    borderRadius: 20,
    paddingHorizontal: 30,
    paddingVertical: 10
  },
  dependencyText: _extends({
    color: staticColors.white,
    fontSize: 16
  }, fonts.bold),
  illustrationContainer: {
    alignItems: "center",
    flexGrow: 1,
    justifyContent: "center"
  },
  patientButton: {
    backgroundColor: staticColors.forestFern,
    borderRadius: 20,
    paddingHorizontal: 30,
    paddingVertical: 10
  },
  patientText: _extends({
    color: staticColors.white,
    fontSize: 16
  }, fonts.bold),
  question: _extends({
    fontSize: 24,
    marginBottom: 30,
    textAlign: "center"
  }, fonts.regular)
});
var AskScreen$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(AskScreen);

var IntroSlide = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(IntroSlide, _React$Component);

  function IntroSlide() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = IntroSlide.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        content = _this$props.content,
        image = _this$props.image,
        themeColors = _this$props.themeColors,
        title = _this$props.title,
        width = _this$props.width;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles$7.container, {
        width: width
      }]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      resizeMode: "contain",
      source: image,
      style: [styles$7.image, {
        width: width - 60
      }]
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$7.title, {
        color: themeColors.darkestPrimary
      }]
    }, title), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$7.content, {
        color: themeColors.darkestPrimary
      }]
    }, content));
  };

  return IntroSlide;
}(React__default['default'].Component);

_defineProperty(IntroSlide, "propTypes", {
  content: PropTypes__default['default'].string.isRequired,
  image: reactNative.Image.propTypes.source.isRequired,
  title: PropTypes__default['default'].string.isRequired,
  width: PropTypes__default['default'].number.isRequired
});

var styles$7 = reactNative.StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "center",
    padding: 30
  },
  content: _extends({
    fontSize: 22,
    textAlign: "center"
  }, fonts.regular),
  image: {
    flex: 0.5,
    marginBottom: 40
  },
  title: _extends({
    fontSize: 22,
    marginBottom: 10,
    textAlign: "center"
  }, fonts.bold)
});
var IntroSlide$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(IntroSlide);

var _Dimensions$get$2 = reactNative.Dimensions.get("window"),
    width$1 = _Dimensions$get$2.width;

var IntroScreen = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(IntroScreen, _React$Component);

  function IntroScreen() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = IntroScreen.prototype;

  _proto.handleDone = function handleDone() {
    this.props.navigation.goBack();
  };

  _proto.handleSkip = function handleSkip() {
    this.props.navigation.goBack();
  };

  _proto.renderItem = function renderItem(_ref) {
    var item = _ref.item;
    return /*#__PURE__*/React__default['default'].createElement(IntroSlide$1, {
      content: item.text,
      image: item.image,
      title: item.title,
      width: width$1
    });
  };

  _proto.render = function render() {
    var _this = this;

    var _this$props = this.props,
        introSlides = _this$props.introSlides,
        themeColors = _this$props.themeColors;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles$6.container, {
        backgroundColor: themeColors.lightestPrimary
      }]
    }, /*#__PURE__*/React__default['default'].createElement(AppIntroSlider__default['default'], {
      activeDotStyle: {
        backgroundColor: themeColors.darkestPrimary
      },
      buttonTextStyle: [styles$6.buttonText, {
        color: themeColors.darkestPrimary
      }],
      doneLabel: I18n__default['default'].t("prixa.done"),
      dotStyle: {
        backgroundColor: themeColors.lighterPrimary
      },
      nextLabel: I18n__default['default'].t("prixa.next"),
      onDone: function onDone() {
        return _this.handleDone();
      },
      onSkip: function onSkip() {
        return _this.handleSkip();
      },
      prevLabel: I18n__default['default'].t("prixa.previous"),
      renderItem: this.renderItem,
      showPrevButton: true,
      showSkipButton: true,
      skipLabel: I18n__default['default'].t("prixa.skip"),
      slides: introSlides
    }));
  };

  return IntroScreen;
}(React__default['default'].Component);

var styles$6 = reactNative.StyleSheet.create({
  buttonText: _extends({
    fontSize: 16
  }, fonts.bold),
  container: {
    flex: 1
  }
});
var IntroScreen$1 = reactRedux.connect(function (state) {
  return {
    introSlides: state.introSlides,
    themeColors: state.themeColors
  };
})(IntroScreen);

var VideoCallScreen = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(VideoCallScreen, _React$Component);

  function VideoCallScreen(props) {
    var _this;

    _this = _React$Component.call(this, props) || this;

    _defineProperty(_assertThisInitialized(_this), "handleAppStateChange", function (appState) {
      if (appState === "background") {
        if (_this.client) {
          _this.client.disconnect();
        }
      }
    });

    _defineProperty(_assertThisInitialized(_this), "renderContent", function () {
      var _this$state = _this.state,
          audioSent = _this$state.audioSent,
          cameraType = _this$state.cameraType,
          localVideoStreamId = _this$state.localVideoStreamId,
          remoteVideoStreamId = _this$state.remoteVideoStreamId;
      return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNativeVoximplant.Voximplant.VideoView, {
        scaleType: reactNativeVoximplant.Voximplant.RenderScaleType.SCALE_FILL,
        style: {
          flex: 1
        },
        videoStreamId: remoteVideoStreamId
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          padding: 20,
          position: "absolute",
          right: 0
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNativeVoximplant.Voximplant.VideoView, {
        style: {
          height: 150,
          width: 150
        },
        videoStreamId: localVideoStreamId
      })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          bottom: 0,
          left: 0,
          padding: 40,
          position: "absolute",
          right: 0
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          alignItems: "center",
          flexDirection: "row",
          justifyContent: "center"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          if (cameraType === reactNativeVoximplant.Voximplant.Hardware.CameraType.FRONT) {
            reactNativeVoximplant.Voximplant.Hardware.CameraManager.getInstance().switchCamera(reactNativeVoximplant.Voximplant.Hardware.CameraType.BACK);

            _this.setState({
              cameraType: reactNativeVoximplant.Voximplant.Hardware.CameraType.BACK
            });
          } else {
            reactNativeVoximplant.Voximplant.Hardware.CameraManager.getInstance().switchCamera(reactNativeVoximplant.Voximplant.Hardware.CameraType.FRONT);

            _this.setState({
              cameraType: reactNativeVoximplant.Voximplant.Hardware.CameraType.FRONT
            });
          }
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          alignItems: "center",
          backgroundColor: staticColors.white,
          borderRadius: 25,
          height: 50,
          justifyContent: "center",
          width: 50
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: cameraType === reactNativeVoximplant.Voximplant.Hardware.CameraType.FRONT ? require("../assets/icons/round_camera_rear_black_36dp.png") : require("../assets/icons/round_camera_front_black_36dp.png"),
        style: {
          height: 30,
          width: 30
        }
      }))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this.props.navigation.goBack();
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          alignItems: "center",
          backgroundColor: staticColors.thimbleberry,
          borderRadius: 37.5,
          height: 75,
          justifyContent: "center",
          margin: 25,
          width: 75
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/icons/round_call_end_white_36dp.png"),
        style: {
          height: 45,
          width: 45
        }
      }))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          if (audioSent) {
            _this.call.sendAudio(false);

            _this.setState({
              audioSent: false
            });
          } else {
            _this.call.sendAudio(true);

            _this.setState({
              audioSent: true
            });
          }
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          alignItems: "center",
          backgroundColor: staticColors.white,
          borderRadius: 25,
          height: 50,
          justifyContent: "center",
          width: 50
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: audioSent ? require("../assets/mic-on.png") : require("../assets/mic-off.png"),
        style: {
          height: 30,
          width: 30
        }
      }))))));
    });

    _defineProperty(_assertThisInitialized(_this), "renderLoading", function () {
      var doctor = _this.state.doctor;
      return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flex: 1,
          justifyContent: "space-around"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          alignItems: "center",
          alignSelf: "center",
          padding: 20
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 24
        }, fonts.regular)
      }, "Panggilan Video"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 24
        }, fonts.bold)
      }, doctor.fullName)), /*#__PURE__*/React__default['default'].createElement(PulseLoader, null)), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: staticColors.white,
          borderTopEndRadius: 40,
          borderTopStartRadius: 40,
          marginTop: -40,
          padding: 25
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this.props.navigation.goBack();
        },
        style: {
          alignItems: "center"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          alignItems: "center",
          backgroundColor: staticColors.thimbleberry,
          borderRadius: 25,
          height: 50,
          justifyContent: "center",
          width: 50
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/icons/round_call_end_white_36dp.png"),
        style: {
          height: 30,
          width: 30
        }
      })), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.cavernous,
          fontSize: 18,
          marginTop: 10
        }, fonts.regular)
      }, "Akhiri Panggilan"))));
    });

    var _this$props$navigatio = _this.props.navigation.state.params,
        _doctor = _this$props$navigatio.doctor,
        patient = _this$props$navigatio.patient,
        transaction = _this$props$navigatio.transaction;
    _this.state = {
      audioSent: true,
      cameraType: reactNativeVoximplant.Voximplant.Hardware.CameraType.FRONT,
      doctor: {
        fullName: _doctor.fullName
      },
      isLoading: true,
      localVideoStreamId: null,
      patient: {
        id: patient.id
      },
      remoteVideoStreamId: null,
      transaction: {
        id: transaction.id
      }
    };
    return _this;
  }

  var _proto = VideoCallScreen.prototype;

  _proto.componentDidMount = function componentDidMount() {
    var _this2 = this;

    reactNative.AppState.addEventListener("change", this.handleAppStateChange);
    InCallManager__default['default'].start({
      media: "video",
      ringback: "_BUNDLE_"
    });
    this.client = reactNativeVoximplant.Voximplant.getInstance();
    this.connect().then(function () {
      return _this2.login();
    });
  };

  _proto.componentWillUnmount = function componentWillUnmount() {
    reactNative.AppState.removeEventListener("change", this.handleAppStateChange);
    this.client.disconnect();
    InCallManager__default['default'].stop({
      busytone: "_BUNDLE_"
    });
  };

  _proto.connect = /*#__PURE__*/function () {
    var _connect = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              _context.next = 2;
              return this.client.connect();

            case 2:
            case "end":
              return _context.stop();
          }
        }
      }, _callee, this);
    }));

    function connect() {
      return _connect.apply(this, arguments);
    }

    return connect;
  }();

  _proto.exchangeLoginKey = /*#__PURE__*/function () {
    var _exchangeLoginKey = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(key) {
      var token, baseUrl, response, json;
      return regeneratorRuntime.wrap(function _callee2$(_context2) {
        while (1) {
          switch (_context2.prev = _context2.next) {
            case 0:
              token = this.props.token;
              baseUrl = getBaseUrl();
              _context2.next = 4;
              return fetch(baseUrl + "call/start", {
                body: JSON.stringify({
                  login_key: key
                }),
                headers: {
                  Authorization: "Bearer " + token,
                  "Content-Type": "application/json"
                },
                method: "POST"
              });

            case 4:
              response = _context2.sent;
              _context2.next = 7;
              return response.json();

            case 7:
              json = _context2.sent;
              return _context2.abrupt("return", {
                doctor: {
                  alias: json["data"]["doctor"]["alias"]
                },
                token: json["data"]["token"]
              });

            case 9:
            case "end":
              return _context2.stop();
          }
        }
      }, _callee2, this);
    }));

    function exchangeLoginKey(_x) {
      return _exchangeLoginKey.apply(this, arguments);
    }

    return exchangeLoginKey;
  }();

  _proto.login = /*#__PURE__*/function () {
    var _login = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
      var _this3 = this;

      var _this$state2, patient, transaction, accountName, appName, domain, alias, _yield$this$exchangeL, doctor, token;

      return regeneratorRuntime.wrap(function _callee3$(_context3) {
        while (1) {
          switch (_context3.prev = _context3.next) {
            case 0:
              _this$state2 = this.state, patient = _this$state2.patient, transaction = _this$state2.transaction;
              accountName = getVoximplantAccountName();
              appName = getVoximplantAppName();
              domain = appName + "." + accountName + ".voximplant.com";
              alias = "patient-" + patient.id;
              _context3.prev = 5;
              _context3.next = 8;
              return this.client.requestOneTimeLoginKey(alias + "@" + domain);

            case 8:
              _context3.next = 27;
              break;

            case 10:
              _context3.prev = 10;
              _context3.t0 = _context3["catch"](5);

              if (!(_context3.t0.code === 302)) {
                _context3.next = 27;
                break;
              }

              _context3.next = 15;
              return this.exchangeLoginKey(_context3.t0.key);

            case 15:
              _yield$this$exchangeL = _context3.sent;
              doctor = _yield$this$exchangeL.doctor;
              token = _yield$this$exchangeL.token;
              _context3.next = 20;
              return this.client.loginWithOneTimeKey(alias + "@" + domain, token);

            case 20:
              _context3.next = 22;
              return this.client.call(doctor.alias + "@" + domain, {
                customData: JSON.stringify({
                  transaction_id: transaction.id
                }),
                video: {
                  receiveVideo: true,
                  sendVideo: true
                }
              });

            case 22:
              this.call = _context3.sent;
              this.call.on(reactNativeVoximplant.Voximplant.CallEvents.Disconnected, function () {
                return _this3.props.navigation.goBack();
              });
              this.call.on(reactNativeVoximplant.Voximplant.CallEvents.EndpointAdded, function (event) {
                event.endpoint.on(reactNativeVoximplant.Voximplant.EndpointEvents.RemoteVideoStreamAdded, function (event) {
                  InCallManager__default['default'].stopRingback();
                  reactNativeVoximplant.Voximplant.Hardware.AudioDeviceManager.getInstance().selectAudioDevice(reactNativeVoximplant.Voximplant.Hardware.AudioDevice.SPEAKER);

                  _this3.setState({
                    isLoading: false,
                    remoteVideoStreamId: event.videoStream.id
                  });
                });
              });
              this.call.on(reactNativeVoximplant.Voximplant.CallEvents.Failed, function (e) {
                if (e.code === 603) {
                  reactNative.Alert.alert("Whoops", "Mohon maaf untuk sementara dokter tidak dapat menerima panggilan karena trafik yang tinggi.");
                }

                _this3.props.navigation.goBack();
              });
              this.call.on(reactNativeVoximplant.Voximplant.CallEvents.LocalVideoStreamAdded, function (event) {
                return _this3.setState({
                  localVideoStreamId: event.videoStream.id
                });
              });

            case 27:
            case "end":
              return _context3.stop();
          }
        }
      }, _callee3, this, [[5, 10]]);
    }));

    function login() {
      return _login.apply(this, arguments);
    }

    return login;
  }();

  _proto.render = function render() {
    var themeColors = this.props.themeColors;
    var isLoading = this.state.isLoading;
    var container;

    if (isLoading) {
      container = this.renderLoading();
    } else {
      container = this.renderContent();
    }

    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: themeColors.primary,
        flex: 1
      }
    }, container);
  };

  return VideoCallScreen;
}(React__default['default'].Component);

var VideoCallScreen$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors,
    token: state.token
  };
})(VideoCallScreen);

var AudioCallScreen = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(AudioCallScreen, _React$Component);

  function AudioCallScreen(props) {
    var _this;

    _this = _React$Component.call(this, props) || this;

    _defineProperty(_assertThisInitialized(_this), "handleAppStateChange", function (appState) {
      if (appState === "background") {
        if (_this.client) {
          _this.client.disconnect();
        }
      }
    });

    _defineProperty(_assertThisInitialized(_this), "renderContent", function () {
      var doctor = _this.state.doctor;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: {
          uri: doctor.avatarUrl
        },
        style: {
          flex: 1
        }
      });
    });

    _defineProperty(_assertThisInitialized(_this), "renderLoading", function () {
      return /*#__PURE__*/React__default['default'].createElement(PulseLoader, null);
    });

    var _this$props$navigatio = _this.props.navigation.state.params,
        _doctor = _this$props$navigatio.doctor,
        patient = _this$props$navigatio.patient,
        transaction = _this$props$navigatio.transaction;
    _this.state = {
      doctor: {
        avatarUrl: null,
        fullName: _doctor.fullName
      },
      isLoading: true,
      patient: {
        id: patient.id
      },
      transaction: {
        id: transaction.id
      }
    };
    return _this;
  }

  var _proto = AudioCallScreen.prototype;

  _proto.componentDidMount = function componentDidMount() {
    var _this2 = this;

    reactNative.AppState.addEventListener("change", this.handleAppStateChange);
    InCallManager__default['default'].start({
      media: "audio",
      ringback: "_BUNDLE_"
    });
    this.client = reactNativeVoximplant.Voximplant.getInstance();
    this.connect().then(function () {
      return _this2.login();
    });
  };

  _proto.componentWillUnmount = function componentWillUnmount() {
    reactNative.AppState.removeEventListener("change", this.handleAppStateChange);
    this.client.disconnect();
    InCallManager__default['default'].stop({
      busytone: "_BUNDLE_"
    });
  };

  _proto.connect = /*#__PURE__*/function () {
    var _connect = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              _context.next = 2;
              return this.client.connect();

            case 2:
            case "end":
              return _context.stop();
          }
        }
      }, _callee, this);
    }));

    function connect() {
      return _connect.apply(this, arguments);
    }

    return connect;
  }();

  _proto.exchangeLoginKey = /*#__PURE__*/function () {
    var _exchangeLoginKey = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(key) {
      var token, baseUrl, response, json;
      return regeneratorRuntime.wrap(function _callee2$(_context2) {
        while (1) {
          switch (_context2.prev = _context2.next) {
            case 0:
              token = this.props.token;
              baseUrl = getBaseUrl();
              _context2.next = 4;
              return fetch(baseUrl + "call/start", {
                body: JSON.stringify({
                  login_key: key
                }),
                headers: {
                  Authorization: "Bearer " + token,
                  "Content-Type": "application/json"
                },
                method: "POST"
              });

            case 4:
              response = _context2.sent;
              _context2.next = 7;
              return response.json();

            case 7:
              json = _context2.sent;
              return _context2.abrupt("return", {
                doctor: {
                  alias: json["data"]["doctor"]["alias"],
                  avatarUrl: json["data"]["doctor"]["avatar_url"]
                },
                token: json["data"]["token"]
              });

            case 9:
            case "end":
              return _context2.stop();
          }
        }
      }, _callee2, this);
    }));

    function exchangeLoginKey(_x) {
      return _exchangeLoginKey.apply(this, arguments);
    }

    return exchangeLoginKey;
  }();

  _proto.login = /*#__PURE__*/function () {
    var _login = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
      var _this3 = this;

      var _this$state, oldDoctor, patient, transaction, accountName, appName, domain, alias, _yield$this$exchangeL, newDoctor, token, call;

      return regeneratorRuntime.wrap(function _callee3$(_context3) {
        while (1) {
          switch (_context3.prev = _context3.next) {
            case 0:
              _this$state = this.state, oldDoctor = _this$state.doctor, patient = _this$state.patient, transaction = _this$state.transaction;
              accountName = getVoximplantAccountName();
              appName = getVoximplantAppName();
              domain = appName + "." + accountName + ".voximplant.com";
              alias = "patient-" + patient.id;
              _context3.prev = 5;
              _context3.next = 8;
              return this.client.requestOneTimeLoginKey(alias + "@" + domain);

            case 8:
              _context3.next = 26;
              break;

            case 10:
              _context3.prev = 10;
              _context3.t0 = _context3["catch"](5);

              if (!(_context3.t0.code === 302)) {
                _context3.next = 26;
                break;
              }

              _context3.next = 15;
              return this.exchangeLoginKey(_context3.t0.key);

            case 15:
              _yield$this$exchangeL = _context3.sent;
              newDoctor = _yield$this$exchangeL.doctor;
              token = _yield$this$exchangeL.token;
              _context3.next = 20;
              return this.client.loginWithOneTimeKey(alias + "@" + domain, token);

            case 20:
              _context3.next = 22;
              return this.client.call(newDoctor.alias + "@" + domain, {
                customData: JSON.stringify({
                  transaction_id: transaction.id
                })
              });

            case 22:
              call = _context3.sent;
              call.on(reactNativeVoximplant.Voximplant.CallEvents.Connected, function () {
                InCallManager__default['default'].stopRingback();

                _this3.setState({
                  doctor: {
                    avatarUrl: newDoctor.avatarUrl,
                    fullName: oldDoctor.fullName
                  },
                  isLoading: false
                });
              });
              call.on(reactNativeVoximplant.Voximplant.CallEvents.Disconnected, function () {
                return _this3.props.navigation.goBack();
              });
              call.on(reactNativeVoximplant.Voximplant.CallEvents.Failed, function (e) {
                if (e.code === 603) {
                  reactNative.Alert.alert("Whoops", "Mohon maaf untuk sementara dokter tidak dapat menerima panggilan karena trafik yang tinggi.");
                }

                _this3.props.navigation.goBack();
              });

            case 26:
            case "end":
              return _context3.stop();
          }
        }
      }, _callee3, this, [[5, 10]]);
    }));

    function login() {
      return _login.apply(this, arguments);
    }

    return login;
  }();

  _proto.render = function render() {
    var _this4 = this;

    var themeColors = this.props.themeColors;
    var _this$state2 = this.state,
        doctor = _this$state2.doctor,
        isLoading = _this$state2.isLoading;
    var container;

    if (isLoading) {
      container = this.renderLoading();
    } else {
      container = this.renderContent();
    }

    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: themeColors.primary,
        flex: 1
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        flex: 1,
        justifyContent: "space-around"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        alignItems: "center",
        alignSelf: "center",
        padding: 20
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.white,
        fontSize: 24
      }, fonts.regular)
    }, "Panggilan Suara"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.white,
        fontSize: 24
      }, fonts.bold)
    }, doctor.fullName)), container), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: staticColors.white,
        borderTopEndRadius: 40,
        borderTopStartRadius: 40,
        marginTop: -40,
        padding: 25
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return _this4.props.navigation.goBack();
      },
      style: {
        alignItems: "center"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        alignItems: "center",
        backgroundColor: staticColors.thimbleberry,
        borderRadius: 25,
        height: 50,
        justifyContent: "center",
        width: 50
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/icons/round_call_end_white_36dp.png"),
      style: {
        height: 30,
        width: 30
      }
    })), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.cavernous,
        fontSize: 18,
        marginTop: 10
      }, fonts.regular)
    }, "Akhiri Panggilan"))));
  };

  return AudioCallScreen;
}(React__default['default'].Component);

var AudioCallScreen$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors,
    token: state.token
  };
})(AudioCallScreen);

var PreAssessmentScreen = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(PreAssessmentScreen, _React$Component);

  function PreAssessmentScreen() {
    var _this;

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;

    _defineProperty(_assertThisInitialized(_this), "handleBackPress", function () {
      return true;
    });

    return _this;
  }

  var _proto = PreAssessmentScreen.prototype;

  _proto.componentDidMount = function componentDidMount() {
    this.backHandler = reactNative.BackHandler.addEventListener("hardwareBackPress", this.handleBackPress);
  };

  _proto.componentWillUnmount = function componentWillUnmount() {
    this.backHandler.remove();
  };

  _proto.submit = /*#__PURE__*/function () {
    var _submit = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(result) {
      var token;
      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              token = this.props.token;
              _context.next = 3;
              return fetch(getBaseUrl() + "consultations/pre-assessment", {
                headers: {
                  Authorization: "Bearer " + token,
                  "Content-Type": "application/json"
                },
                method: "POST",
                body: JSON.stringify({
                  result: result
                })
              });

            case 3:
              this.props.navigation.goBack();

            case 4:
            case "end":
              return _context.stop();
          }
        }
      }, _callee, this);
    }));

    function submit(_x) {
      return _submit.apply(this, arguments);
    }

    return submit;
  }();

  _proto.render = function render() {
    var _this2 = this;

    var themeColors = this.props.themeColors;
    var doctor = this.props.navigation.state.params.doctor;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: themeColors.primary,
        flex: 1
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        alignItems: "center",
        flexGrow: 1,
        justifyContent: "center"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: {
        uri: doctor.avatarUrl
      },
      style: {
        borderColor: "rgba(255, 255, 255, 0.5)",
        borderRadius: 110,
        borderWidth: 10,
        height: 220,
        marginBottom: 40,
        width: 220
      }
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.white,
        fontSize: 16
      }, fonts.regular)
    }, "Konsultasi Anda akan terhubung dengan"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.white,
        fontSize: 24
      }, fonts.bold)
    }, doctor.fullName)), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: staticColors.white,
        borderTopEndRadius: 40,
        borderTopStartRadius: 40,
        padding: 25
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.cavernous,
        fontSize: 24,
        marginBottom: 15,
        textAlign: "center"
      }, fonts.bold)
    }, "Survey Singkat"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.grey,
        fontSize: 16,
        marginBottom: 30,
        textAlign: "center"
      }, fonts.regular)
    }, "Sebelum memulai konsultasi, apakah Anda sebelumnya sudah ada rencana untuk datang ke rumah sakit/klinik untuk rawat jalan?"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        flexDirection: "row",
        justifyContent: "space-around"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return _this2.submit(false);
      },
      style: {
        backgroundColor: staticColors.thimbleberry,
        borderRadius: 20,
        paddingHorizontal: 30,
        paddingVertical: 10
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.white,
        fontSize: 16
      }, fonts.bold)
    }, "Tidak")), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return _this2.submit(true);
      },
      style: {
        backgroundColor: staticColors.forestFern,
        borderRadius: 20,
        paddingHorizontal: 30,
        paddingVertical: 10
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.white,
        fontSize: 16
      }, fonts.bold)
    }, "Ya")))));
  };

  return PreAssessmentScreen;
}(React__default['default'].Component);

var PreAssessmentScreen$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors,
    token: state.token
  };
})(PreAssessmentScreen);

var PostAssessmentScreen = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(PostAssessmentScreen, _React$Component);

  function PostAssessmentScreen() {
    var _this;

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;

    _defineProperty(_assertThisInitialized(_this), "handleBackPress", function () {
      return true;
    });

    return _this;
  }

  var _proto = PostAssessmentScreen.prototype;

  _proto.componentDidMount = function componentDidMount() {
    this.backHandler = reactNative.BackHandler.addEventListener("hardwareBackPress", this.handleBackPress);
  };

  _proto.componentWillUnmount = function componentWillUnmount() {
    this.backHandler.remove();
  };

  _proto.submit = /*#__PURE__*/function () {
    var _submit = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(result) {
      var token;
      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              token = this.props.token;
              _context.next = 3;
              return fetch(getBaseUrl() + "consultations/post-assessment", {
                headers: {
                  Authorization: "Bearer " + token,
                  "Content-Type": "application/json"
                },
                method: "POST",
                body: JSON.stringify({
                  result: result
                })
              });

            case 3:
              this.props.navigation.goBack();

            case 4:
            case "end":
              return _context.stop();
          }
        }
      }, _callee, this);
    }));

    function submit(_x) {
      return _submit.apply(this, arguments);
    }

    return submit;
  }();

  _proto.render = function render() {
    var _this2 = this;

    var themeColors = this.props.themeColors;
    var transaction = this.props.navigation.state.params.transaction;
    var time = moment__default['default'](transaction.startedAt).format("DD MMMM YYYY [pukul] H:m ");
    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: themeColors.primary,
        flex: 1
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.ScrollView, {
      style: {
        flexGrow: 1
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.white,
        fontSize: 24,
        padding: 20,
        textAlign: "center"
      }, fonts.bold)
    }, transaction.doctor.fullName), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: staticColors.white
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: {
        uri: transaction.doctor.avatarUrl
      },
      style: {
        alignSelf: "center",
        borderColor: "rgba(255, 255, 255, 0.5)",
        borderRadius: 90,
        borderWidth: 10,
        height: 180,
        marginVertical: 20,
        width: 180
      }
    }))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        padding: 20
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.white,
        fontSize: 16
      }, fonts.bold)
    }, "Summary Konsultasi"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.white,
        fontSize: 16
      }, fonts.regular)
    }, transaction.summary))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: staticColors.white,
        borderTopEndRadius: 40,
        borderTopStartRadius: 40,
        padding: 25
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.cavernous,
        fontSize: 24,
        marginBottom: 15,
        textAlign: "center"
      }, fonts.bold)
    }, "Survey Singkat"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.grey,
        fontSize: 16,
        marginBottom: 30,
        textAlign: "center"
      }, fonts.regular)
    }, "Setelah konsultasi dengan ", transaction.doctor.fullName, " pada ", time, "apakah Anda jadi rawat jalan ke rumah sakit/klinik?"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        flexDirection: "row",
        justifyContent: "space-around"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return _this2.submit(false);
      },
      style: {
        backgroundColor: staticColors.thimbleberry,
        borderRadius: 20,
        paddingHorizontal: 30,
        paddingVertical: 10
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.white,
        fontSize: 16
      }, fonts.bold)
    }, "Tidak")), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return _this2.submit(true);
      },
      style: {
        backgroundColor: staticColors.forestFern,
        borderRadius: 20,
        paddingHorizontal: 30,
        paddingVertical: 10
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        color: staticColors.white,
        fontSize: 16
      }, fonts.bold)
    }, "Ya")))));
  };

  return PostAssessmentScreen;
}(React__default['default'].Component);

var PostAssessmentScreen$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors,
    token: state.token
  };
})(PostAssessmentScreen);

var PrescriptionHistoryDetail = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(PrescriptionHistoryDetail, _React$Component);

  function PrescriptionHistoryDetail() {
    var _this;

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;

    _defineProperty(_assertThisInitialized(_this), "state", {
      isLoading: true
    });

    _defineProperty(_assertThisInitialized(_this), "goToHistoryDetail", function (data) {
      var navigation = _this.props.navigation;
      var _navigation$state$par = navigation.state.params,
          cardNumber = _navigation$state$par.cardNumber,
          fullName = _navigation$state$par.fullName,
          gender = _navigation$state$par.gender;
      navigation.navigate("PrescriptionHistoryDetail", {
        data: data,
        cardNumber: cardNumber,
        fullName: fullName,
        gender: gender
      });
    });

    _defineProperty(_assertThisInitialized(_this), "goToPrescriptionDetail", function (data) {
      var navigation = _this.props.navigation;
      var _navigation$state$par2 = navigation.state.params,
          cardNumber = _navigation$state$par2.cardNumber,
          fullName = _navigation$state$par2.fullName,
          gender = _navigation$state$par2.gender,
          config = _navigation$state$par2.config;
      navigation.navigate("PrescriptionDetail", {
        prescriptionId: data.id,
        customerName: fullName,
        patientName: data.patientName,
        cardNumber: cardNumber,
        gender: gender,
        pharmacy: config.pharmacy
      });
    });

    return _this;
  }

  var _proto = PrescriptionHistoryDetail.prototype;

  _proto.componentDidMount = function componentDidMount() {
    var _this2 = this;

    this.props.navigation.addListener("willFocus", function () {
      console.info("willFocus");

      _this2.setState({
        isLoading: true
      });
    });
    this.props.navigation.addListener("didFocus", function () {
      console.info("didFocus");

      _this2.setState({
        isLoading: false
      });
    });
    this.props.navigation.addListener("willBlur", function () {
      return console.info("willBlur");
    });
    this.props.navigation.addListener("didBlur", function () {
      console.info("didBlur");

      _this2.setState({
        isLoading: false
      });
    });
  };

  _proto.render = function render() {
    var _this3 = this;

    var _this$props = this.props,
        data = _this$props.data,
        themeColors = _this$props.themeColors,
        navigation = _this$props.navigation;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$5.container
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$5.detailContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$5.regularBold
    }, data.patientName), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$5.section, {
        marginTop: 5,
        color: staticColors.grey
      }]
    }, I18n__default['default'].t("prixa.lifepackSubscriptionIdWithNumber", {
      no: data.lifepackSubscriptionId
    })), !!data.status ? navigation.state.params.config.pharmacy.pharmacy_name === "Siloam" ? /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$5.regular, _extends({
        marginTop: 5,
        color: themeColors.primary
      }, fonts.bold, {
        textTransform: "capitalize"
      })]
    }, I18n__default['default'].t("prixa.defaultStatusDelivery")) : /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$5.regular, _extends({
        marginTop: 5,
        color: themeColors.primary
      }, fonts.bold, {
        textTransform: "capitalize"
      })]
    }, I18n__default['default'].t("prixa.prescriptionStatusDelivery", {
      status: data.status
    })) : null)), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$5.buttonContainer
    }, navigation.state.params.config.is_pharmacy_enabled == true && !!data.status ? /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return _this3.goToHistoryDetail(data);
      },
      style: {
        marginTop: 20
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        borderRadius: 20,
        backgroundColor: staticColors.forestFern
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        fontSize: 11
      }, fonts.bold, {
        color: "#fff",
        width: 110,
        textAlign: "center",
        paddingVertical: 9,
        textTransform: "uppercase"
      })
    }, I18n__default['default'].t("prixa.prescriptionView")))) : null, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return _this3.goToPrescriptionDetail(data);
      },
      style: {
        marginTop: 20,
        marginLeft: 10
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        borderRadius: 20,
        borderColor: staticColors.forestFern,
        borderWidth: 2
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        fontSize: 11
      }, fonts.bold, {
        color: staticColors.forestFern,
        width: 120,
        textAlign: "center",
        paddingVertical: 7,
        textTransform: "uppercase"
      })
    }, !!data.status ? I18n__default['default'].t("prixa.prescriptionDetail") : I18n__default['default'].t("prixa.prescriptionRedeem"))))));
  };

  return PrescriptionHistoryDetail;
}(React__default['default'].Component);

_defineProperty(PrescriptionHistoryDetail, "propTypes", {
  data: PropTypes__default['default'].shape({
    id: PropTypes__default['default'].string.isRequired,
    prescriptionNo: PropTypes__default['default'].string,
    lifepackSubscriptionId: PropTypes__default['default'].string,
    patientName: PropTypes__default['default'].string.isRequired,
    patientClass: PropTypes__default['default'].string,
    status: PropTypes__default['default'].string,
    prescriptionDate: PropTypes__default['default'].string,
    lifepack: PropTypes__default['default'].object
  }),
  navigation: PropTypes__default['default'].object.isRequired
});

var styles$5 = reactNative.StyleSheet.create({
  container: {
    flexDirection: "row"
  },
  buttonContainer: {
    marginTop: 10,
    justifyContent: "flex-end",
    flexDirection: "row",
    flex: 1,
    paddingLeft: 40
  },
  detailContainer: {
    flex: 1,
    paddingRight: 8
  },
  section: _extends({
    fontSize: 12
  }, fonts.regular),
  regular: _extends({
    fontSize: 13
  }, fonts.regular),
  regularBold: _extends({
    fontSize: 13
  }, fonts.bold, {
    color: "#000"
  })
});
var PrescriptionHistoryDetail$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(PrescriptionHistoryDetail);

var PrescriptionHistoryItem = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(PrescriptionHistoryItem, _React$Component);

  function PrescriptionHistoryItem() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = PrescriptionHistoryItem.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        createdAt = _this$props.createdAt,
        prescription = _this$props.prescription,
        themeColors = _this$props.themeColors,
        navigation = _this$props.navigation;
    return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        marginBottom: 10
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$4.section, _extends({
        color: themeColors.primary
      }, fonts.bold)]
    }, I18n__default['default'].t("prixa.prescriptionOn", {
      date: I18n__default['default'].l("date.prixa.default", createdAt),
      time: I18n__default['default'].l("time.prixa.default", createdAt)
    }))), /*#__PURE__*/React__default['default'].createElement(PrescriptionHistoryDetail$1, {
      navigation: navigation,
      data: prescription
    }));
  };

  return PrescriptionHistoryItem;
}(React__default['default'].Component);

_defineProperty(PrescriptionHistoryItem, "propTypes", {
  createdAt: PropTypes__default['default'].instanceOf(Date).isRequired,
  prescription: PropTypes__default['default'].shape({
    id: PropTypes__default['default'].string.isRequired,
    prescriptionNo: PropTypes__default['default'].string,
    lifepackSubscriptionId: PropTypes__default['default'].string,
    patientName: PropTypes__default['default'].string.isRequired,
    patientClass: PropTypes__default['default'].string,
    status: PropTypes__default['default'].string,
    prescriptionDate: PropTypes__default['default'].string,
    lifepack: PropTypes__default['default'].object
  }).isRequired,
  navigation: PropTypes__default['default'].object.isRequired
});

var styles$4 = reactNative.StyleSheet.create({
  createdAt: _extends({
    fontSize: 14,
    marginBottom: 8
  }, fonts.regular),
  summary: _extends({
    color: staticColors.grey,
    fontSize: 10,
    marginTop: 5,
    textAlign: "justify"
  }, fonts.regular),
  section: _extends({
    fontSize: 16
  }, fonts.regular)
});
var PrescriptionHistoryItem$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(PrescriptionHistoryItem);

var PrescriptionHistoryScreen = /*#__PURE__*/function (_Component) {
  _inheritsLoose(PrescriptionHistoryScreen, _Component);

  function PrescriptionHistoryScreen(props) {
    var _this;

    _this = _Component.call(this, props) || this;
    _this.state = {
      isLoading: false,
      refreshing: false,
      historyData: []
    };
    return _this;
  }

  var _proto = PrescriptionHistoryScreen.prototype;

  _proto.fetchPrescriptionHistory = /*#__PURE__*/function () {
    var _fetchPrescriptionHistory = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(isInitializing) {
      var patientId, _yield$API$get, prescriptionHistories, historyData;

      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              if (!isInitializing) {
                this.setState({
                  refreshing: true
                });
              }

              _context.prev = 1;
              patientId = this.props.navigation.state.params.patientId;
              _context.next = 5;
              return API.get(APP_BASE_URL + "/v2/profile/" + patientId + "/prescriptions");

            case 5:
              _yield$API$get = _context.sent;
              prescriptionHistories = _yield$API$get.data.data;
              historyData = prescriptionHistories.map(function (val) {
                var _val$lifepack_subscri;

                return {
                  type: "section",
                  date: moment__default['default'](val.created_at).toDate(),
                  icon: require("../assets/round_access_time_white_18dp.png"),
                  prescription: {
                    id: val.id,
                    prescriptionNo: val.prescription_number,
                    lifepackSubscriptionId: (_val$lifepack_subscri = val == null ? void 0 : val.lifepack_subscription_id) != null ? _val$lifepack_subscri : "-",
                    patientName: val.transaction_dependency ? val.transaction_dependency.first_name + " " + val.transaction_dependency.last_name : val.patient.patient_f_name + " " + val.patient.patient_l_name,
                    patientClass: val.patient.patient_class,
                    status: val.order_status,
                    prescriptionDate: moment__default['default'](val.created_at).format("DD MMMM YYYY"),
                    redeemDate: (val == null ? void 0 : val.claim_at) ? moment__default['default'](val.claim_at).format("DD MMMM YYYY") : "-",
                    lifepack: {
                      lifepackClaimId: val.lifepack_claim_id,
                      lifepackClaimUrl: val.lifepack_claim_url,
                      lifepackInvoiceUrl: val.lifepack_invoice_url,
                      lifepackSubmitRequest: val.lifepack_submit_request,
                      lifepackSubmitResponse: val.lifepack_submit_response,
                      lifepackSubscriptionId: val.lifepack_subscription_id
                    }
                  },
                  createdAt: moment__default['default'](val.created_at).toDate()
                };
              });
              console.log({
                prescriptionHistories: prescriptionHistories
              });
              this.setState({
                historyData: historyData,
                refreshing: false
              });
              _context.next = 15;
              break;

            case 12:
              _context.prev = 12;
              _context.t0 = _context["catch"](1);
              console.log((_context.t0 == null ? void 0 : _context.t0.response) || _context.t0);

            case 15:
            case "end":
              return _context.stop();
          }
        }
      }, _callee, this, [[1, 12]]);
    }));

    function fetchPrescriptionHistory(_x) {
      return _fetchPrescriptionHistory.apply(this, arguments);
    }

    return fetchPrescriptionHistory;
  }();

  _proto.componentDidMount = /*#__PURE__*/function () {
    var _componentDidMount = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
      return regeneratorRuntime.wrap(function _callee2$(_context2) {
        while (1) {
          switch (_context2.prev = _context2.next) {
            case 0:
              this.setState({
                isLoading: true
              });
              _context2.next = 3;
              return this.fetchPrescriptionHistory(true);

            case 3:
              this.setState({
                isLoading: false
              });

            case 4:
            case "end":
              return _context2.stop();
          }
        }
      }, _callee2, this);
    }));

    function componentDidMount() {
      return _componentDidMount.apply(this, arguments);
    }

    return componentDidMount;
  }();

  _proto.render = function render() {
    var _this2 = this;

    return /*#__PURE__*/React__default['default'].createElement(ParallaxScrollView__default['default'], {
      ref: function ref(_ref2) {
        _this2.scrollRef = _ref2;
      },
      backgroundColor: this.props.themeColors.primary,
      parallaxHeaderHeight: 200,
      refreshControl: /*#__PURE__*/React__default['default'].createElement(reactNative.RefreshControl, {
        refreshing: this.state.refreshing,
        onRefresh: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
          return regeneratorRuntime.wrap(function _callee3$(_context3) {
            while (1) {
              switch (_context3.prev = _context3.next) {
                case 0:
                  _context3.next = 2;
                  return _this2.fetchPrescriptionHistory();

                case 2:
                  return _context3.abrupt("return", _context3.sent);

                case 3:
                case "end":
                  return _context3.stop();
              }
            }
          }, _callee3);
        }))
      }),
      renderForeground: function renderForeground() {
        return /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(Header, {
          onPress: function onPress() {
            _this2.props.navigation.goBack();
          },
          position: "start",
          text: "Kembali",
          theme: "light"
        }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            flexDirection: "row",
            alignItems: "center",
            padding: 20
          }
        }, /*#__PURE__*/React__default['default'].createElement(PatientAvatarWithDetail, {
          cardNumber: _this2.props.navigation.state.params.cardNumber,
          fullName: _this2.props.navigation.state.params.fullName,
          gender: _this2.props.navigation.state.params.gender
        }), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
          style: {
            marginStart: 20
          },
          onPress: function onPress() {
            return _this2.scrollRef.scrollTo({
              x: 0,
              y: 500
            });
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
          source: require("../assets/baseline_keyboard_arrow_up_white_18dp.png")
        }))));
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: this.props.themeColors.primary
      }
    }, this.state.isLoading ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: "#FFF",
        borderTopEndRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
        borderTopStartRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
        paddingTop: 64
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        flex: 1,
        justifyContent: "center"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
      size: "large",
      color: this.props.themeColors.primary
    }))) : /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: "#FFF",
        borderTopEndRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
        borderTopStartRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
        paddingTop: 16
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        width: 64,
        height: 6,
        borderRadius: 3,
        marginBottom: 15,
        opacity: 0.5,
        backgroundColor: "#808080",
        alignSelf: "center"
      }
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        fontSize: 20
      }, fonts.bold, {
        color: this.props.themeColors.darkestPrimary,
        alignSelf: "center",
        marginBottom: 30
      })
    }, "Riwayat Resep"), /*#__PURE__*/React__default['default'].createElement(Timeline__default['default'], {
      innerCircle: "icon",
      circleColor: this.props.themeColors.lighterPrimary,
      lineColor: this.props.themeColors.primary,
      data: this.state.historyData,
      detailContainerStyle: {
        marginTop: -13,
        marginBottom: 13
      },
      listViewContainerStyle: {
        marginLeft: 12,
        marginRight: 32
      },
      renderDetail: function renderDetail(rowData) {
        return /*#__PURE__*/React__default['default'].createElement(PrescriptionHistoryItem$1, {
          createdAt: rowData.createdAt,
          prescription: rowData.prescription,
          navigation: _this2.props.navigation
        });
      },
      showTime: false
    }))));
  };

  return PrescriptionHistoryScreen;
}(React.Component);

var PrescriptionHistoryScreen$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(PrescriptionHistoryScreen);

var currencyFormatter = function currencyFormatter(value) {
  return currency__default['default'](value, {
    symbol: "Rp ",
    separator: ".",
    decimal: ",",
    precision: 0
  }).format();
};

var PrescriptionHistoryItemDetail = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(PrescriptionHistoryItemDetail, _React$Component);

  function PrescriptionHistoryItemDetail(props) {
    var _this;

    _this = _React$Component.call(this, props) || this;
    _this.state = {
      products: [],
      totalPayment: 0,
      payments: {
        subtotal_price: 0,
        discount: 0,
        total_price: 0,
        delivery_price: 0
      },
      invoiceUrl: "",
      prescriptionUrl: "",
      claimId: ""
    };
    return _this;
  }

  var _proto = PrescriptionHistoryItemDetail.prototype;

  _proto.calculateProducts = function calculateProducts() {
    var detail = this.props.detail;
    var products = [];
    var payments = {
      subtotal_price: 0,
      discount: 0,
      total_price: 0,
      delivery_price: 0
    };
    var totalPayment = 0;

    if (!detail.prescription_order_histories) {
      return;
    }

    if (detail.prescription_order_histories.length === 0) {
      return;
    } // filter first history for products


    var history = detail.prescription_order_histories[0];
    var history_product = detail.prescription_order_histories.product;

    if (history_product) {
      history.product.map(function (product) {
        products.push(product);
        totalPayment += product.price || 0;
      });
    } // filter histories that has payments


    var paymentHistories = detail.prescription_order_histories.filter(function (order) {
      return !!order.payment;
    });

    if (paymentHistories.length > 0) {
      var _paymentHistory$payme, _paymentHistory$payme2, _paymentHistory$payme3, _paymentHistory$payme4;

      var paymentHistory = paymentHistories[0];
      payments.subtotal_price = (paymentHistory == null ? void 0 : (_paymentHistory$payme = paymentHistory.payment) == null ? void 0 : _paymentHistory$payme.subtotal_price) || 0;
      payments.discount = (paymentHistory == null ? void 0 : (_paymentHistory$payme2 = paymentHistory.payment) == null ? void 0 : _paymentHistory$payme2.discount) || 0;
      payments.total_price = (paymentHistory == null ? void 0 : (_paymentHistory$payme3 = paymentHistory.payment) == null ? void 0 : _paymentHistory$payme3.total_price) || 0;
      payments.delivery_price = (paymentHistory == null ? void 0 : (_paymentHistory$payme4 = paymentHistory.payment) == null ? void 0 : _paymentHistory$payme4.delivery_price) || 0;
    } // filter histories that have claim ID


    var claimHistories = detail.prescription_order_histories.filter(function (order) {
      return !!order.claim_id;
    });

    if (claimHistories.length > 0) {
      var claimHistory = claimHistories[0];
      this.setState({
        claimId: claimHistory.claim_id
      });
    } // filter histories that have invoice URL


    var invoiceHistories = detail.prescription_order_histories.filter(function (order) {
      return !!order.invoice_url;
    });

    if (invoiceHistories.length > 0) {
      var invoiceHistory = invoiceHistories[0];
      this.setState({
        invoiceUrl: invoiceHistory.invoice_url
      });
    } //filter histories that have prescription URL


    var prescriptionHistories = detail.prescription_order_histories.filter(function (order) {
      return !!order.prescription_image;
    });

    if (prescriptionHistories.length > 0) {
      var prescriptionHistory = prescriptionHistories[0];
      this.setState({
        prescriptionUrl: prescriptionHistory.prescription_image
      });
    } // set up address delivery


    if (prescriptionHistories.length > 0) {
      var _prescriptionHistory = prescriptionHistories[0];

      if (_prescriptionHistory.patient.address != null) {
        var _prescriptionHistory$, _prescriptionHistory$2, _prescriptionHistory$3, _prescriptionHistory$4;

        var deliveryAddress = (_prescriptionHistory$ = (_prescriptionHistory$2 = _prescriptionHistory.patient.address) == null ? void 0 : _prescriptionHistory$2.second_line) != null ? _prescriptionHistory$ : "";
        var deliveryPostalCode = (_prescriptionHistory$3 = (_prescriptionHistory$4 = _prescriptionHistory.patient.address) == null ? void 0 : _prescriptionHistory$4.postal_code) != null ? _prescriptionHistory$3 : "";
        var newAddressDelivery = deliveryAddress != null ? deliveryAddress + " " + deliveryPostalCode : "-";
        this.setState({
          address: newAddressDelivery
        });
      }
    }

    this.setState({
      products: products,
      totalPayment: totalPayment,
      payments: payments
    });
  };

  _proto.componentDidMount = function componentDidMount() {
    this.calculateProducts();
  };

  _proto.render = function render() {
    var _this2 = this;

    var _this$props = this.props,
        data = _this$props.data,
        themeColors = _this$props.themeColors,
        navigation = _this$props.navigation,
        detail = _this$props.detail;
    var _this$state = this.state,
        payments = _this$state.payments;
        _this$state.totalPayment;
        var invoiceUrl = _this$state.invoiceUrl,
        prescriptionUrl = _this$state.prescriptionUrl,
        claimId = _this$state.claimId,
        address = _this$state.address;
    return /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        marginLeft: 20,
        marginRight: 20
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.container
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.detailContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$3.section, fonts.bold, {
        color: themeColors.primary
      }]
    }, I18n__default['default'].t("prixa.orderInfo"))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.statusContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      disabled: !claimId || data.patientClass.toLowerCase() !== "group",
      onPress: function onPress() {
        var onDestinationChange = _this2.props.onDestinationChange;
        onDestinationChange("geniclick://claim/" + claimId);
      },
      style: {
        backgroundColor: claimId && data.patientClass.toLowerCase() === "group" ? staticColors.forestFern : '#F2F2F2',
        flexDirection: "row",
        justifyContent: "center",
        alignItems: "center",
        paddingVertical: 8,
        paddingHorizontal: 16,
        borderRadius: 30
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [fonts.bold, {
        color: staticColors.white,
        textAlign: "center",
        fontSize: 10,
        textTransform: "uppercase"
      }]
    }, I18n__default['default'].t("prixa.prescriptionClaim"))))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles$3.container, styles$3.containerBorder]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.detailFullContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.itemContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.labelRegular
    }, "" + I18n__default['default'].t("prixa.lifepackSubscriptionId")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.regularBold
    }, data.lifepackSubscriptionId))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.itemContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.labelRegular
    }, "" + I18n__default['default'].t("prixa.prescriptionNoAlt")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.regularBold
    }, data.prescriptionNo))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.itemContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.labelRegular
    }, "" + I18n__default['default'].t("prixa.redeemDate")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.regularBold
    }, data.redeemDate))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.itemContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.labelRegular
    }, "" + I18n__default['default'].t("prixa.prescriptionDate")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.regularBold
    }, data.prescriptionDate))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.itemContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.labelRegular
    }, "" + I18n__default['default'].t("prixa.prescriptionPatient")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.regularBold
    }, data.patientName)))))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        marginTop: 16
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$3.section, fonts.bold, {
        color: themeColors.primary
      }]
    }, I18n__default['default'].t("prixa.prescriptionDelivery"))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles$3.container, styles$3.containerBorder]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.detailContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$3.regularBold, {
        textTransform: "capitalize"
      }]
    }, detail.order_status || "-")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.statusContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      style: {
        backgroundColor: staticColors.forestFern,
        flexDirection: "row",
        justifyContent: "center",
        alignItems: "center",
        paddingVertical: 8,
        paddingHorizontal: 16,
        marginBottom: 8,
        borderRadius: 30
      },
      onPress: function onPress() {
        var detail = _this2.props.detail;
        var _navigation$state$par = navigation.state.params,
            cardNumber = _navigation$state$par.cardNumber,
            fullName = _navigation$state$par.fullName,
            gender = _navigation$state$par.gender;
        navigation.navigate("PrescriptionHistoryDetailStatus", {
          data: detail.prescription_order_histories,
          cardNumber: cardNumber,
          fullName: fullName,
          gender: gender
        });
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [fonts.bold, {
        color: staticColors.white,
        textAlign: "center",
        fontSize: 10,
        textTransform: "uppercase"
      }]
    }, I18n__default['default'].t("prixa.prescriptionDeliveryView")))))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        marginTop: 16
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$3.section, fonts.bold, {
        color: themeColors.primary
      }]
    }, I18n__default['default'].t("prixa.prescriptionPayment"))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles$3.container, styles$3.containerBorder]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.detailFullContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.itemContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.paymentContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.paymentLabel
    }, I18n__default['default'].t("prixa.prescriptionPaymentMedicine")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({}, styles$3.paymentText)
    }, currencyFormatter(payments.subtotal_price)))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.itemContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.paymentContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.paymentLabel
    }, I18n__default['default'].t("prixa.prescriptionPaymentDelivery")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({}, styles$3.paymentText)
    }, currencyFormatter(payments.delivery_price)))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.itemContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.paymentContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({}, styles$3.paymentLabel, fonts.bold, {
        color: themeColors.primary
      })
    }, I18n__default['default'].t("prixa.prescriptionPaymentTotal")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({}, styles$3.regularBold, {
        color: themeColors.primary
      })
    }, currencyFormatter(payments.total_price))))))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        marginTop: 16
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$3.section, fonts.bold, {
        color: themeColors.primary
      }]
    }, I18n__default['default'].t("prixa.prescriptionDeliveryDetail"))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles$3.container]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.detailFullContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.itemContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.labelRegular
    }, "" + I18n__default['default'].t("prixa.prescriptionDeliveryDetailRecipientName")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.regularBold
    }, data.patientName))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.itemContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.labelRegular
    }, "" + I18n__default['default'].t("prixa.cellphoneNumber")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.regularBold
    }, detail.patient_phone || "-"))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$3.itemContainer
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.labelRegular
    }, "" + I18n__default['default'].t("prixa.addressDelivery")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$3.addressText
    }, address || "-"))))))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        marginTop: 30,
        flexDirection: "row",
        alignItems: "center",
        backgroundColor: staticColors.forestFern
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: !!invoiceUrl ? themeColors.darkerPrimary : staticColors.grey,
        height: 60,
        width: "50%",
        flexDirection: "row",
        justifyContent: "center",
        alignItems: "center"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      disabled: !invoiceUrl,
      onPress: function onPress() {
        reactNative.Linking.openURL(invoiceUrl);
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [fonts.bold, {
        color: staticColors.white,
        textAlign: "center",
        fontSize: 15,
        textTransform: "capitalize"
      }]
    }, I18n__default['default'].t("prixa.prescriptionPaymentDownload")))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: !!prescriptionUrl ? staticColors.forestFern : '#C0C0C0',
        height: 60,
        width: "50%",
        flexDirection: "row",
        justifyContent: "center",
        alignItems: "center"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      disabled: !prescriptionUrl,
      onPress: function onPress() {
        reactNative.Linking.openURL(prescriptionUrl);
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [fonts.bold, {
        color: staticColors.white,
        textAlign: "center",
        fontSize: 15,
        textTransform: "capitalize"
      }]
    }, I18n__default['default'].t("prixa.prescriptionDownload"))))));
  };

  return PrescriptionHistoryItemDetail;
}(React__default['default'].Component);

_defineProperty(PrescriptionHistoryItemDetail, "propTypes", {
  data: PropTypes__default['default'].shape({
    prescriptionNo: PropTypes__default['default'].string,
    lifepackSubscriptionId: PropTypes__default['default'].string,
    patientName: PropTypes__default['default'].string.isRequired,
    prescriptionDate: PropTypes__default['default'].string,
    redeemDate: PropTypes__default['default'].string
  }),
  detail: PropTypes__default['default'].object.isRequired,
  navigation: PropTypes__default['default'].object.isRequired,
  onDestinationChange: PropTypes__default['default'].func
});

_defineProperty(PrescriptionHistoryItemDetail, "defaultProps", {
  onDestinationChange: function onDestinationChange() {
    console.log("onDestinationChange is not implemented!");
  }
});

var styles$3 = reactNative.StyleSheet.create({
  container: {
    alignItems: "center",
    flexDirection: "row",
    paddingTop: 8
  },
  containerBorder: {
    borderBottomColor: staticColors.grey,
    borderBottomWidth: 1,
    paddingBottom: 16
  },
  buttonContainer: {
    alignItems: "center",
    justifyContent: "center",
    flexDirection: "row"
  },
  detailFullContainer: {
    flexDirection: "column"
  },
  detailContainer: {
    flex: 0.6,
    flexDirection: "column"
  },
  bulletContainer: {
    width: 10
  },
  itemContainer: {
    flexDirection: "row",
    alignItems: "flex-start",
    justifyContent: "flex-start",
    marginBottom: 10
  },
  paymentContainer: {
    alignItems: "center",
    justifyContent: "space-between",
    flexDirection: "row",
    width: "100%"
  },
  statusContainer: {
    flex: 0.4,
    flexDirection: "column",
    alignItems: "flex-end",
    justifyContent: "space-between"
  },
  section: _extends({
    fontSize: 16
  }, fonts.regular),
  paymentText: _extends({
    fontSize: 12,
    marginVertical: 1
  }, fonts.bold, {
    textAlign: "right"
  }),
  paymentLabel: {
    fontSize: 12,
    textAlign: "right"
  },
  regularBig: _extends({
    fontSize: 14
  }, fonts.regular),
  regularBold: _extends({
    fontSize: 12,
    color: '#000',
    marginVertical: 2
  }, fonts.bold),
  labelRegular: {
    fontSize: 11,
    marginVertical: 2,
    color: staticColors.grey
  },
  addressText: _extends({
    fontSize: 12
  }, fonts.bold, {
    flex: 1,
    flexWrap: "wrap",
    marginRight: 5
  })
});
var PrescriptionHistoryItemDetail$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(PrescriptionHistoryItemDetail);

var PrescriptionHistoryDetailScreen = /*#__PURE__*/function (_Component) {
  _inheritsLoose(PrescriptionHistoryDetailScreen, _Component);

  function PrescriptionHistoryDetailScreen(props) {
    var _this;

    _this = _Component.call(this, props) || this;
    _this.state = {
      isLoading: false,
      refreshing: false,
      data: {}
    };
    return _this;
  }

  var _proto = PrescriptionHistoryDetailScreen.prototype;

  _proto.fetchPrescriptionHistoryDetail = /*#__PURE__*/function () {
    var _fetchPrescriptionHistoryDetail = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(isInitializing) {
      var id, _yield$API$get, data;

      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              if (!isInitializing) {
                this.setState({
                  refreshing: true
                });
              }

              id = this.props.navigation.state.params.data.id;
              _context.next = 4;
              return API.get(APP_BASE_URL + "/v2/prescription/" + id);

            case 4:
              _yield$API$get = _context.sent;
              data = _yield$API$get.data.data;
              this.setState({
                data: data
              });
              this.setState({
                refreshing: false
              });

            case 8:
            case "end":
              return _context.stop();
          }
        }
      }, _callee, this);
    }));

    function fetchPrescriptionHistoryDetail(_x) {
      return _fetchPrescriptionHistoryDetail.apply(this, arguments);
    }

    return fetchPrescriptionHistoryDetail;
  }();

  _proto.componentDidMount = /*#__PURE__*/function () {
    var _componentDidMount = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
      return regeneratorRuntime.wrap(function _callee2$(_context2) {
        while (1) {
          switch (_context2.prev = _context2.next) {
            case 0:
              this.setState({
                isLoading: true
              });
              _context2.next = 3;
              return this.fetchPrescriptionHistoryDetail(true);

            case 3:
              this.setState({
                isLoading: false
              });

            case 4:
            case "end":
              return _context2.stop();
          }
        }
      }, _callee2, this);
    }));

    function componentDidMount() {
      return _componentDidMount.apply(this, arguments);
    }

    return componentDidMount;
  }();

  _proto.render = function render() {
    var _this2 = this;

    var data = this.props.navigation.state.params.data;
    var detail = this.state.data;
    return /*#__PURE__*/React__default['default'].createElement(ParallaxScrollView__default['default'], {
      ref: function ref(_ref2) {
        _this2.scrollRef = _ref2;
      },
      backgroundColor: this.props.themeColors.primary,
      parallaxHeaderHeight: 200,
      refreshControl: /*#__PURE__*/React__default['default'].createElement(reactNative.RefreshControl, {
        refreshing: this.state.refreshing,
        onRefresh: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
          return regeneratorRuntime.wrap(function _callee3$(_context3) {
            while (1) {
              switch (_context3.prev = _context3.next) {
                case 0:
                  _context3.next = 2;
                  return _this2.fetchPrescriptionHistoryDetail();

                case 2:
                  return _context3.abrupt("return", _context3.sent);

                case 3:
                case "end":
                  return _context3.stop();
              }
            }
          }, _callee3);
        }))
      }),
      renderForeground: function renderForeground() {
        return /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(Header, {
          onPress: function onPress() {
            _this2.props.navigation.goBack();
          },
          position: "start",
          text: "Kembali",
          theme: "light"
        }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            flexDirection: "row",
            alignItems: "center",
            padding: 20
          }
        }, /*#__PURE__*/React__default['default'].createElement(PatientAvatarWithDetail, {
          cardNumber: _this2.props.navigation.state.params.cardNumber,
          fullName: _this2.props.navigation.state.params.fullName,
          gender: _this2.props.navigation.state.params.gender
        }), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
          style: {
            marginStart: 20
          },
          onPress: function onPress() {
            return _this2.scrollRef.scrollTo({
              x: 0,
              y: 500
            });
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
          source: require("../assets/baseline_keyboard_arrow_up_white_18dp.png")
        }))));
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: this.props.themeColors.primary
      }
    }, this.state.isLoading ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: "#FFF",
        borderTopEndRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
        borderTopStartRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
        paddingTop: 64
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        flex: 1,
        justifyContent: "center"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
      size: "large",
      color: this.props.themeColors.primary
    }))) : /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: "#FFF",
        borderTopEndRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
        borderTopStartRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
        paddingTop: 16
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        fontSize: 20
      }, fonts.bold, {
        color: this.props.themeColors.darkestPrimary,
        alignSelf: "center",
        marginBottom: 30
      })
    }, "Detail Pesanan"), /*#__PURE__*/React__default['default'].createElement(PrescriptionHistoryItemDetail$1, {
      data: data,
      navigation: this.props.navigation,
      detail: detail,
      onDestinationChange: this.props.screenProps.onDestinationChange
    }))));
  };

  return PrescriptionHistoryDetailScreen;
}(React.Component);

var PrescriptionHistoryDetailScreen$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(PrescriptionHistoryDetailScreen);

var PrescriptionHistoryOrderStatusDetail = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(PrescriptionHistoryOrderStatusDetail, _React$Component);

  function PrescriptionHistoryOrderStatusDetail() {
    return _React$Component.apply(this, arguments) || this;
  }

  var _proto = PrescriptionHistoryOrderStatusDetail.prototype;

  _proto.render = function render() {
    var _this$props = this.props,
        date = _this$props.date,
        status = _this$props.status,
        isLargeDetail = _this$props.isLargeDetail,
        rejectReason = _this$props.rejectReason;
    return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [isLargeDetail ? styles$2.sectionLarge : styles$2.section, {
        textTransform: "uppercase"
      }]
    }, status), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: isLargeDetail ? styles$2.timestampLarge : styles$2.timestamp
    }, I18n__default['default'].l("date.prixa.default", date) + " jam " + I18n__default['default'].l("time.prixa.default", date)), status.toLowerCase() === "resep ditolak" && /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$2.section
    }, "" + I18n__default['default'].t("prixa.prescriptionRejectReason", {
      reason: rejectReason.toLowerCase() || ""
    })));
  };

  return PrescriptionHistoryOrderStatusDetail;
}(React__default['default'].Component);

_defineProperty(PrescriptionHistoryOrderStatusDetail, "propTypes", {
  date: PropTypes__default['default'].instanceOf(Date).isRequired,
  status: PropTypes__default['default'].string.isRequired,
  isLargeDetail: PropTypes__default['default'].bool,
  rejectReason: PropTypes__default['default'].string
});

var styles$2 = reactNative.StyleSheet.create({
  sectionLarge: _extends({
    fontSize: 16
  }, fonts.bold),
  section: _extends({
    fontSize: 14
  }, fonts.bold),
  timestamp: _extends({
    fontSize: 12
  }, fonts.regular),
  timestampLarge: _extends({
    fontSize: 14
  }, fonts.regular)
});
var PrescriptionHistoryOrderStatusDetail$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(PrescriptionHistoryOrderStatusDetail);

var PrescriptionHistoryDetailStatusScreen = /*#__PURE__*/function (_Component) {
  _inheritsLoose(PrescriptionHistoryDetailStatusScreen, _Component);

  function PrescriptionHistoryDetailStatusScreen(props) {
    return _Component.call(this, props) || this;
  }

  var _proto = PrescriptionHistoryDetailStatusScreen.prototype;

  _proto.render = function render() {
    var _this = this;

    var data = this.props.navigation.state.params.data;
    return /*#__PURE__*/React__default['default'].createElement(ParallaxScrollView__default['default'], {
      ref: function ref(_ref) {
        _this.scrollRef = _ref;
      },
      backgroundColor: this.props.themeColors.primary,
      parallaxHeaderHeight: 200,
      renderForeground: function renderForeground() {
        return /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(Header, {
          onPress: function onPress() {
            _this.props.navigation.goBack();
          },
          position: "start",
          text: "Kembali",
          theme: "light"
        }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            flexDirection: "row",
            alignItems: "center",
            padding: 20
          }
        }, /*#__PURE__*/React__default['default'].createElement(PatientAvatarWithDetail, {
          cardNumber: _this.props.navigation.state.params.cardNumber,
          fullName: _this.props.navigation.state.params.fullName,
          gender: _this.props.navigation.state.params.gender
        }), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
          style: {
            marginStart: 20
          },
          onPress: function onPress() {
            return _this.scrollRef.scrollTo({
              x: 0,
              y: 500
            });
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
          source: require("../assets/baseline_keyboard_arrow_up_white_18dp.png")
        }))));
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: this.props.themeColors.primary
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: "#FFF",
        borderTopEndRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
        borderTopStartRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
        paddingTop: 16
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: _extends({
        fontSize: 20
      }, fonts.bold, {
        color: this.props.themeColors.darkestPrimary,
        alignSelf: "center",
        marginBottom: 30
      })
    }, "DETAIL STATUS PESANAN"), /*#__PURE__*/React__default['default'].createElement(Timeline__default['default'], {
      innerCircle: "icon",
      circleColor: this.props.themeColors.lighterPrimary,
      lineColor: this.props.themeColors.primary,
      data: data,
      detailContainerStyle: {
        marginTop: -13,
        marginBottom: 13
      },
      listViewContainerStyle: {
        marginLeft: 12,
        marginRight: 32
      },
      renderDetail: function renderDetail(rowData, rowID) {
        return /*#__PURE__*/React__default['default'].createElement(PrescriptionHistoryOrderStatusDetail$1, {
          date: moment__default['default'](rowData.timestamp).toDate(),
          status: rowData.status,
          isLargeDetail: rowID === 0,
          rejectReason: rowData.reject_reason
        });
      },
      showTime: false
    }))));
  };

  return PrescriptionHistoryDetailStatusScreen;
}(React.Component);

var PrescriptionHistoryDetailStatusScreen$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(PrescriptionHistoryDetailStatusScreen);

/* SVGR has dropped some elements not supported by react-native-svg: style */

function EnlargeIcon(props) {
  return /*#__PURE__*/React.createElement(Svg__default['default'], _extends({
    viewBox: "0 0 166.52 166.02"
  }, props), /*#__PURE__*/React.createElement(Svg.Defs, null), /*#__PURE__*/React.createElement(Svg.G, {
    id: "prefix__Layer_2",
    "data-name": "Layer 2"
  }, /*#__PURE__*/React.createElement(Svg.G, {
    id: "prefix__Layer_1-2",
    "data-name": "Layer 1"
  }, /*#__PURE__*/React.createElement(Svg.Path, {
    className: "prefix__cls-1",
    d: "M123 63.18A59.82 59.82 0 1163.18 3.36 59.82 59.82 0 01123 63.18z"
  }), /*#__PURE__*/React.createElement(Svg.Path, {
    className: "prefix__cls-1",
    d: "M99.34 110.64l51.47 52.01 12.35-12.71-51.53-51.69M63.18 33.1v60.16M33.1 63.18h60.16"
  }))));
}

function DownloadIcon(props) {
  return /*#__PURE__*/React.createElement(Svg__default['default'], _extends({
    viewBox: "0 0 206.34 166.13"
  }, props), /*#__PURE__*/React.createElement(Svg.Defs, null), /*#__PURE__*/React.createElement(Svg.G, {
    id: "prefix__Layer_2",
    "data-name": "Layer 2"
  }, /*#__PURE__*/React.createElement(Svg.G, {
    id: "prefix__Layer_1-2",
    "data-name": "Layer 1"
  }, /*#__PURE__*/React.createElement(Svg.Path, {
    className: "prefix__cls-1",
    d: "M103.09 90.93V3.36M63.85 83.13L98.28 121a8 8 0 0011.33 0L143 83.13"
  }), /*#__PURE__*/React.createElement(Svg.Path, {
    className: "prefix__cls-1",
    d: "M3.36 103.28v51.46a8.06 8.06 0 008 8H194.9a8.07 8.07 0 008.08-8v-51.46"
  }))));
}

var _this = undefined;

var _Dimensions$get$1 = reactNative.Dimensions.get("window"),
    width = _Dimensions$get$1.width,
    height$1 = _Dimensions$get$1.height;

var PrescriptionDetailScreen = function PrescriptionDetailScreen(props) {
  var _useState = React.useState(""),
      activeImage = _useState[0],
      setActiveImage = _useState[1];

  var _useState2 = React.useState(""),
      prescriptionImg = _useState2[0],
      setPrescriptionImg = _useState2[1];

  var _useState3 = React.useState(""),
      adjustedPrescriptionImg = _useState3[0],
      setAdjustedPrescriptionImg = _useState3[1];

  var _useState4 = React.useState(false),
      isZoomIn = _useState4[0],
      setIsZoomIn = _useState4[1];

  var _useState5 = React.useState(false),
      isDownloading = _useState5[0],
      setIsDownloading = _useState5[1];

  var _useState6 = React.useState(false),
      isPrescriptionAlreadyRedeemed = _useState6[0],
      setIsPrescriptionAlreadyRedeemed = _useState6[1];

  var _useState7 = React.useState(false),
      isPrescriptionEligible = _useState7[0],
      setIsPrescriptionEligible = _useState7[1];

  var _useState8 = React.useState(true),
      isLoadingPrescriptionData = _useState8[0],
      setIsLoadingPrescriptionData = _useState8[1];

  var _useState9 = React.useState(false),
      isPrescriptionLoadedSuccessfully = _useState9[0],
      setIsPrescriptionLoadedSuccessfully = _useState9[1];

  var _useState10 = React.useState(false),
      isPrescImgSelected = _useState10[0],
      setIsPrescImgSelected = _useState10[1];

  var _useState11 = React.useState(false),
      isAdjustedPrescImgSelected = _useState11[0],
      setIsAdjustedPrescImgSelected = _useState11[1];

  var _useState12 = React.useState(false),
      activeImageError = _useState12[0],
      setActiveImageError = _useState12[1];

  React.useEffect(function () {
    fetchPrescription();
  }, []);
  React.useEffect(function () {
    if (prescriptionImg) {
      setIsPrescImgSelected(true);
      reactNative.Image.getSize(prescriptionImg, function (width, height) {
        console.log("valid prescriptionImg", {
          width: width,
          height: height
        });
        setActiveImage(prescriptionImg);
      }, function (error) {
        setPrescriptionImg("invalid prescriptionImg", {
          error: error
        });
        setIsLoadingPrescriptionData(false);
        setActiveImageError(true);
      });
    }
  }, [prescriptionImg]);
  React.useEffect(function () {
    if (adjustedPrescriptionImg) {
      reactNative.Image.getSize(adjustedPrescriptionImg, function (width, height) {
        console.log("valid adjustedPrescriptionImg", {
          width: width,
          height: height
        });
      }, function (error) {
        setAdjustedPrescriptionImg("invalid adjustedPrescriptionImg", {
          error: error
        });
      });
    }
  }, [adjustedPrescriptionImg]);

  var fetchPrescription = /*#__PURE__*/function () {
    var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
      var prescriptionId, _yield$API$get, prescription;

      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              prescriptionId = props.navigation.state.params.prescriptionId;
              _context.next = 3;
              return API.get(APP_BASE_URL + "/v2/prescription/" + prescriptionId);

            case 3:
              _yield$API$get = _context.sent;
              prescription = _yield$API$get.data.data;
              setPrescriptionImg(prescription.img_url);
              setIsPrescriptionAlreadyRedeemed(prescription.order_status !== null ? true : false);
              setIsPrescriptionEligible(!!prescription.is_eligible);

              if (prescription.has_prescription_adjustment === 1) {
                setAdjustedPrescriptionImg(prescription.adjusted_img_url);
              }

            case 9:
            case "end":
              return _context.stop();
          }
        }
      }, _callee);
    }));

    return function fetchPrescription() {
      return _ref.apply(this, arguments);
    };
  }();

  var showZoomIn = function showZoomIn() {
    if (activeImage) {
      setIsZoomIn(true);
    } else {
      reactNative.Alert.alert("Kesalahan", "Invalid Image Url");
    }
  };

  var dismissZoomIn = function dismissZoomIn() {
    setIsZoomIn(false);
  };

  var onBackButtonPressed = function onBackButtonPressed() {
    props.navigation.navigate("PrescriptionHistory");
  };

  var onRedeemButtonPressed = function onRedeemButtonPressed() {
    var _props$navigation$sta = props.navigation.state.params,
        prescriptionId = _props$navigation$sta.prescriptionId,
        customerName = _props$navigation$sta.customerName,
        patientName = _props$navigation$sta.patientName,
        cardNumber = _props$navigation$sta.cardNumber,
        gender = _props$navigation$sta.gender,
        pharmacy = _props$navigation$sta.pharmacy;

    if (isPrescriptionAlreadyRedeemed) {
      reactNative.Alert.alert("Kesalahan", "Resep sudah ditebus");
    } else if (!isPrescriptionEligible) {
      reactNative.Alert.alert("Resep tidak dapat ditebus", "Mohon maaf, resep hanya dapat ditebus maksimal 7 hari setelah konsultasi");
    } else {
      props.navigation.navigate("OrderMedicine", {
        prescriptionId: prescriptionId,
        customerName: customerName,
        // this is used for avatar display
        patientName: patientName,
        // this is patient name used for prescription
        cardNumber: cardNumber,
        gender: gender,
        pharmacy: pharmacy
      });
    }
  };

  var changeImage = function changeImage(imageUrl, buttonSelected) {
    if (buttonSelected === "adjustedButton") {
      setIsAdjustedPrescImgSelected(true);
      setIsPrescImgSelected(false);
    } else {
      setIsAdjustedPrescImgSelected(false);
      setIsPrescImgSelected(true);
    }

    if (imageUrl === "invalid image") {
      setActiveImage();
      setActiveImageError(true);
    } else {
      setActiveImage();
      setActiveImageError();
      setActiveImage(imageUrl);
    }
  };

  var onDownloadButtonPressed = function onDownloadButtonPressed() {
    if (activeImage) {
      setIsDownloading(true);
      savePrescription(activeImage).then(function (x) {
        setIsDownloading(false);
      });
    } else {
      reactNative.Alert.alert("Kesalahan", "Resep tidak dapat diunduh.");
    }
  };

  var onLoadEnd = function onLoadEnd() {
    setIsLoadingPrescriptionData(false);
    setIsPrescriptionLoadedSuccessfully(true);
  };

  return /*#__PURE__*/React__default['default'].createElement(reactNative.ScrollView, {
    style: {
      flex: 1
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: {
      backgroundColor: props.themeColors.primary
    }
  }, /*#__PURE__*/React__default['default'].createElement(Modal__default['default'], {
    isVisible: isZoomIn,
    backdropColor: "grey",
    onBackButtonPress: dismissZoomIn,
    onBackdropPress: dismissZoomIn,
    useNativeDriver: true
  }, /*#__PURE__*/React__default['default'].createElement(AutoHeightImage__default['default'], {
    alignSelf: "center",
    source: {
      uri: activeImage
    },
    width: width
  })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles$1.header
  }, /*#__PURE__*/React__default['default'].createElement(PatientAvatarWithDetail, {
    cardNumber: props.navigation.state.params.cardNumber,
    fullName: props.navigation.state.params.customerName,
    gender: props.navigation.state.params.gender
  }), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
    style: {
      marginStart: 20
    },
    onPress: function onPress() {
      return _this.scrollRef.scrollTo({
        x: 0,
        y: 500
      });
    }
  })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: {
      backgroundColor: "#FFF",
      borderTopEndRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
      borderTopStartRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: {
      paddingTop: 10,
      alignSelf: "center"
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles$1.prescriptionTitle
  }, "RESEP OBAT")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: [styles$1.containerImageFeatures, {
      marginRight: 20
    }]
  }, adjustedPrescriptionImg ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles$1.containerImageFeatures
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: [styles$1.menu, styles$1.buttonMenu, {
      marginRight: 15
    }, isPrescImgSelected ? {
      backgroundColor: props.themeColors.primary
    } : styles$1.buttonMenuDisable]
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
    onPress: function onPress() {
      return changeImage(prescriptionImg, "");
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: [styles$1.textButton, {
      fontSize: 12
    }]
  }, "RESEP AWAL"))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: [styles$1.menu, styles$1.buttonMenu, isAdjustedPrescImgSelected ? {
      backgroundColor: props.themeColors.primary
    } : styles$1.buttonMenuDisable]
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
    onPress: function onPress() {
      return changeImage(adjustedPrescriptionImg, "adjustedButton");
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: [styles$1.textButton, {
      fontSize: 12
    }]
  }, "RESEP BARU")))) : null, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
    onPress: showZoomIn
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles$1.menu
  }, /*#__PURE__*/React__default['default'].createElement(EnlargeIcon, {
    fill: "none",
    stroke: props.themeColors.primary,
    strokeWidth: "12",
    style: styles$1.imageFeature
  }))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
    onPress: onDownloadButtonPressed
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles$1.menu
  }, isDownloading ? /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
    size: "large",
    color: props.themeColors.primary
  }) : /*#__PURE__*/React__default['default'].createElement(DownloadIcon, {
    fill: "none",
    stroke: props.themeColors.primary,
    strokeWidth: "19",
    style: styles$1.imageFeature
  })))), isLoadingPrescriptionData ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: {
      paddingTop: height$1 * 0.2,
      alignItems: "center"
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
    size: "large",
    color: props.themeColors.primary
  })) : null, activeImage ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles$1.containerImage
  }, /*#__PURE__*/React__default['default'].createElement(AutoHeightImage__default['default'], {
    source: {
      uri: activeImage
    },
    width: isAdjustedPrescImgSelected ? reactNative.Dimensions.get("window").width * 0.9 : reactNative.Dimensions.get("window").width,
    fadeDuration: 1000,
    onLoadEnd: onLoadEnd
  })), isPrescriptionLoadedSuccessfully ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles$1.imageNote
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, null, "Resep hanya bisa ditebus satu kali")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles$1.containerListButton
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
    onPress: onBackButtonPressed,
    style: {
      alignSelf: "center"
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles$1.containerButton
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles$1.textButton
  }, "KEMBALI"))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
    onPress: onRedeemButtonPressed,
    style: {
      alignSelf: "center"
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: [isPrescriptionAlreadyRedeemed || !isPrescriptionEligible ? styles$1.redeemButtonDisabled : styles$1.redeemButtonEnabled]
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles$1.textButton
  }, "TEBUS RESEP"))))) : null) : null, activeImageError ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: {
      paddingTop: 10,
      alignSelf: "center",
      marginBottom: 30
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
    source: require("../assets/icons/fail.png"),
    style: styles$1.iconFail
  }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles$1.imageNote
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, null, "Data resep gagal dimuat"))) : null)));
};

var styles$1 = reactNative.StyleSheet.create({
  header: {
    flexDirection: "row",
    alignItems: "center",
    padding: 20
  },
  prescriptionTitle: _extends({
    fontSize: 24
  }, fonts.bold, {
    color: "#000",
    width: 250,
    textAlign: "center",
    paddingVertical: 16
  }),
  containerImageFeatures: {
    flexDirection: "row",
    justifyContent: "flex-end",
    marginBottom: 10
  },
  imageFeature: {
    width: 25,
    height: 27,
    marginRight: 20
  },
  containerImage: {
    marginRight: 30,
    marginLeft: 30,
    alignSelf: "center"
  },
  imageNote: {
    alignSelf: "center",
    marginVertical: 20
  },
  containerListButton: {
    flexDirection: "row",
    justifyContent: "space-between",
    marginBottom: 10
  },
  containerButton: {
    borderRadius: 30,
    alignSelf: "flex-start",
    backgroundColor: staticColors.red,
    paddingVertical: 10,
    paddingHorizontal: 35,
    marginLeft: width * 0.1
  },
  textButton: _extends({}, fonts.bold, {
    color: "#FFF",
    textAlign: "center"
  }),
  redeemButtonEnabled: {
    borderRadius: 30,
    alignSelf: "flex-start",
    backgroundColor: staticColors.forestFern,
    paddingVertical: 10,
    paddingHorizontal: 30,
    marginRight: width * 0.1
  },
  redeemButtonDisabled: {
    borderRadius: 30,
    alignSelf: "flex-start",
    backgroundColor: staticColors.grey,
    paddingVertical: 10,
    paddingHorizontal: 30,
    marginRight: width * 0.1
  },
  iconFail: {
    width: 250,
    height: 250,
    alignSelf: "center",
    marginTop: 40,
    marginBottom: 10
  },
  menu: {
    borderRadius: 30,
    alignSelf: "center",
    paddingVertical: 3
  },
  buttonMenu: {
    paddingHorizontal: 15,
    marginRight: 10,
    marginTop: 5
  },
  buttonMenuDisable: {
    backgroundColor: staticColors.grey
  }
});
var PrescriptionDetailScreen$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors,
    token: state.token
  };
})(PrescriptionDetailScreen);

var _Dimensions$get = reactNative.Dimensions.get("window");
    _Dimensions$get.width;
    var height = _Dimensions$get.height;

var OrderMedicineScreen = function OrderMedicineScreen(props) {
  var _useState = React.useState([]),
      fulfillmentCenters = _useState[0],
      setFulfillmentCenters = _useState[1];

  var _useState2 = React.useState(""),
      phone = _useState2[0],
      setPhone = _useState2[1];

  var _useState3 = React.useState(""),
      fulfillmentCenterId = _useState3[0],
      setFulfillmentCenterId = _useState3[1];

  var _useState4 = React.useState(""),
      fulfillmentCenterName = _useState4[0],
      setFulfillmentCenterName = _useState4[1];

  var _useState5 = React.useState(""),
      pharmacyName = _useState5[0],
      setPharmacyName = _useState5[1];

  var _useState6 = React.useState(false),
      isWaitingResponse = _useState6[0],
      setIsWaitingResponse = _useState6[1];

  var _useState7 = React.useState(false),
      isPatientDataModalVisible = _useState7[0],
      setIsPatientDataModalVisible = _useState7[1];

  var _useState8 = React.useState(false),
      isSuccessModalVisible = _useState8[0],
      setIsSuccessModalVisible = _useState8[1];

  var _useState9 = React.useState(false),
      isFailModalVisible = _useState9[0],
      setIsFailModalVisible = _useState9[1];

  var _useState10 = React.useState(false),
      hasErrorPhoneNumber = _useState10[0],
      setHasErrorPhoneNumber = _useState10[1];

  var _useState11 = React.useState(""),
      descErrorPhoneNumber = _useState11[0],
      setDescErrorPhoneNumber = _useState11[1];

  var _useState12 = React.useState(false),
      hasErrorFulfillmentCenter = _useState12[0],
      setHasErrorFulfillmentCenter = _useState12[1];

  var _useState13 = React.useState(""),
      descErrorFulfillmentCenter = _useState13[0],
      setDescErrorFulfillmentCenter = _useState13[1];

  React.useEffect(function () {
    var pharmacy = props.navigation.state.params.pharmacy;
    setPharmacyName(pharmacy.pharmacy_name);

    if (pharmacy.pharmacy_name === "Lifepack") {
      buildLifepackFulfillmentCenter(pharmacy.fulfillment_center);
    } else if (pharmacy.pharmacy_name === "Siloam") {
      buildSiloamFulfillmentCenter(pharmacy.fulfillment_center);
    } else ;
  }, []);
  React.useEffect(function () {
    var pharmacy = props.navigation.state.params.pharmacy;
    setPharmacyName(pharmacy.pharmacy_name);

    if (pharmacy.pharmacy_name === "Lifepack") {
      buildLifepackFulfillmentCenter(pharmacy.fulfillment_center);
    } else if (pharmacy.pharmacy_name === "Siloam") {
      buildSiloamFulfillmentCenter(pharmacy.fulfillment_center);
    } else ;
  }, []);

  var onBackButtonPressed = function onBackButtonPressed() {
    props.navigation.navigate("PrescriptionDetail");
  };

  var onOrderNowButtonPressed = function onOrderNowButtonPressed() {
    var isPhoneValid = isPhoneNumberValid();
    var isFlfillmentCenterValid = isFulfillmentCenterValid();

    if (isPhoneValid && isFlfillmentCenterValid) {
      setIsPatientDataModalVisible(true);
    }
  };

  var isPhoneNumberValid = function isPhoneNumberValid() {
    var valid = false;
    var regex = /^(08\d{8,10})$|(\+62\d{9,11})$/;

    if (phone == "") {
      setHasErrorPhoneNumber(true);
      setDescErrorPhoneNumber("Nomor HP tidak boleh kosong");
    } else if (isNaN(phone)) {
      setHasErrorPhoneNumber(true);
      setDescErrorPhoneNumber("Nomor HP harus angka");
    } else if (regex.test(phone) === false) {
      setHasErrorPhoneNumber(true);
      setDescErrorPhoneNumber("Format nomor HP salah");
    } else {
      valid = true;
      setHasErrorPhoneNumber(false);
      setDescErrorPhoneNumber("");
    }

    return valid;
  };

  var isFulfillmentCenterValid = function isFulfillmentCenterValid() {
    var valid = false;
    var foundMatchFC = findFulfillmentCenter(fulfillmentCenterId);

    if (fulfillmentCenterId == "" || fulfillmentCenterName == "") {
      setHasErrorFulfillmentCenter(true);
      setDescErrorFulfillmentCenter("Lokasi tidak boleh kosong");
    } else if (foundMatchFC <= 0) {
      setHasErrorFulfillmentCenter(true);
      setDescErrorFulfillmentCenter("Lokasi tidak ditemukan");
    } else {
      valid = true;
      setHasErrorFulfillmentCenter(false);
      setDescErrorFulfillmentCenter("");
    }

    return valid;
  };

  var buildSiloamFulfillmentCenter = function buildSiloamFulfillmentCenter(fulfillmentCenters) {
    var listFulfillmentCenters = [];

    ___default['default'].each(fulfillmentCenters, function (item) {
      var _ref, _item$city;

      listFulfillmentCenters.push({
        id: item.id,
        name: (_ref = item.name + " - " + ((_item$city = item.city) == null ? void 0 : _item$city.name)) != null ? _ref : null
      });
    });

    setFulfillmentCenters(listFulfillmentCenters);
  };

  var buildLifepackFulfillmentCenter = function buildLifepackFulfillmentCenter(fulfillmentCenters) {
    var listFulfillmentCenters = [];

    ___default['default'].each(fulfillmentCenters, function (item) {
      listFulfillmentCenters.push({
        id: item.id,
        name: item.name
      });
    });

    setFulfillmentCenters(listFulfillmentCenters);
  };

  var onProcessOrderButtonPressed = function onProcessOrderButtonPressed() {
    setIsPatientDataModalVisible(false);
    submitOrderPrescription();
  };

  var onSubmitOrderPrescriptionSuccess = function onSubmitOrderPrescriptionSuccess() {
    setIsSuccessModalVisible(true);
  };

  var onSubmitOrderPrescriptionFail = function onSubmitOrderPrescriptionFail() {
    setIsFailModalVisible(true);
  };

  var onRetrySubmitOrderPrescription = function onRetrySubmitOrderPrescription() {
    setIsFailModalVisible(false);
    submitOrderPrescription();
  };

  var submitOrderPrescription = function submitOrderPrescription() {
    setIsWaitingResponse(true);
    sendOrderPrescriptionToServer();
  };

  var sendOrderPrescriptionToServer = /*#__PURE__*/function () {
    var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
      var prescriptionId, payload, _yield$API$post, _yield$API$post$data, prescriptionOrder, status;

      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              prescriptionId = props.navigation.state.params.prescriptionId;
              payload = {
                phone: phone,
                fulfillment_center_id: fulfillmentCenterId
              };
              _context.prev = 2;
              _context.next = 5;
              return API.post(APP_BASE_URL + "/v2/prescription/" + prescriptionId + "/order", payload);

            case 5:
              _yield$API$post = _context.sent;
              _yield$API$post$data = _yield$API$post.data;
              prescriptionOrder = _yield$API$post$data.data;
              status = _yield$API$post$data.status;

              if (prescriptionOrder) {
                if (status === "success") {
                  setTimeout(function () {
                    setIsWaitingResponse(false);
                    onSubmitOrderPrescriptionSuccess();
                  }, 350);
                } else {
                  setTimeout(function () {
                    setIsWaitingResponse(false);
                    onSubmitOrderPrescriptionFail();
                  }, 350);
                }
              }

              _context.next = 16;
              break;

            case 12:
              _context.prev = 12;
              _context.t0 = _context["catch"](2);
              setIsWaitingResponse(false);
              console.log((_context.t0 == null ? void 0 : _context.t0.response) || _context.t0);

            case 16:
            case "end":
              return _context.stop();
          }
        }
      }, _callee, null, [[2, 12]]);
    }));

    return function sendOrderPrescriptionToServer() {
      return _ref2.apply(this, arguments);
    };
  }();

  var goDoubleBack = function goDoubleBack() {
    setIsSuccessModalVisible(false);
    props.navigation.navigate("CustomerProfile");
  };

  var onPhoneTextChange = function onPhoneTextChange(phone) {
    setPhone(phone);
    setDescErrorPhoneNumber("");
    setHasErrorPhoneNumber(false);
  };

  var onFulfillmentCenterSelected = function onFulfillmentCenterSelected(fulfillmentCenterId, fulfillmentCenterName) {
    setFulfillmentCenterName(fulfillmentCenterName);
    setFulfillmentCenterId(fulfillmentCenterId);
    setHasErrorFulfillmentCenter(false);
    setDescErrorFulfillmentCenter("");
  };

  var onFulfillmentCenterTextChange = function onFulfillmentCenterTextChange(fulfillmentCenterName) {
    setFulfillmentCenterName(fulfillmentCenterName);
    setHasErrorFulfillmentCenter(false);
    setDescErrorFulfillmentCenter("");
  };

  var findFulfillmentCenter = function findFulfillmentCenter(fulfillmentCenterId) {
    if (fulfillmentCenterId === "") {
      return [];
    }

    return fulfillmentCenters.filter(function (fulfillmentCenter) {
      return fulfillmentCenter.id.search(fulfillmentCenterId) >= 0;
    });
  };

  var closeVerificationModal = function closeVerificationModal() {
    setIsPatientDataModalVisible(false);
  };

  var closeSuccessModal = function closeSuccessModal() {
    setIsSuccessModalVisible(false);
  };

  var closeFailModal = function closeFailModal() {
    setIsFailModalVisible(false);
  };

  var closeLoadingModal = function closeLoadingModal() {
    setIsWaitingResponse(false);
  };

  return /*#__PURE__*/React__default['default'].createElement(reactNative.KeyboardAvoidingView, {
    behavior: "position",
    keyboardVerticalOffset: 50
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableWithoutFeedback, {
    onPress: reactNative.Keyboard.dismiss
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: {
      backgroundColor: props.themeColors.primary
    }
  }, isPatientDataModalVisible ? /*#__PURE__*/React__default['default'].createElement(Modal__default['default'], {
    isVisible: true,
    backdropColor: "#515151",
    useNativeDriver: true,
    onModalHide: closeVerificationModal,
    onDismiss: closeVerificationModal
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles.containerTitleModal
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.titleVerificationModal
  }, "Apakah Anda yakin data yang dimasukkan sudah benar?"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.bodyVerificationModal
  }, "Dengan menyetujui untuk proses resep, Anda telah melakukan pengecekan data pasien dan detail kontak untuk pengiriman."), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles.containerListButtonsVerificationModal
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
    onPress: function onPress() {
      setIsPatientDataModalVisible(false);
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: [styles.buttonModal, {
      backgroundColor: "#E64F4F",
      paddingHorizontal: 25
    }]
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.textButtonModal
  }, "KEMBALI"))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
    onPress: onProcessOrderButtonPressed
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: [styles.buttonModal, {
      backgroundColor: "#5DBE66",
      paddingHorizontal: 17
    }]
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.textButtonModal
  }, "PROSES RESEP")))))) : null, isSuccessModalVisible ? /*#__PURE__*/React__default['default'].createElement(Modal__default['default'], {
    isVisible: true,
    backdropColor: "#515151",
    useNativeDriver: true,
    onModalHide: closeSuccessModal,
    onDismiss: closeSuccessModal
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles.containerSuccessOrderModal
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
    source: require("../assets/icons/tick.png"),
    style: styles.imgSuccessOrderModal
  }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.titleSuccessOrderModal
  }, "Permintaan Resep Berhasil Dikirim"), pharmacyName === "Lifepack" ? /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.textBodySuccessOrderModal
  }, "Tim Apoteker kami akan melakukan pengecekan dan mengkonfirmasi melalui push notifikasi. Mohon untuk menunggu beberapa menit.") : /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.textBodySuccessOrderModal
  }, "Tim Apoteker kami akan melakukan pengecekan dan mengkonfirmasi pesanan melalui telepon/SMS/Whatsapp."), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles.containerListButtonSuccessOrderModal
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
    onPress: goDoubleBack
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: [styles.buttonModal, {
      backgroundColor: "#5DBE66",
      paddingHorizontal: 40
    }]
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.textButtonModal
  }, "SELESAI")))))) : null, isFailModalVisible ? /*#__PURE__*/React__default['default'].createElement(Modal__default['default'], {
    isVisible: isFailModalVisible,
    backdropColor: "#515151",
    useNativeDriver: true,
    onModalHide: closeFailModal,
    onDismiss: closeFailModal
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles.containerFailOrderModal
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
    source: require("../assets/icons/fail.png"),
    style: styles.imgFailOrderModal
  }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.titleFailOrderModal
  }, "Permintaan Resep Gagal Dikirim"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.textBodyFailOrderModal
  }, "Silahkan coba kembali dalam beberapa saat"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles.containerListButtonsFailOrderModal
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
    onPress: function onPress() {
      setIsFailModalVisible(false);
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: [styles.buttonModal, {
      backgroundColor: "#E64F4F",
      marginLeft: 10,
      paddingHorizontal: 30
    }]
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.textButtonModal
  }, "KEMBALI"))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
    onPress: onRetrySubmitOrderPrescription
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: [styles.buttonModal, {
      backgroundColor: "#5DBE66",
      marginRight: 10,
      paddingHorizontal: 25
    }]
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.textButtonModal
  }, "COBA LAGI")))))) : null, isWaitingResponse ? /*#__PURE__*/React__default['default'].createElement(Modal__default['default'], {
    isVisible: true,
    backdropColor: "#ffffff",
    useNativeDriver: true,
    onModalHide: closeLoadingModal,
    onDismiss: closeLoadingModal
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: [styles.containerTitleModal, {
      backgroundColor: "rgba(0,0,0,0)",
      alignItems: "center"
    }]
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
    size: "large",
    color: props.themeColors.primary
  }))) : null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles.header
  }, /*#__PURE__*/React__default['default'].createElement(PatientAvatarWithDetail, {
    cardNumber: props.navigation.state.params.cardNumber,
    fullName: props.navigation.state.params.customerName,
    gender: props.navigation.state.params.gender
  }), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
    style: {
      marginStart: 20
    },
    onPress: function onPress() {
      return scrollRef.scrollTo({
        x: 0,
        y: 500
      });
    }
  })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: {
      backgroundColor: "#FFF",
      borderTopEndRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
      borderTopStartRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40
    }
  }, fulfillmentCenters.length <= 0 ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: {
      paddingTop: height * 0.3,
      alignItems: "center"
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
    size: "large",
    color: props.themeColors.primary
  })) : /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles.containerTitleOrderMedicine
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.textTitleOrderMedicine
  }, "PEMESANAN OBAT")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles.containerBodyOrderMedicine
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles.containerInfo
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.textBodyOrderMedicine
  }, "Mohon untuk melengkapi data dibawah untuk kebutuhan pengiriman obat dan pembayaran.")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.textForm
  }, "Nama Pasien"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: {
      color: "#000",
      fontSize: 18,
      paddingVertical: 7
    }
  }, props.navigation.state.params.patientName), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.textForm
  }, "Nomor Ponsel"), /*#__PURE__*/React__default['default'].createElement(reactNative.TextInput, {
    style: styles.inputTextForm,
    placeholder: "e.g. 08XXXXXXXXX",
    keyboardType: "phone-pad",
    onChangeText: function onChangeText(phone) {
      return onPhoneTextChange(phone);
    }
  }), hasErrorPhoneNumber ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: {
      paddingTop: 5
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.error
  }, descErrorPhoneNumber)) : null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.textForm
  }, "Lokasi"), /*#__PURE__*/React__default['default'].createElement(SearchableDropdown__default['default'], {
    onTextChange: function onTextChange(text) {
      return onFulfillmentCenterTextChange(text);
    },
    onItemSelect: function onItemSelect(item) {
      return onFulfillmentCenterSelected(item["id"], item["name"]);
    },
    containerStyle: styles.containerDropDown,
    itemStyle: styles.itemDropDown,
    itemTextStyle: styles.itemTextStyleDropDown,
    itemsContainerStyle: {
      maxHeight: 240
    },
    items: fulfillmentCenters,
    textInputProps: {
      placeholder: "e.g DKI JAKARTA",
      underlineColorAndroid: "transparent",
      style: {
        padding: 5,
        borderWidth: 1,
        borderColor: "#ccc",
        borderRadius: 10,
        fontSize: 17,
        height: 40
      }
    },
    resetValue: false,
    underlineColorAndroid: "transparent"
  }), hasErrorFulfillmentCenter ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: {
      paddingTop: 5
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.error
  }, descErrorFulfillmentCenter)) : null, pharmacyName === "Siloam" ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: {
      paddingTop: 20
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: {
      color: staticColors.grey,
      fontSize: 15,
      textAlign: "justify"
    }
  }, "Untuk sementara hanya melayani pengantaran pada kota-kota diatas. Untuk daerah lainnya Anda dapat download resep dan menebusnya di apotek yang bekerja sama dengan Mandiri InHealth")) : null), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles.containerListButtonOrderMedicine
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
    onPress: onBackButtonPressed,
    style: {
      alignSelf: "center"
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles.buttonBackOrderMedicine
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.textButtonOrderMedicine
  }, "KEMBALI"))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
    onPress: onOrderNowButtonPressed,
    style: {
      alignSelf: "center"
    }
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
    style: styles.buttonOrderMedicine
  }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
    style: styles.textButtonOrderMedicine
  }, "PESAN SEKARANG")))))))));
};

var styles = reactNative.StyleSheet.create({
  header: {
    flexDirection: "row",
    alignItems: "center",
    padding: 20
  },
  containerTitleModal: {
    backgroundColor: "#FFFFFF",
    borderRadius: 40,
    padding: 30
  },
  titleVerificationModal: _extends({
    color: "#808080",
    fontSize: 20
  }, fonts.bold, {
    textAlign: "center"
  }),
  bodyVerificationModal: {
    color: "#808080",
    fontSize: 17,
    textAlign: "center",
    lineHeight: 20,
    marginTop: 30,
    marginVertical: 30
  },
  containerListButtonsVerificationModal: {
    flexDirection: "row",
    justifyContent: "space-between"
  },
  buttonModal: {
    borderRadius: 20,
    paddingVertical: 10
  },
  textButtonModal: _extends({
    color: "#FFFFFF",
    fontSize: 15
  }, fonts.bold),
  containerSuccessOrderModal: {
    backgroundColor: "#FFFFFF",
    borderRadius: 40,
    padding: 15
  },
  imgSuccessOrderModal: {
    width: 100,
    height: 100,
    alignSelf: "center",
    marginTop: 20,
    marginBottom: 10
  },
  titleSuccessOrderModal: _extends({
    color: "#808080",
    fontSize: 18
  }, fonts.bold, {
    textAlign: "center"
  }),
  textBodySuccessOrderModal: {
    color: "#808080",
    fontSize: 16,
    textAlign: "center",
    marginTop: 10
  },
  containerListButtonSuccessOrderModal: {
    alignSelf: "center",
    marginVertical: 15
  },
  containerFailOrderModal: {
    backgroundColor: "#FFFFFF",
    borderRadius: 40,
    padding: 15
  },
  imgFailOrderModal: {
    width: 100,
    height: 100,
    alignSelf: "center",
    marginTop: 20,
    marginBottom: 10
  },
  titleFailOrderModal: _extends({
    color: "#808080",
    fontSize: 20
  }, fonts.bold, {
    textAlign: "center"
  }),
  textBodyFailOrderModal: {
    color: "#808080",
    fontSize: 16,
    textAlign: "center"
  },
  containerListButtonsFailOrderModal: {
    flexDirection: "row",
    justifyContent: "space-between",
    marginVertical: 15
  },
  containerTitleOrderMedicine: {
    paddingTop: 10,
    alignSelf: "center"
  },
  textTitleOrderMedicine: _extends({
    fontSize: 24
  }, fonts.bold, {
    color: "#000",
    width: 250,
    textAlign: "center",
    paddingVertical: 7
  }),
  containerBodyOrderMedicine: {
    paddingVertical: 7,
    marginHorizontal: 20
  },
  containerInfo: {
    paddingBottom: 5
  },
  textBodyOrderMedicine: {
    fontSize: 18,
    color: "#000",
    paddingVertical: 5,
    textAlign: "justify",
    lineHeight: 20,
    letterSpacing: 0.5
  },
  textForm: _extends({
    fontSize: 18
  }, fonts.bold, {
    color: "#000",
    width: 250,
    paddingVertical: 7,
    marginTop: 10
  }),
  inputTextForm: {
    padding: 5,
    height: 40,
    borderColor: "gray",
    borderWidth: 1,
    textAlignVertical: "top",
    fontSize: 18,
    borderRadius: 10,
    textTransform: "uppercase"
  },
  containerListButtonOrderMedicine: {
    flexDirection: "row",
    justifyContent: "space-between",
    marginTop: 30
  },
  buttonBackOrderMedicine: {
    borderRadius: 30,
    alignSelf: "flex-start",
    backgroundColor: staticColors.red,
    paddingVertical: 12,
    paddingHorizontal: 46,
    marginLeft: 20
  },
  buttonOrderMedicine: {
    borderRadius: 30,
    alignSelf: "flex-start",
    backgroundColor: staticColors.forestFern,
    paddingVertical: 12,
    paddingHorizontal: 20,
    marginRight: 20
  },
  textButtonOrderMedicine: _extends({}, fonts.bold, {
    color: "#FFF",
    textAlign: "center"
  }),
  error: {
    color: "red",
    fontSize: 15
  },
  containerDropDown: {
    borderColor: "gray",
    borderWidth: 1,
    fontSize: 18,
    borderRadius: 10,
    textTransform: "uppercase"
  },
  itemDropDown: {
    padding: 10,
    marginTop: 2,
    backgroundColor: "#FAF9F8",
    borderColor: "#bbb",
    borderRadius: 10,
    borderWidth: 1
  },
  itemTextStyleDropDown: {
    color: "#222",
    fontSize: 18
  }
});
var OrderMedicineScreen$1 = reactRedux.connect(function (state) {
  return {
    themeColors: state.themeColors
  };
})(OrderMedicineScreen);

var routeConfigMap = {
  ask: AskScreen$1,
  intro: IntroScreen$1,
  Children: ChildrenScreen,
  Consent: ConsentScreen$1,
  dependencies: ChildrenScreen,
  CustomerProfile: CustomerProfileScreen$1,
  DoctorProfile: DoctorProfileScreen$1,
  Medical: MedicalScreen$1,
  MedicalCheck: MedicalCheck,
  Rating: RatingScreen$1,
  Symptoms: SymptomsScreen$1,
  symptom: SymptomsScreen$1,
  VideoCall: VideoCallScreen$1,
  AudioCall: AudioCallScreen$1,
  Waiting: WaitingScreen$1,
  PreAssessment: PreAssessmentScreen$1,
  PostAssessment: PostAssessmentScreen$1,
  PrescriptionHistory: PrescriptionHistoryScreen$1,
  PrescriptionHistoryDetail: PrescriptionHistoryDetailScreen$1,
  PrescriptionHistoryDetailStatus: PrescriptionHistoryDetailStatusScreen$1,
  PrescriptionDetail: PrescriptionDetailScreen$1,
  OrderMedicine: OrderMedicineScreen$1
};
var stackConfig = {
  headerMode: "none",
  initialRouteName: "CustomerProfile"
};

I18n__default['default'].locale = "id";
I18n__default['default'].translations = internationalizations;
var PrixaNavigator = reactNavigationStack.createStackNavigator(routeConfigMap, stackConfig);
var PrixaContainer = reactNavigation.createAppContainer(PrixaNavigator);

var Prixa = /*#__PURE__*/function (_React$Component) {
  _inheritsLoose(Prixa, _React$Component);

  function Prixa(props) {
    var _this;

    _this = _React$Component.call(this, props) || this;

    _defineProperty(_assertThisInitialized(_this), "handleNavigationStateChange", function (_prevNavigationState, nextNavigationState) {
      var onDestinationChange = _this.props.onDestinationChange;
      var mapping = {
        Waiting: "Consultation"
      };
      var lastRoute = nextNavigationState.routes.slice(-1)[0];
      var destination = mapping[lastRoute.routeName] || "Other";
      onDestinationChange(destination);
    });

    var _this$props = _this.props,
        devMode = _this$props.devMode,
        fcmToken = _this$props.fcmToken,
        introSlides = _this$props.introSlides,
        showIntro = _this$props.showIntro,
        themeColors = _this$props.themeColors,
        token = _this$props.token;
    setDevMode(devMode);
    store.dispatch(changeFcmToken(fcmToken));
    store.dispatch(changeThemeColors(themeColors));
    store.dispatch(changeToken(token));

    if (showIntro) {
      store.dispatch(changeIntroSlides(introSlides));
    }

    return _this;
  }

  var _proto = Prixa.prototype;

  _proto.render = function render() {
    var _this$props2 = this.props,
        intent = _this$props2.intent,
        onClose = _this$props2.onClose,
        onDestinationChange = _this$props2.onDestinationChange;
    return /*#__PURE__*/React__default['default'].createElement(reactRedux.Provider, {
      store: store
    }, /*#__PURE__*/React__default['default'].createElement(PrixaContainer, {
      onNavigationStateChange: this.handleNavigationStateChange,
      screenProps: {
        intent: intent,
        onClose: onClose,
        onDestinationChange: onDestinationChange
      }
    }));
  };

  return Prixa;
}(React__default['default'].Component);

_defineProperty(Prixa, "defaultProps", {
  devMode: false,
  fcmToken: null,
  intent: null,
  introSlides: [],
  onClose: function onClose() {},
  onDestinationChange: function onDestinationChange() {},
  showIntro: true,
  themeColors: {}
});

_defineProperty(Prixa, "propTypes", {
  devMode: PropTypes__default['default'].bool,
  fcmToken: PropTypes__default['default'].string,
  intent: PropTypes__default['default'].shape({
    action: PropTypes__default['default'].string.isRequired
  }),
  introSlides: PropTypes__default['default'].array,
  onClose: PropTypes__default['default'].func,
  onDestinationChange: PropTypes__default['default'].func,
  showIntro: PropTypes__default['default'].bool,
  themeColors: PropTypes__default['default'].shape({
    darkerPrimary: PropTypes__default['default'].string,
    darkestPrimary: PropTypes__default['default'].string,
    lighterPrimary: PropTypes__default['default'].string,
    lightestPrimary: PropTypes__default['default'].string,
    primary: PropTypes__default['default'].string
  }),
  token: PropTypes__default['default'].string.isRequired
});

exports.default = Prixa;
//# sourceMappingURL=prixa-telemedicine-rn-sdk.cjs.js.map