ordering-ui-react-native 0.17.71 → 0.17.72-release

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/package.json +8 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessInformation/index.tsx +10 -9
  4. package/src/components/BusinessesListing/index.tsx +1 -1
  5. package/src/components/OrderCreating/index.tsx +1 -21
  6. package/src/components/PaymentOptionsWebView/index.tsx +29 -8
  7. package/src/components/PhoneInputNumber/index.tsx +6 -2
  8. package/src/components/StripeMethodForm/index.tsx +136 -102
  9. package/src/components/VerifyPhone/styles.tsx +1 -2
  10. package/src/components/shared/OToast.tsx +3 -2
  11. package/src/types/index.tsx +5 -0
  12. package/src/utils/index.tsx +5 -0
  13. package/themes/business/index.tsx +2 -0
  14. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +28 -24
  15. package/themes/business/src/components/BusinessController/index.tsx +0 -1
  16. package/themes/business/src/components/Chat/index.tsx +149 -118
  17. package/themes/business/src/components/DriverMap/index.tsx +17 -6
  18. package/themes/business/src/components/DriverSchedule/index.tsx +45 -8
  19. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  20. package/themes/business/src/components/LoginForm/Otp/index.tsx +31 -3
  21. package/themes/business/src/components/LoginForm/index.tsx +15 -22
  22. package/themes/business/src/components/MapView/index.tsx +10 -10
  23. package/themes/business/src/components/MessagesOption/index.tsx +20 -93
  24. package/themes/business/src/components/NewOrderNotification/index.tsx +35 -21
  25. package/themes/business/src/components/NotFoundSource/index.tsx +2 -2
  26. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  27. package/themes/business/src/components/OrderDetails/Delivery.tsx +191 -6
  28. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +103 -39
  29. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +61 -60
  30. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
  31. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  32. package/themes/business/src/components/OrderMessage/index.tsx +19 -18
  33. package/themes/business/src/components/OrderSummary/index.tsx +114 -123
  34. package/themes/business/src/components/OrdersOption/index.tsx +17 -15
  35. package/themes/business/src/components/PreviousMessages/FooterMessageComponent.tsx +103 -0
  36. package/themes/business/src/components/PreviousMessages/index.tsx +97 -55
  37. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +17 -12
  38. package/themes/business/src/components/PreviousOrders/OrderList.tsx +88 -0
  39. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +1 -1
  40. package/themes/business/src/components/PreviousOrders/index.tsx +186 -114
  41. package/themes/business/src/components/PreviousOrders/styles.tsx +1 -1
  42. package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
  43. package/themes/business/src/components/ReviewCustomer/index.tsx +18 -13
  44. package/themes/business/src/components/StoresList/index.tsx +3 -4
  45. package/themes/business/src/components/UserProfileForm/index.tsx +14 -15
  46. package/themes/business/src/components/shared/OLink.tsx +11 -3
  47. package/themes/business/src/components/shared/OModal.tsx +16 -9
  48. package/themes/business/src/components/shared/OText.tsx +6 -1
  49. package/themes/business/src/types/index.tsx +25 -10
  50. package/themes/business/src/utils/index.tsx +29 -2
  51. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  52. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  53. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  54. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  55. package/themes/kiosk/src/components/Intro/index.tsx +16 -1
  56. package/themes/kiosk/src/components/LoginForm/index.tsx +7 -9
  57. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  58. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  59. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  60. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +2 -2
  61. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  62. package/themes/original/index.tsx +1 -1
  63. package/themes/original/src/components/AddressDetails/index.tsx +19 -3
  64. package/themes/original/src/components/AddressForm/index.tsx +61 -39
  65. package/themes/original/src/components/AddressList/index.tsx +25 -24
  66. package/themes/original/src/components/AddressList/styles.tsx +4 -2
  67. package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
  68. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  69. package/themes/original/src/components/AppleLogin/styles.tsx +3 -1
  70. package/themes/original/src/components/BusinessBasicInformation/index.tsx +153 -96
  71. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +10 -12
  72. package/themes/original/src/components/BusinessController/index.tsx +80 -66
  73. package/themes/original/src/components/BusinessController/styles.tsx +12 -5
  74. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  75. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  76. package/themes/original/src/components/BusinessInformation/index.tsx +139 -85
  77. package/themes/original/src/components/BusinessItemAccordion/index.tsx +15 -20
  78. package/themes/original/src/components/BusinessListingSearch/index.tsx +349 -339
  79. package/themes/original/src/components/BusinessListingSearch/styles.tsx +0 -18
  80. package/themes/original/src/components/BusinessPreorder/index.tsx +103 -19
  81. package/themes/original/src/components/BusinessProductsCategories/index.tsx +1 -2
  82. package/themes/original/src/components/BusinessProductsList/index.tsx +15 -7
  83. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  84. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
  85. package/themes/original/src/components/BusinessProductsListing/index.tsx +684 -555
  86. package/themes/original/src/components/BusinessProductsListing/styles.tsx +2 -2
  87. package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
  88. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +69 -38
  89. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +0 -1
  90. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  91. package/themes/original/src/components/Cart/index.tsx +77 -79
  92. package/themes/original/src/components/CartContent/index.tsx +117 -20
  93. package/themes/original/src/components/CartContent/styles.tsx +17 -7
  94. package/themes/original/src/components/Checkout/index.tsx +356 -124
  95. package/themes/original/src/components/CitiesControl/index.tsx +1 -1
  96. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  97. package/themes/original/src/components/DriverTips/index.tsx +52 -34
  98. package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
  99. package/themes/original/src/components/Favorite/index.tsx +2 -6
  100. package/themes/original/src/components/FavoriteList/index.tsx +1 -35
  101. package/themes/original/src/components/FloatingButton/index.tsx +10 -13
  102. package/themes/original/src/components/GPSButton/index.tsx +6 -4
  103. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +96 -0
  104. package/themes/original/src/components/GiftCard/GiftCardUI/styles.tsx +5 -0
  105. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +100 -0
  106. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +8 -0
  107. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +191 -0
  108. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +8 -0
  109. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +165 -0
  110. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +9 -0
  111. package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
  112. package/themes/original/src/components/GoogleMap/index.tsx +60 -5
  113. package/themes/original/src/components/Help/index.tsx +2 -2
  114. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +10 -31
  115. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +5 -3
  116. package/themes/original/src/components/HelpGuide/index.tsx +6 -6
  117. package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
  118. package/themes/original/src/components/HelpOrder/index.tsx +6 -15
  119. package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
  120. package/themes/original/src/components/Home/index.tsx +13 -4
  121. package/themes/original/src/components/LastOrder/index.tsx +1 -34
  122. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -25
  123. package/themes/original/src/components/LoginForm/index.tsx +64 -34
  124. package/themes/original/src/components/LottieAnimation/index.tsx +88 -63
  125. package/themes/original/src/components/MessageListing/index.tsx +16 -42
  126. package/themes/original/src/components/Messages/index.tsx +14 -7
  127. package/themes/original/src/components/MomentOption/index.tsx +193 -90
  128. package/themes/original/src/components/MomentSelector/index.tsx +1 -1
  129. package/themes/original/src/components/MultiCart/index.tsx +41 -54
  130. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +162 -50
  131. package/themes/original/src/components/MultiCheckout/index.tsx +329 -100
  132. package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
  133. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
  134. package/themes/original/src/components/MultiOrdersDetails/index.tsx +54 -21
  135. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
  136. package/themes/original/src/components/MyOrders/index.tsx +40 -29
  137. package/themes/original/src/components/NavBar/index.tsx +20 -17
  138. package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
  139. package/themes/original/src/components/Notifications/index.tsx +42 -52
  140. package/themes/original/src/components/Notifications/styles.tsx +6 -3
  141. package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
  142. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +21 -5
  143. package/themes/original/src/components/OrderDetails/index.tsx +191 -363
  144. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  145. package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
  146. package/themes/original/src/components/OrderProgress/index.tsx +30 -56
  147. package/themes/original/src/components/OrderSummary/index.tsx +88 -59
  148. package/themes/original/src/components/OrderTypeSelector/index.tsx +2 -1
  149. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +14 -14
  150. package/themes/original/src/components/OrdersOption/index.tsx +68 -87
  151. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  152. package/themes/original/src/components/PageBanner/index.tsx +98 -38
  153. package/themes/original/src/components/PageBanner/styles.tsx +0 -10
  154. package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
  155. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  156. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  157. package/themes/original/src/components/PaymentOptions/index.tsx +78 -35
  158. package/themes/original/src/components/PhoneInputNumber/index.tsx +18 -4
  159. package/themes/original/src/components/ProductForm/index.tsx +104 -29
  160. package/themes/original/src/components/ProductForm/styles.tsx +5 -5
  161. package/themes/original/src/components/ProductItemAccordion/index.tsx +12 -9
  162. package/themes/original/src/components/ProductOptionSubOption/index.tsx +20 -18
  163. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +5 -9
  164. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  165. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
  166. package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
  167. package/themes/original/src/components/Promotions/index.tsx +2 -2
  168. package/themes/original/src/components/Promotions/styles.tsx +3 -1
  169. package/themes/original/src/components/ReviewProducts/index.tsx +16 -7
  170. package/themes/original/src/components/ScheduleAccordion/index.tsx +3 -3
  171. package/themes/original/src/components/ServiceForm/index.tsx +66 -17
  172. package/themes/original/src/components/Sessions/index.tsx +11 -8
  173. package/themes/original/src/components/Sessions/styles.tsx +5 -0
  174. package/themes/original/src/components/SignupForm/index.tsx +43 -27
  175. package/themes/original/src/components/SingleOrderCard/index.tsx +102 -63
  176. package/themes/original/src/components/SingleOrderCard/styles.tsx +1 -1
  177. package/themes/original/src/components/SingleProductCard/index.tsx +72 -31
  178. package/themes/original/src/components/SingleProductCard/styles.tsx +20 -4
  179. package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
  180. package/themes/original/src/components/StripeCardsList/index.tsx +49 -5
  181. package/themes/original/src/components/StripeElementsForm/index.tsx +48 -34
  182. package/themes/original/src/components/StripeElementsForm/naked.tsx +12 -1
  183. package/themes/original/src/components/UpsellingProducts/index.tsx +238 -224
  184. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  185. package/themes/original/src/components/UserDetails/index.tsx +3 -1
  186. package/themes/original/src/components/UserFormDetails/index.tsx +76 -7
  187. package/themes/original/src/components/UserFormDetails/styles.tsx +1 -1
  188. package/themes/original/src/components/UserProfile/index.tsx +88 -79
  189. package/themes/original/src/components/UserProfileForm/index.tsx +17 -21
  190. package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
  191. package/themes/original/src/components/UserVerification/index.tsx +55 -50
  192. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  193. package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
  194. package/themes/original/src/components/Wallets/index.tsx +66 -30
  195. package/themes/original/src/components/Wallets/styles.tsx +3 -4
  196. package/themes/original/src/components/shared/OButton.tsx +6 -2
  197. package/themes/original/src/components/shared/OInput.tsx +6 -1
  198. package/themes/original/src/components/shared/OModal.tsx +3 -3
  199. package/themes/original/src/types/index.tsx +41 -11
  200. package/themes/original/src/utils/index.tsx +273 -1
  201. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -16,6 +16,8 @@ import {
16
16
  useToast,
17
17
  ToastType
18
18
  } from 'ordering-components/native';
19
+ import { DeviceOrientationMethods } from '../../../../../src/hooks/DeviceOrientation'
20
+
19
21
  import { GooglePlacesAutocomplete } from 'react-native-google-places-autocomplete';
20
22
  import Spinner from 'react-native-loading-spinner-overlay';
21
23
  import { useForm, Controller } from 'react-hook-form';
@@ -38,6 +40,8 @@ import {
38
40
  import { GPSButton } from '../GPSButton';
39
41
  import { ScrollView } from 'react-native-gesture-handler';
40
42
 
43
+ const { useDeviceOrientation } = DeviceOrientationMethods
44
+
41
45
  const inputNames = [
42
46
  { name: 'address', code: 'Address' },
43
47
  { name: 'internal_number', code: 'Internal number' },
@@ -62,9 +66,12 @@ const AddressFormUI = (props: AddressFormParams) => {
62
66
  isFromProductsList,
63
67
  hasAddressDefault,
64
68
  afterSignup,
69
+ businessSlug
65
70
  } = props;
66
71
 
67
72
  const theme = useTheme();
73
+ const [orientationState] = useDeviceOrientation();
74
+
68
75
  const [autoCompleteInputFocused, setAutoCompleteInputFocused] = useState(false)
69
76
 
70
77
  const tagsName = [
@@ -74,6 +81,8 @@ const AddressFormUI = (props: AddressFormParams) => {
74
81
  { icon: theme.images.general.tag_plus, value: 'other' },
75
82
  ];
76
83
 
84
+ const HEIGHT_SCREEN = orientationState?.dimensions?.height
85
+
77
86
  const styles = StyleSheet.create({
78
87
  iconContainer: {
79
88
  display: 'flex',
@@ -113,8 +122,8 @@ const AddressFormUI = (props: AddressFormParams) => {
113
122
  width: 16
114
123
  },
115
124
  wrapperNavbar: Platform.OS === 'ios'
116
- ? { paddingVertical: 0, paddingHorizontal: 40 }
117
- : { paddingVertical: 20, paddingHorizontal: 40 }
125
+ ? { paddingVertical: 0, paddingLeft: 40, paddingRight: 20 }
126
+ : { paddingVertical: 10, paddingLeft: 40, paddingRight: 20 }
118
127
  });
119
128
 
120
129
  const [, t] = useLanguage();
@@ -160,12 +169,13 @@ const AddressFormUI = (props: AddressFormParams) => {
160
169
  const maxLimitLocation =
161
170
  configState?.configs?.meters_to_change_address?.value;
162
171
  const countryCode = configState?.configs?.country_autocomplete?.value
163
- const continueAsGuest = () => navigation.navigate('BusinessList', { isGuestUser: true });
172
+ const isHideMap = theme?.address?.components?.map?.hidden
173
+ const isHideIcons = theme?.address?.components?.icons?.hidden
174
+ const continueAsGuest = () => navigation.navigate(!!businessSlug ? 'Business' : 'BusinessList', { isGuestUser: true });
164
175
  const goToBack = () => navigation?.canGoBack() && navigation.goBack();
165
176
 
166
177
  const getAddressFormatted = (address: any) => {
167
178
  const data: any = { address: null, error: null };
168
- Geocoder.init(googleMapsApiKey);
169
179
  Geocoder.from(address)
170
180
  .then((json) => {
171
181
  if (json.results && json.results?.length > 0) {
@@ -341,6 +351,9 @@ const AddressFormUI = (props: AddressFormParams) => {
341
351
  map_data: { library: 'google', place_id: data.place_id },
342
352
  zip_code: data?.zip_code || null,
343
353
  };
354
+ if (googleInput?.current) {
355
+ googleInput?.current?.setAddressText(addressSelected.address);
356
+ }
344
357
  updateChanges(addressSelected);
345
358
  };
346
359
 
@@ -362,7 +375,7 @@ const AddressFormUI = (props: AddressFormParams) => {
362
375
  if (
363
376
  orderState.loading &&
364
377
  !addressesList &&
365
- orderState.options.address &&
378
+ orderState?.options?.address &&
366
379
  auth &&
367
380
  !afterSignup
368
381
  ) {
@@ -370,7 +383,7 @@ const AddressFormUI = (props: AddressFormParams) => {
370
383
  ? navigation.navigate('BottomTab')
371
384
  : navigation.navigate('Business');
372
385
  }
373
- }, [orderState.options.address]);
386
+ }, [orderState?.options?.address]);
374
387
 
375
388
  useEffect(() => {
376
389
  if (alertState.open && alertState?.key !== 'ERROR_MAX_LIMIT_LOCATION') {
@@ -423,16 +436,16 @@ const AddressFormUI = (props: AddressFormParams) => {
423
436
  if (isEditing) {
424
437
  if (formState?.changes?.location) {
425
438
  const prevLocation = {
426
- lat: Math.trunc(locationChange.lat),
427
- lng: Math.trunc(locationChange.lng),
439
+ lat: locationChange?.lat?.toFixed(5),
440
+ lng: locationChange?.lng?.toFixed(5),
428
441
  };
429
442
  const newLocation = {
430
- lat: Math.trunc(formState?.changes?.location?.lat),
431
- lng: Math.trunc(formState?.changes?.location?.lng),
443
+ lat: formState?.changes?.location?.lat?.toFixed(5),
444
+ lng: formState?.changes?.location?.lng?.toFixed(5),
432
445
  };
433
446
  if (
434
- prevLocation.lat !== newLocation.lat &&
435
- prevLocation.lng !== newLocation.lng
447
+ prevLocation?.lat !== newLocation?.lat &&
448
+ prevLocation?.lng !== newLocation?.lng
436
449
  ) {
437
450
  setLocationChange(formState?.changes?.location);
438
451
  }
@@ -477,6 +490,10 @@ const AddressFormUI = (props: AddressFormParams) => {
477
490
  }
478
491
  }, []);
479
492
 
493
+ useEffect(() => {
494
+ Geocoder.init(googleMapsApiKey);
495
+ }, [googleMapsApiKey]);
496
+
480
497
  useEffect(() => {
481
498
  const keyboardDidShowListener = Keyboard.addListener(
482
499
  'keyboardDidShow',
@@ -514,14 +531,14 @@ const AddressFormUI = (props: AddressFormParams) => {
514
531
  titleAlign={'center'}
515
532
  onActionLeft={goToBack}
516
533
  showCall={false}
517
- btnStyle={{ paddingLeft: 0 }}
518
- style={{ marginTop: Platform.OS === 'ios' ? 0 : 30 }}
519
- titleWrapStyle={{ paddingHorizontal: 0 }}
520
- titleStyle={{ marginRight: 0, marginLeft: 0 }}
534
+ btnStyle={{ paddingLeft: 0, paddingRight: 5 }}
535
+ style={{ marginTop: Platform.OS === 'ios' ? 0 : 10 }}
536
+ titleWrapStyle={{ paddingHorizontal: 0, width: '100%' }}
537
+ titleStyle={{ marginRight: 0, marginLeft: 0, paddingRight: 5 }}
521
538
  />
522
539
  </View>
523
540
  <TouchableWithoutFeedback onPress={Keyboard.dismiss}>
524
- <AddressFormContainer style={{ height: 600, overflow: 'scroll' }}>
541
+ <AddressFormContainer style={{ overflow: 'scroll' }}>
525
542
  <View>
526
543
  <FormInput>
527
544
  <AutocompleteInput>
@@ -626,12 +643,13 @@ const AddressFormUI = (props: AddressFormParams) => {
626
643
  }
627
644
  }}
628
645
  IconButton={<OIcon src={theme.images.general.pin} width={16} />}
646
+ isIntGeoCoder
629
647
  />
630
648
  </View>
631
649
  )}
632
650
  </AutocompleteInput>
633
651
 
634
- {(locationChange || formState.changes?.location) && (
652
+ {!isHideMap && (locationChange || formState.changes?.location) && (
635
653
  <View
636
654
  style={{
637
655
  height: 189,
@@ -647,6 +665,7 @@ const AddressFormUI = (props: AddressFormParams) => {
647
665
  saveLocation={saveMapLocation}
648
666
  setSaveLocation={setSaveMapLocation}
649
667
  handleToggleMap={handleToggleMap}
668
+ isIntGeoCoder
650
669
  />
651
670
  </GoogleMapContainer>
652
671
  </View>
@@ -789,27 +808,29 @@ const AddressFormUI = (props: AddressFormParams) => {
789
808
  />
790
809
  )}
791
810
  </FormInput>
792
- <IconsContainer>
793
- {tagsName.map((tag) => (
794
- <TouchableOpacity
795
- key={tag.value}
796
- onPress={() => handleAddressTag(tag.value)}>
797
- <View
798
- style={{
799
- ...styles.iconContainer,
800
- }}>
801
- <OIcon
802
- src={tag.icon}
803
- width={24}
804
- color={
805
- addressTag === tag.value ?
806
- theme.colors.primary : theme.colors.disabled
807
- }
808
- />
809
- </View>
810
- </TouchableOpacity>
811
- ))}
812
- </IconsContainer>
811
+ {!isHideIcons && (
812
+ <IconsContainer>
813
+ {tagsName.map((tag) => (
814
+ <TouchableOpacity
815
+ key={tag.value}
816
+ onPress={() => handleAddressTag(tag.value)}>
817
+ <View
818
+ style={{
819
+ ...styles.iconContainer,
820
+ }}>
821
+ <OIcon
822
+ src={tag.icon}
823
+ width={24}
824
+ color={
825
+ addressTag === tag.value ?
826
+ theme.colors.primary : theme.colors.disabled
827
+ }
828
+ />
829
+ </View>
830
+ </TouchableOpacity>
831
+ ))}
832
+ </IconsContainer>
833
+ )}
813
834
  </View>
814
835
 
815
836
  <View>
@@ -855,6 +876,7 @@ const AddressFormUI = (props: AddressFormParams) => {
855
876
  saveLocation={saveMapLocation}
856
877
  setSaveLocation={setSaveMapLocation}
857
878
  handleToggleMap={handleToggleMap}
879
+ isIntGeoCoder
858
880
  />
859
881
  </GoogleMapContainer>
860
882
  )}
@@ -1,9 +1,8 @@
1
1
  import React, { useEffect } from 'react'
2
2
  import { AddressList as AddressListController, useLanguage, useOrder, useSession } from 'ordering-components/native'
3
- import { AddressListContainer, AddressItem } from './styles'
3
+ import { AddressItem, Container } from './styles'
4
4
  import { Platform, RefreshControl, StyleSheet, View } from 'react-native'
5
5
  import { OButton, OText, OAlert, OModal, OIcon } from '../shared'
6
- import { Container } from '../../layouts/Container'
7
6
  import { AddressListParams } from '../../types'
8
7
  import { NotFoundSource } from '../NotFoundSource'
9
8
  import NavBar from '../NavBar'
@@ -40,9 +39,6 @@ const AddressListUI = (props: AddressListParams) => {
40
39
 
41
40
  const [isProfile, setIsProfile] = useState(isFromProfile || route?.params?.isFromProfile);
42
41
 
43
- const goToBack = () => navigation?.canGoBack() && navigation.goBack()
44
- const onNavigationRedirect = (route: string, params?: any) => navigation.navigate(route, params)
45
-
46
42
  const onNavigatorRedirect = () => {
47
43
  if (route && (isFromBusinesses || isGoBack)) {
48
44
  isGoBack ? goToBack() : onNavigationRedirect('BottomTab')
@@ -104,7 +100,6 @@ const AddressListUI = (props: AddressListParams) => {
104
100
  const handleSetAddress = (address: any) => {
105
101
  if (address.id === orderState?.options?.address_id) return
106
102
  handleSetDefault(address)
107
- onNavigatorRedirect()
108
103
  }
109
104
 
110
105
  const handleSaveAddress = (address: any) => {
@@ -133,14 +128,21 @@ const AddressListUI = (props: AddressListParams) => {
133
128
  }
134
129
  }
135
130
 
131
+ const goToBack = () => navigation?.canGoBack() && navigation.goBack()
132
+ const onNavigationRedirect = (route: string, params?: any) => navigation.navigate(route, params)
133
+
134
+ useEffect(() => {
135
+ if (orderState.loading && auth && orderState.options.address?.location) {
136
+ onNavigatorRedirect()
137
+ }
138
+ }, [orderState.options.address])
139
+
136
140
  useEffect(() => {
137
141
  console.log('From profile : ' + isProfile)
138
142
  }, [])
139
143
 
140
144
  return (
141
145
  <Container
142
- pt={20}
143
- noPadding
144
146
  refreshControl={
145
147
  <RefreshControl
146
148
  refreshing={refreshing}
@@ -148,20 +150,18 @@ const AddressListUI = (props: AddressListParams) => {
148
150
  />
149
151
  }
150
152
  >
151
- {isProfile && (
152
- <NavBar
153
- title={t('SAVED_PLACES', 'My saved places')}
154
- titleAlign={'center'}
155
- onActionLeft={goToBack}
156
- showCall={false}
157
- style={{
158
- paddingHorizontal: 40,
159
- marginTop: Platform.OS === 'ios' ? 0 : 10
160
- }}
161
- />
162
- )}
163
153
  {(!addressList.loading || (isFromProductsList || isFromBusinesses || isFromProfile || isProfile)) && (
164
- <AddressListContainer>
154
+ <>
155
+ {isProfile && (
156
+ <NavBar
157
+ title={t('SAVED_PLACES', 'My saved places')}
158
+ titleAlign={'center'}
159
+ onActionLeft={goToBack}
160
+ showCall={false}
161
+ paddingTop={10}
162
+ btnStyle={{ paddingLeft: 0 }}
163
+ />
164
+ )}
165
165
  {
166
166
  route &&
167
167
  (
@@ -177,7 +177,7 @@ const AddressListUI = (props: AddressListParams) => {
177
177
  onActionLeft={() => goToBack()}
178
178
  showCall={false}
179
179
  btnStyle={{ paddingLeft: 0 }}
180
- paddingTop={0}
180
+ paddingTop={10}
181
181
  style={{ marginTop: 0 }}
182
182
  titleWrapStyle={{ paddingHorizontal: 0 }}
183
183
  titleStyle={{ marginLeft: 0, marginRight: 0 }}
@@ -327,7 +327,8 @@ const AddressListUI = (props: AddressListParams) => {
327
327
  />
328
328
  </>
329
329
  )}
330
- </AddressListContainer>
330
+ </>
331
+
331
332
  )}
332
333
  </Container>
333
334
  )
@@ -350,7 +351,7 @@ const styles = StyleSheet.create({
350
351
  },
351
352
  button: {
352
353
  marginTop: 30,
353
- marginBottom: 0,
354
+ marginBottom: 30,
354
355
  borderRadius: 7.6,
355
356
  borderWidth: 1,
356
357
  shadowOpacity: 0,
@@ -1,10 +1,12 @@
1
1
  import styled from 'styled-components/native'
2
2
 
3
- export const AddressListContainer = styled.View`
3
+ export const Container = styled.ScrollView`
4
+ position: relative;
4
5
  flex: 1;
5
6
  paddingLeft: 40px;
6
7
  paddingRight: 40px;
7
- paddingBottom: 20px;
8
+ margin-bottom: 40px;
9
+ padding-top: 10px;
8
10
  `
9
11
 
10
12
  export const AddressItem = styled.TouchableOpacity`
@@ -1,14 +1,49 @@
1
1
  import React, { useEffect, useState } from 'react';
2
- import { createClient, AnalyticsProvider } from '@segment/analytics-react-native';
3
- import { useEvent, useConfig } from 'ordering-components/native';
2
+ import {
3
+ createClient,
4
+ AnalyticsProvider
5
+ } from '@segment/analytics-react-native';
6
+ import { useEvent, useConfig, useLanguage } from 'ordering-components/native';
4
7
 
5
8
  export const AnalyticsSegment = (props: any) => {
6
9
  const { children } = props
7
10
 
8
11
  const [events] = useEvent()
9
12
  const [configState] = useConfig()
13
+ const [, t] = useLanguage()
10
14
  const [segmentClient, setSegmentClient] = useState<any>({})
11
15
 
16
+ const handleProductsSearched = (query: any) => {
17
+ segmentClient.track('Products Searched', {
18
+ query: query
19
+ })
20
+ }
21
+
22
+ const handleProductListViewed = (category: any) => {
23
+ segmentClient.track('Product List Viewed', {
24
+ business_id: category?.business_id,
25
+ category_id: category?.id,
26
+ category: category?.name,
27
+ products: category?.products
28
+ })
29
+ }
30
+
31
+ const handlePromotionViewed = (promotion: any) => {
32
+ segmentClient.track('Promotion Viewed', {
33
+ promotion_id: (promotion?.id || '').toString(),
34
+ name: promotion.name,
35
+ position: promotion.position
36
+ })
37
+ }
38
+
39
+ const handlePromotionClicked = (promotion: any) => {
40
+ segmentClient.track('Promotion Clicked', {
41
+ promotion_id: (promotion?.id || '').toString(),
42
+ name: promotion.name,
43
+ position: promotion.position
44
+ })
45
+ }
46
+
12
47
  const handleClickProduct = (product: any) => {
13
48
  segmentClient.track('Product Clicked', {
14
49
  id: product.id,
@@ -18,6 +53,15 @@ export const AnalyticsSegment = (props: any) => {
18
53
  })
19
54
  }
20
55
 
56
+ const handleProductViewed = (product: any) => {
57
+ segmentClient.track('Product Viewed', {
58
+ id: product.id,
59
+ name: product.name,
60
+ category: product.category_id,
61
+ price: product.price
62
+ })
63
+ }
64
+
21
65
  const handleProductAdded = (product: any) => {
22
66
  segmentClient.track('Product Added', {
23
67
  id: product.id,
@@ -38,6 +82,23 @@ export const AnalyticsSegment = (props: any) => {
38
82
  })
39
83
  }
40
84
 
85
+ const handleCartViewed = (cart: any) => {
86
+ segmentClient.track('Cart Viewed', {
87
+ id: cart.uuid,
88
+ products: cart?.products
89
+ })
90
+ }
91
+
92
+ const handleCheckoutStarted = (cart: any) => {
93
+ segmentClient.track('Checkout Started', {
94
+ cart_id: cart?.uuid,
95
+ affiliation: cart?.business?.name,
96
+ revenue: cart?.total,
97
+ tax: cart?.tax_total,
98
+ shipping: cart?.delivery_zone_price
99
+ })
100
+ }
101
+
41
102
  const handleOrderPlaced = (order: any) => {
42
103
  segmentClient.track('Order Placed', {
43
104
  id: order.id,
@@ -65,6 +126,35 @@ export const AnalyticsSegment = (props: any) => {
65
126
  tax: order.tax_total,
66
127
  shipping: order.delivery_zone_price
67
128
  })
129
+
130
+ if (order?.history?.length) {
131
+ const lasthistory = order.history[order.history.length - 1]
132
+ if (lasthistory?.data) {
133
+ lasthistory.data.forEach(item => {
134
+ if (item.attribute === 'status') {
135
+ if (item.new === 15) {
136
+ segmentClient.track('Order Completed', {
137
+ id: order.id,
138
+ affiliation: order.business?.name,
139
+ revenue: order.total,
140
+ tax: order.tax_total,
141
+ shipping: order.delivery_zone_price
142
+ })
143
+ }
144
+ const orderCancelled = [2, 5, 6, 10, 12, 16, 17]
145
+ if (orderCancelled.includes(item.new)) {
146
+ segmentClient.track('Order Cancelled', {
147
+ id: order.id,
148
+ affiliation: order.business?.name,
149
+ revenue: order.total,
150
+ tax: order.tax_total,
151
+ shipping: order.delivery_zone_price
152
+ })
153
+ }
154
+ }
155
+ })
156
+ }
157
+ }
68
158
  }
69
159
 
70
160
  const handleAddOrder = (order: any) => {
@@ -77,6 +167,51 @@ export const AnalyticsSegment = (props: any) => {
77
167
  })
78
168
  }
79
169
 
170
+ const handleCouponEntered = (cart: any) => {
171
+ segmentClient.track('Coupon Entered', {
172
+ cart_id: cart.uuid,
173
+ coupon: cart.coupon
174
+ })
175
+ }
176
+
177
+ const handleCouponApplied = (cart: any) => {
178
+ const coupon: any = cart?.offers?.find(offer => offer.type === 2)
179
+ if (coupon) {
180
+ segmentClient.track('Coupon Applied', {
181
+ cart_id: cart.uuid,
182
+ coupon_id: coupon.id,
183
+ coupon_name: coupon?.name,
184
+ discount: coupon?.summary?.discount
185
+ })
186
+ }
187
+ }
188
+
189
+ const handleCouponDenied = (coupon: any) => {
190
+ segmentClient.track('Coupon Denied', {
191
+ business_id: coupon.business_id,
192
+ coupon: coupon.coupon,
193
+ user_id: coupon?.user_id,
194
+ reason: typeof coupon.reason === 'string' ? t(coupon.reason) : t(coupon.reason[0])
195
+ })
196
+ }
197
+
198
+ const handleCouponRemoved = (coupon: any) => {
199
+ segmentClient.track('Coupon Removed', {
200
+ business_id: coupon.business_id,
201
+ coupon_id: coupon.offer_id,
202
+ })
203
+ }
204
+
205
+ const handleProductReviewed = (products: any) => {
206
+ products.forEach((product: any) => {
207
+ segmentClient.track('Product Reviewed', {
208
+ product_id: product.product_id,
209
+ review_body: product.comment,
210
+ rating: product.qualification
211
+ })
212
+ })
213
+ }
214
+
80
215
  const handleLogin = (data: any) => {
81
216
  segmentClient.identify(data.id, {
82
217
  email: data.email,
@@ -84,25 +219,74 @@ export const AnalyticsSegment = (props: any) => {
84
219
  })
85
220
  }
86
221
 
222
+ const handleProductAddedToWishlist = (product: any) => {
223
+ segmentClient.track('Product Added to Wishlist', product)
224
+ }
225
+
226
+ const handleProductRemovedFromWishlist = (product: any) => {
227
+ segmentClient.track('Product Removed from Wishlist', product)
228
+ }
229
+
230
+ const handleWishlistProductAddedToCart = (product: any, result: any) => {
231
+ segmentClient.track('Wishlist Product Added to Cart', {
232
+ cart_id: result.uuid,
233
+ product_id: product.id,
234
+ name: product.name,
235
+ category: product.categoryId,
236
+ price: product.price,
237
+ quantity: product.quantity
238
+ })
239
+ }
240
+
87
241
  useEffect(() => {
88
242
  if (segmentClient?.config?.writeKey) {
243
+ events.on('products_searched', handleProductsSearched)
244
+ events.on('product_list_viewed', handleProductListViewed)
245
+ events.on('promotion_viewed', handlePromotionViewed)
246
+ events.on('promotion_clicked', handlePromotionClicked)
89
247
  events.on('product_clicked', handleClickProduct)
90
- events.on('userLogin', handleLogin)
248
+ events.on('product_viewed', handleProductViewed)
91
249
  events.on('product_added', handleProductAdded)
92
- events.on('order_placed', handleOrderPlaced)
250
+ events.on('cart_product_removed', handleProductRemoved)
251
+ events.on('cart_viewed', handleCartViewed)
252
+ events.on('checkout_started', handleCheckoutStarted)
93
253
  events.on('order_updated', handleUpdateOrder)
254
+ events.on('coupon_entered', handleCouponEntered)
255
+ events.on('offer_applied', handleCouponApplied)
256
+ events.on('offer_denied', handleCouponDenied)
257
+ events.on('offer_removed', handleCouponRemoved)
258
+ events.on('product_reviewed', handleProductReviewed)
259
+ events.on('userLogin', handleLogin)
260
+ events.on('order_placed', handleOrderPlaced)
94
261
  events.on('order_added', handleAddOrder)
95
- events.on('cart_product_removed', handleProductRemoved)
262
+ events.on('product_added_to_wishlist', handleProductAddedToWishlist)
263
+ events.on('product_removed_from_wishlist', handleProductRemovedFromWishlist)
264
+ events.on('wishlist_product_added_to_cart', handleWishlistProductAddedToCart)
96
265
  }
97
266
  return () => {
98
267
  if (segmentClient?.config?.writeKey) {
268
+ events.off('products_searched', handleProductsSearched)
269
+ events.off('product_list_viewed', handleProductListViewed)
270
+ events.off('promotion_viewed', handlePromotionViewed)
271
+ events.off('promotion_clicked', handlePromotionClicked)
99
272
  events.off('product_clicked', handleClickProduct)
100
- events.off('userLogin', handleLogin)
273
+ events.off('product_viewed', handleProductViewed)
101
274
  events.off('product_added', handleProductAdded)
102
- events.off('order_placed', handleOrderPlaced)
275
+ events.off('cart_product_removed', handleProductRemoved)
276
+ events.off('cart_viewed', handleCartViewed)
277
+ events.off('checkout_started', handleCheckoutStarted)
103
278
  events.off('order_updated', handleUpdateOrder)
279
+ events.off('coupon_entered', handleCouponEntered)
280
+ events.off('offer_applied', handleCouponApplied)
281
+ events.off('offer_denied', handleCouponDenied)
282
+ events.off('offer_removed', handleCouponRemoved)
283
+ events.off('product_reviewed', handleProductReviewed)
284
+ events.off('userLogin', handleLogin)
285
+ events.off('order_placed', handleOrderPlaced)
104
286
  events.off('order_added', handleAddOrder)
105
- events.off('cart_product_removed', handleProductRemoved)
287
+ events.off('product_added_to_wishlist', handleProductAddedToWishlist)
288
+ events.off('product_removed_from_wishlist', handleProductRemovedFromWishlist)
289
+ events.off('wishlist_product_added_to_cart', handleWishlistProductAddedToCart)
106
290
  }
107
291
  }
108
292
  }, [segmentClient])
@@ -110,7 +294,7 @@ export const AnalyticsSegment = (props: any) => {
110
294
  useEffect(() => {
111
295
  if (configState?.configs?.segment_track_id?.value) {
112
296
  const _segmentClient: any = createClient({
113
- writeKey: configState?.configs?.segment_track_id?.value
297
+ writeKey: configState?.configs?.segment_track_id?.value,
114
298
  });
115
299
  setSegmentClient(_segmentClient)
116
300
  }
@@ -122,6 +306,5 @@ export const AnalyticsSegment = (props: any) => {
122
306
  {children}
123
307
  </AnalyticsProvider>
124
308
  </>
125
-
126
309
  )
127
310
  }
@@ -21,7 +21,7 @@ export const AppleLogin = (props: any) => {
21
21
  const [{ configs }] = useConfig();
22
22
  const [credentialStateForUser, updateCredentialStateForUser] = useState<any>(-1);
23
23
 
24
- let user : any= null
24
+ let user: any = null
25
25
 
26
26
  const buttonText = auth
27
27
  ? t('CONTINUE_WITH_APPLE', 'Logout with Apple')
@@ -53,7 +53,7 @@ export const AppleLogin = (props: any) => {
53
53
  }
54
54
  }
55
55
 
56
- const fetchAndUpdateCredentialState = async (updateCredentialStateForUser : any) => {
56
+ const fetchAndUpdateCredentialState = async (updateCredentialStateForUser: any) => {
57
57
  if (user === null) {
58
58
  updateCredentialStateForUser('N/A');
59
59
  } else {
@@ -66,7 +66,7 @@ export const AppleLogin = (props: any) => {
66
66
  }
67
67
  }
68
68
 
69
- const onIOSButtonPress = async (updateCredentialStateForUser : any) => {
69
+ const onIOSButtonPress = async (updateCredentialStateForUser: any) => {
70
70
  try {
71
71
  const appleAuthRequestResponse = await appleAuth.performRequest({
72
72
  requestedOperation: appleAuth.Operation.LOGIN,
@@ -79,7 +79,7 @@ export const AppleLogin = (props: any) => {
79
79
  identityToken,
80
80
  authorizationCode
81
81
  } = appleAuthRequestResponse;
82
-
82
+
83
83
  user = newUser;
84
84
 
85
85
  fetchAndUpdateCredentialState(updateCredentialStateForUser).catch(error =>
@@ -1,6 +1,8 @@
1
1
  import styled from 'styled-components/native'
2
2
 
3
- export const Container = styled.View``
3
+ export const Container = styled.View`
4
+ margin-bottom: 20px;
5
+ `
4
6
 
5
7
  export const AppleButton = styled.TouchableOpacity`
6
8
  background-color: #FFFFFF;