Advertisement
zidniryi

ComponentProfilOrder

May 28th, 2020
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.79 KB | None | 0 0
  1. import React, { Component } from 'react'
  2. import { Text, View, Image, Linking, Platform, TouchableOpacity } from 'react-native'
  3. import { Grid, Section, Block } from 'react-native-responsive-layout'
  4. import { Avatar } from 'react-native-paper'
  5. import Icon from 'react-native-vector-icons/FontAwesome'
  6. import { withNavigation } from 'react-navigation'
  7. import styles from '../styles/StyleProfilOrder'
  8. import {
  9. responsiveFontSize
  10. } from 'react-native-responsive-dimensions'
  11. import { TouchableWithoutFeedback } from 'react-native-gesture-handler'
  12. import API from '../../../../services/api'
  13. import AsyncStorage from '@react-native-community/async-storage'
  14. import Config from 'react-native-config'
  15.  
  16. class ComponentProfilOrder extends Component {
  17. constructor(props) {
  18. super(props)
  19. this.state = {}
  20. }
  21. // Linking call
  22. makeCall = (vendor_phone_number) => {
  23. let phoneNumber = ''
  24. let num = vendor_phone_number
  25.  
  26. if (Platform.OS === 'android') {
  27. phoneNumber = `tel:${num}`
  28. } else {
  29. phoneNumber = `telprompt:${vendor_phone_number}`
  30. }
  31.  
  32. Linking.openURL(phoneNumber)
  33. }
  34.  
  35. // SMS
  36. sms(vendor_phone_number) {
  37. const phoneNumber = vendor_phone_number
  38. const url =
  39. Platform.OS === 'android'
  40. ? `sms:${phoneNumber}?body=Hi Ditunggu Orderannya ya`
  41. : `sms:${phoneNumber}`
  42. Linking.canOpenURL(url)
  43. .then((supported) => {
  44. if (!supported) {
  45. console.log('Unsupported url: ' + url)
  46. } else {
  47. return Linking.openURL(url)
  48. }
  49. })
  50. .catch((err) => console.error('An error occurred', err))
  51. }
  52.  
  53. /**
  54. * Add Tracking for customer when customer press button call or chat
  55. * @param {*} action
  56. */
  57. async addTracking(action) {
  58. API.post('order/customer-actions/customeraction',
  59. {
  60. orderId: this.props.orderDataDetail.id,
  61. action: action
  62. },
  63. {
  64. headers: {
  65. Authorization:
  66. 'Bearer ' + (await AsyncStorage.getItem(Config.ACCESS_TOKEN))
  67. }
  68. }
  69. )
  70. .then((response) => {
  71. console.log('Response from tracking ', response)
  72. })
  73. .catch((error) => {
  74. console.log('Error from tracking ', error.response)
  75. })
  76. }
  77.  
  78. render() {
  79. const { orderDataDetail } = this.props
  80. return (
  81. <Grid>
  82. <Section>
  83. <Block size="100%">
  84. <View style={styles.viewRow}>
  85.  
  86. <Avatar.Image
  87. size={64}
  88. style={styles.avatarImage}
  89. source={{
  90. uri: `https://storage.googleapis.com/halojasa-content-production/${this.props.orderDataDetail.user_vendor_profile_picture}`
  91. }}
  92. />
  93. <View style={styles.viewColumn}>
  94. <Text style={styles.textName}>
  95. {' '}
  96. {orderDataDetail.user_vendor_full_name}{' '}
  97. </Text>
  98. <View style={styles.viewRow}>
  99. <Icon
  100. name="star"
  101. style={{
  102. fontSize: responsiveFontSize(2),
  103. color: 'orange',
  104. marginLeft: 18
  105. }}
  106. />
  107. <Text style={styles.textRate}>
  108. {!orderDataDetail.vendor_data ? 'Loading' : orderDataDetail.vendor_data.vendor_rating.toPrecision(2)}
  109. </Text>
  110. </View>
  111. </View>
  112. <View style={styles.viewRowButton}>
  113. <TouchableWithoutFeedback
  114. onPress={() => {
  115. this.addTracking('chat')
  116. this.props.navigation.navigate('ChatScreen', {
  117. orderDataDetail: orderDataDetail,
  118. imageChat: `https://storage.googleapis.com/halojasa-content-production/${this.props.orderDataDetail.user_vendor_profile_picture}`
  119. })
  120. }
  121. }
  122. >
  123. <View style={styles.viewButtonContact}>
  124. <Image
  125. source={require('assets_dir/images/chat.png')}
  126. style={styles.imgChat}
  127. resizeMode={'contain'}
  128. />
  129. <Text style={styles.textContact}>Chat</Text>
  130. </View>
  131. </TouchableWithoutFeedback>
  132. <TouchableWithoutFeedback
  133. onPress={() => {
  134. this.addTracking('call')
  135. this.makeCall(this.props.vendorData.phoneNumber)
  136. }}
  137. >
  138. <View style={styles.viewButtonContactGreen}>
  139. <Image
  140. source={require('assets_dir/images/ic_call2.png')}
  141. style={styles.imgChat}
  142. resizeMode={'contain'}
  143. />
  144. <Text style={styles.textContact}>CALL</Text>
  145. </View>
  146. </TouchableWithoutFeedback>
  147. </View>
  148. </View>
  149. </Block>
  150. </Section>
  151. <View style={styles.line}/>
  152. <View style={styles.viewRowTemp}>
  153. <View style={styles.viewContent}>
  154. <View>
  155. <Image
  156. resizeMode={'contain'}
  157. source={require('assets_dir/images/icon_termometer.png')}
  158. style={styles.imageIcon}
  159. />
  160. </View>
  161. <View>
  162. <View>
  163. <Text style={styles.textTemp}>Suhu Badan Hari Ini</Text>
  164. </View>
  165. <View style={styles.viewPurpleBadge}>
  166. <Text style={styles.textBadge}>{this.props.orderDataDetail.BodyTemperature ? this.props.orderDataDetail.BodyTemperature.temperature: 'Loading ..' } °C</Text>
  167. </View>
  168. </View>
  169. <View>
  170. <TouchableOpacity
  171. onPress={() => this.props.navigation.navigate('TemperatureScreen', {bodyTemperature: this.props.orderDataDetail.BodyTemperature})}
  172. disabled={this.props.orderDataDetail.BodyTemperature ? false : true}
  173. activeOpacity={0,6}>
  174. <View style={styles.viewButtonPurple}>
  175. <Text style={styles.textShow}>
  176. {this.props.orderDataDetail.BodyTemperature ? 'Show' : 'Loading'}
  177. </Text>
  178. <Icon
  179. name="angle-right"
  180. style={styles.iconAngle}
  181. />
  182. </View>
  183. </TouchableOpacity>
  184. </View>
  185. </View>
  186. </View>
  187. <View style={styles.separate} />
  188. </Grid>
  189. )
  190. }
  191. }
  192.  
  193.  
  194. export default withNavigation(ComponentProfilOrder)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement