ordering-ui-react-native 0.21.48 → 0.21.49-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 (207) hide show
  1. package/package.json +8 -8
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/PaymentOptionsWebView/index.tsx +1 -0
  5. package/src/components/StripeMethodForm/index.tsx +6 -4
  6. package/src/components/VerifyPhone/styles.tsx +1 -2
  7. package/src/types/index.tsx +3 -1
  8. package/src/utils/index.tsx +2 -2
  9. package/themes/business/index.tsx +6 -0
  10. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +4 -3
  11. package/themes/business/src/components/BusinessController/index.tsx +19 -17
  12. package/themes/business/src/components/BusinessProductList/AccordionDropdown.tsx +63 -0
  13. package/themes/business/src/components/BusinessProductList/IterateCategories.tsx +108 -0
  14. package/themes/business/src/components/BusinessProductList/ProductList.tsx +196 -0
  15. package/themes/business/src/components/BusinessProductList/index.tsx +196 -0
  16. package/themes/business/src/components/BusinessProductList/styles.tsx +10 -0
  17. package/themes/business/src/components/DriverMap/index.tsx +36 -23
  18. package/themes/business/src/components/GoogleMap/index.tsx +15 -8
  19. package/themes/business/src/components/Home/index.tsx +5 -1
  20. package/themes/business/src/components/LanguageSelector/index.tsx +1 -2
  21. package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
  22. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  23. package/themes/business/src/components/MapView/index.tsx +30 -15
  24. package/themes/business/src/components/MessagesOption/index.tsx +2 -1
  25. package/themes/business/src/components/NewOrderNotification/index.tsx +66 -26
  26. package/themes/business/src/components/OrderDetails/Business.tsx +52 -2
  27. package/themes/business/src/components/OrderDetails/Delivery.tsx +30 -11
  28. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +68 -61
  29. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +40 -20
  30. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +220 -0
  31. package/themes/business/src/components/OrderSummary/index.tsx +240 -76
  32. package/themes/business/src/components/OrdersListManager/index.tsx +7 -2
  33. package/themes/business/src/components/OrdersListManager/utils.tsx +1 -1
  34. package/themes/business/src/components/OrdersOption/index.tsx +253 -135
  35. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  36. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +37 -40
  37. package/themes/business/src/components/PreviousOrders/OrderList.tsx +1 -1
  38. package/themes/business/src/components/PreviousOrders/index.tsx +5 -3
  39. package/themes/business/src/components/PreviousOrders/styles.tsx +10 -0
  40. package/themes/business/src/components/PrinterEdition/index.tsx +363 -0
  41. package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
  42. package/themes/business/src/components/PrinterSettings/index.tsx +267 -0
  43. package/themes/business/src/components/PrinterSettings/styles.tsx +30 -0
  44. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  45. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  46. package/themes/business/src/components/SearchBar/index.tsx +2 -1
  47. package/themes/business/src/components/Sessions/index.tsx +187 -0
  48. package/themes/business/src/components/Sessions/styles.tsx +20 -0
  49. package/themes/business/src/components/StoresList/index.tsx +5 -3
  50. package/themes/business/src/components/UserFormDetails/index.tsx +111 -107
  51. package/themes/business/src/components/UserProfileForm/index.tsx +106 -54
  52. package/themes/business/src/components/WebsocketStatus/index.tsx +171 -0
  53. package/themes/business/src/components/WebsocketStatus/styles.tsx +28 -0
  54. package/themes/business/src/components/shared/OInput.tsx +2 -0
  55. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  56. package/themes/business/src/hooks/useLocation.tsx +5 -4
  57. package/themes/business/src/types/index.tsx +21 -5
  58. package/themes/business/src/utils/index.tsx +5 -0
  59. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  60. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  61. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  62. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  63. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  64. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  65. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  66. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  67. package/themes/original/index.tsx +6 -2
  68. package/themes/original/src/components/AddressDetails/index.tsx +20 -10
  69. package/themes/original/src/components/AddressForm/index.tsx +41 -15
  70. package/themes/original/src/components/AddressForm/styles.tsx +1 -1
  71. package/themes/original/src/components/AddressList/index.tsx +18 -4
  72. package/themes/original/src/components/AddressList/styles.tsx +4 -4
  73. package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
  74. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  75. package/themes/original/src/components/BusinessBasicInformation/index.tsx +7 -10
  76. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +1 -1
  77. package/themes/original/src/components/BusinessController/index.tsx +18 -10
  78. package/themes/original/src/components/BusinessController/styles.tsx +8 -7
  79. package/themes/original/src/components/BusinessInformation/styles.tsx +2 -2
  80. package/themes/original/src/components/BusinessItemAccordion/index.tsx +11 -7
  81. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +317 -0
  82. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +96 -0
  83. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +1 -1
  84. package/themes/original/src/components/BusinessListingSearch/index.tsx +47 -358
  85. package/themes/original/src/components/BusinessListingSearch/styles.tsx +1 -1
  86. package/themes/original/src/components/BusinessPreorder/index.tsx +4 -3
  87. package/themes/original/src/components/BusinessProductsCategories/index.tsx +1 -1
  88. package/themes/original/src/components/BusinessProductsList/index.tsx +1 -1
  89. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  90. package/themes/original/src/components/BusinessProductsListing/index.tsx +30 -18
  91. package/themes/original/src/components/BusinessProductsListing/styles.tsx +2 -2
  92. package/themes/original/src/components/BusinessReviews/index.tsx +1 -1
  93. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  94. package/themes/original/src/components/BusinessesListing/Layout/Appointment/styles.tsx +5 -5
  95. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListFooter.tsx +1 -1
  96. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListHeader.tsx +7 -7
  97. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +2 -2
  98. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  99. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  100. package/themes/original/src/components/Cart/index.tsx +32 -9
  101. package/themes/original/src/components/CartContent/index.tsx +96 -58
  102. package/themes/original/src/components/CartStoresListing/styles.tsx +2 -2
  103. package/themes/original/src/components/Checkout/index.tsx +144 -62
  104. package/themes/original/src/components/Checkout/styles.tsx +17 -0
  105. package/themes/original/src/components/CitiesControl/styles.tsx +1 -1
  106. package/themes/original/src/components/DatePicker/index.tsx +18 -2
  107. package/themes/original/src/components/Favorite/index.tsx +9 -9
  108. package/themes/original/src/components/Favorite/styles.tsx +0 -2
  109. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  110. package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -0
  111. package/themes/original/src/components/GPSButton/index.tsx +1 -1
  112. package/themes/original/src/components/GiftCard/GiftCardOrdersList/index.tsx +64 -0
  113. package/themes/original/src/components/GiftCard/GiftCardOrdersList/styles.tsx +8 -0
  114. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +1 -1
  115. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +1 -1
  116. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +2 -2
  117. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +1 -1
  118. package/themes/original/src/components/GiftCard/SingleGiftCard/index.tsx +101 -0
  119. package/themes/original/src/components/GiftCard/SingleGiftCard/styles.tsx +4 -0
  120. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +83 -0
  121. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/styles.tsx +9 -0
  122. package/themes/original/src/components/GoogleMap/index.tsx +39 -18
  123. package/themes/original/src/components/Help/index.tsx +7 -0
  124. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +5 -0
  125. package/themes/original/src/components/HelpGuide/index.tsx +5 -0
  126. package/themes/original/src/components/HelpOrder/index.tsx +5 -0
  127. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +2 -2
  128. package/themes/original/src/components/HighestRatedBusinesses/styles.tsx +1 -1
  129. package/themes/original/src/components/Home/index.tsx +3 -8
  130. package/themes/original/src/components/LoginForm/Otp/index.tsx +4 -16
  131. package/themes/original/src/components/LoginForm/index.tsx +9 -3
  132. package/themes/original/src/components/MessageListing/index.tsx +6 -0
  133. package/themes/original/src/components/Messages/index.tsx +8 -7
  134. package/themes/original/src/components/Messages/styles.tsx +1 -1
  135. package/themes/original/src/components/MomentOption/index.tsx +19 -4
  136. package/themes/original/src/components/MultiCart/index.tsx +1 -1
  137. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
  138. package/themes/original/src/components/MultiCheckout/index.tsx +126 -61
  139. package/themes/original/src/components/MultiCheckout/styles.tsx +17 -0
  140. package/themes/original/src/components/MultiOrdersDetails/index.tsx +20 -15
  141. package/themes/original/src/components/MyOrders/index.tsx +28 -28
  142. package/themes/original/src/components/NavBar/index.tsx +5 -0
  143. package/themes/original/src/components/NetworkError/index.tsx +2 -3
  144. package/themes/original/src/components/NetworkError/styles.tsx +2 -2
  145. package/themes/original/src/components/Notifications/index.tsx +9 -8
  146. package/themes/original/src/components/Notifications/styles.tsx +0 -1
  147. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +1 -1
  148. package/themes/original/src/components/OrderDetails/index.tsx +701 -662
  149. package/themes/original/src/components/OrderDetails/styles.tsx +24 -8
  150. package/themes/original/src/components/OrderProgress/index.tsx +22 -3
  151. package/themes/original/src/components/OrderProgress/styles.tsx +1 -1
  152. package/themes/original/src/components/OrderSummary/index.tsx +3 -1
  153. package/themes/original/src/components/OrderTypeSelector/index.tsx +10 -6
  154. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +1 -1
  155. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +1 -1
  156. package/themes/original/src/components/OrdersOption/index.tsx +3 -5
  157. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  158. package/themes/original/src/components/PaymentOptionCard/index.tsx +4 -2
  159. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  160. package/themes/original/src/components/PaymentOptions/index.tsx +47 -4
  161. package/themes/original/src/components/PreviousOrders/index.tsx +2 -0
  162. package/themes/original/src/components/ProductForm/ActionButton.tsx +122 -0
  163. package/themes/original/src/components/ProductForm/ExtraOptions.tsx +56 -0
  164. package/themes/original/src/components/ProductForm/index.tsx +170 -252
  165. package/themes/original/src/components/ProductItemAccordion/index.tsx +55 -44
  166. package/themes/original/src/components/ProductItemAccordion/styles.tsx +3 -4
  167. package/themes/original/src/components/ProductOptionSubOption/index.tsx +112 -91
  168. package/themes/original/src/components/ProfessionalProfile/styles.tsx +3 -3
  169. package/themes/original/src/components/Promotions/index.tsx +13 -11
  170. package/themes/original/src/components/Promotions/styles.tsx +0 -2
  171. package/themes/original/src/components/ReviewDriver/index.tsx +5 -0
  172. package/themes/original/src/components/ReviewDriver/styles.tsx +1 -1
  173. package/themes/original/src/components/ReviewOrder/index.tsx +5 -0
  174. package/themes/original/src/components/ReviewOrder/styles.tsx +1 -1
  175. package/themes/original/src/components/ReviewProducts/index.tsx +5 -0
  176. package/themes/original/src/components/ReviewProducts/styles.tsx +1 -1
  177. package/themes/original/src/components/ServiceForm/index.tsx +1 -1
  178. package/themes/original/src/components/ServiceForm/styles.tsx +4 -4
  179. package/themes/original/src/components/Sessions/index.tsx +5 -0
  180. package/themes/original/src/components/SignupForm/index.tsx +67 -59
  181. package/themes/original/src/components/SingleOrderCard/index.tsx +3 -2
  182. package/themes/original/src/components/SingleProductCard/index.tsx +4 -3
  183. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  184. package/themes/original/src/components/StripeCardsList/index.tsx +12 -35
  185. package/themes/original/src/components/StripeElementsForm/index.tsx +79 -59
  186. package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -1
  187. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +170 -0
  188. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +91 -0
  189. package/themes/original/src/components/UpsellingProducts/index.tsx +15 -199
  190. package/themes/original/src/components/UpsellingProducts/styles.tsx +19 -0
  191. package/themes/original/src/components/UserFormDetails/index.tsx +100 -86
  192. package/themes/original/src/components/UserFormDetails/styles.tsx +7 -0
  193. package/themes/original/src/components/UserProfile/index.tsx +3 -2
  194. package/themes/original/src/components/UserProfileForm/index.tsx +5 -0
  195. package/themes/original/src/components/WalletTransactions/styles.tsx +1 -0
  196. package/themes/original/src/components/Wallets/index.tsx +7 -4
  197. package/themes/original/src/components/Wallets/styles.tsx +2 -1
  198. package/themes/original/src/components/WebsocketStatus/index.tsx +172 -0
  199. package/themes/original/src/components/WebsocketStatus/styles.tsx +28 -0
  200. package/themes/original/src/components/shared/HeaderTitle.tsx +1 -1
  201. package/themes/original/src/components/shared/OButton.tsx +5 -5
  202. package/themes/original/src/components/shared/OInput.tsx +1 -4
  203. package/themes/original/src/components/shared/OModal.tsx +12 -14
  204. package/themes/original/src/layouts/Container.tsx +5 -3
  205. package/themes/original/src/types/index.tsx +6 -1
  206. package/themes/original/src/utils/index.tsx +12 -1
  207. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -1,30 +1,40 @@
1
1
  import React from 'react';
2
2
  import FastImage from 'react-native-fast-image'
3
- import { StyleSheet, TouchableOpacity, View } from 'react-native';
3
+ import { StyleSheet, TouchableOpacity, useWindowDimensions } from 'react-native';
4
4
  import {
5
5
  AddressDetails as AddressDetailsController,
6
6
  useOrder,
7
7
  useLanguage,
8
8
  } from 'ordering-components/native';
9
+ import { useTheme } from 'styled-components/native';
9
10
 
10
11
  import { ADContainer, ADHeader, ADAddress, ADMap } from './styles';
11
-
12
- import { useTheme } from 'styled-components/native';
13
- import { OText, OIcon } from '../shared';
14
- import { useWindowDimensions } from 'react-native';
12
+ import { OText } from '../shared';
13
+ import { getTypesText } from '../../utils';
15
14
 
16
15
  const AddressDetailsUI = (props: any) => {
17
- const { navigation, addressToShow, isCartPending, googleMapsUrl, apiKey } =
18
- props;
16
+ const {
17
+ navigation,
18
+ addressToShow,
19
+ isCartPending,
20
+ googleMapsUrl,
21
+ apiKey
22
+ } = props;
19
23
 
20
24
  const theme = useTheme();
21
25
  const [orderState] = useOrder();
26
+ const [{ options }] = useOrder();
22
27
  const [, t] = useLanguage();
23
28
  const { width } = useWindowDimensions();
24
29
 
30
+ const orderTypeText = {
31
+ key: getTypesText(options?.type || 1),
32
+ value: t(getTypesText(options?.type || 1), 'Delivery')
33
+ }
34
+
25
35
  const styles = StyleSheet.create({
26
36
  productStyle: {
27
- width: width,
37
+ width,
28
38
  height: 151,
29
39
  marginVertical: 10
30
40
  }
@@ -39,13 +49,13 @@ const AddressDetailsUI = (props: any) => {
39
49
  lineHeight={24}
40
50
  color={theme.colors.textNormal}
41
51
  >
42
- {t('DELIVERY_ADDRESS', 'Delivery address')}
52
+ {t(`${orderTypeText.key}_ADDRESS`, `${orderTypeText.value} address`)}
43
53
  </OText>
44
54
  )}
45
55
  </ADHeader>
46
56
  {!!apiKey && googleMapsUrl && (
47
57
  <ADMap
48
- style={{ marginStart: -40, marginEnd: -40, width: width, flex: 1 }}>
58
+ style={{ width, flex: 1, marginStart: -20, marginEnd: -20, }}>
49
59
  <FastImage
50
60
  style={styles.productStyle}
51
61
  source={{
@@ -66,7 +66,9 @@ const AddressFormUI = (props: AddressFormParams) => {
66
66
  isFromProductsList,
67
67
  hasAddressDefault,
68
68
  afterSignup,
69
- businessSlug
69
+ businessSlug,
70
+ isFromCheckout,
71
+ onNavigationRedirect
70
72
  } = props;
71
73
 
72
74
  const theme = useTheme();
@@ -122,8 +124,8 @@ const AddressFormUI = (props: AddressFormParams) => {
122
124
  width: 16
123
125
  },
124
126
  wrapperNavbar: Platform.OS === 'ios'
125
- ? { paddingVertical: 0, paddingLeft: 40, paddingRight: 20 }
126
- : { paddingVertical: 10, paddingLeft: 40, paddingRight: 20 }
127
+ ? { paddingVertical: 0, paddingLeft: 20, paddingRight: 20 }
128
+ : { paddingVertical: 10, paddingLeft: 20, paddingRight: 20 }
127
129
  });
128
130
 
129
131
  const [, t] = useLanguage();
@@ -132,6 +134,7 @@ const AddressFormUI = (props: AddressFormParams) => {
132
134
  const [configState] = useConfig();
133
135
  const [orderState] = useOrder();
134
136
  const { handleSubmit, errors, control, setValue } = useForm();
137
+ const [autoCompleteAddress, setAutoCompleteAddress] = useState(false)
135
138
 
136
139
  const [toggleMap, setToggleMap] = useState(false);
137
140
  const [alertState, setAlertState] = useState<{
@@ -172,6 +175,8 @@ const AddressFormUI = (props: AddressFormParams) => {
172
175
  const isHideMap = theme?.address?.components?.map?.hidden
173
176
  const isHideIcons = theme?.address?.components?.icons?.hidden
174
177
  const continueAsGuest = () => navigation.navigate(!!businessSlug ? 'Business' : 'BusinessList', { isGuestUser: true });
178
+ const unaddressedTypes = configState?.configs?.unaddressed_order_types_allowed?.value.split('|').map((value: any) => Number(value)) || []
179
+ const isAllowUnaddressOrderType = unaddressedTypes.includes(orderState?.options?.type)
175
180
  const goToBack = () => navigation?.canGoBack() && navigation.goBack();
176
181
 
177
182
  const getAddressFormatted = (address: any) => {
@@ -351,9 +356,6 @@ const AddressFormUI = (props: AddressFormParams) => {
351
356
  map_data: { library: 'google', place_id: data.place_id },
352
357
  zip_code: data?.zip_code || null,
353
358
  };
354
- if (googleInput?.current) {
355
- googleInput?.current?.setAddressText(addressSelected.address);
356
- }
357
359
  updateChanges(addressSelected);
358
360
  };
359
361
 
@@ -371,6 +373,10 @@ const AddressFormUI = (props: AddressFormParams) => {
371
373
  setToggleMap(!toggleMap);
372
374
  };
373
375
 
376
+ const showFieldWithTheme = (name) => {
377
+ return !theme?.address?.components?.[name]?.hidden
378
+ }
379
+
374
380
  useEffect(() => {
375
381
  if (
376
382
  orderState.loading &&
@@ -379,9 +385,11 @@ const AddressFormUI = (props: AddressFormParams) => {
379
385
  auth &&
380
386
  !afterSignup
381
387
  ) {
382
- !isFromProductsList
383
- ? navigation.navigate('BottomTab')
384
- : navigation.navigate('Business');
388
+ isFromCheckout
389
+ ? navigation.goBack()
390
+ : !isFromProductsList
391
+ ? navigation.navigate('BottomTab')
392
+ : navigation.navigate('Business');
385
393
  }
386
394
  }, [orderState?.options?.address]);
387
395
 
@@ -520,6 +528,12 @@ const AddressFormUI = (props: AddressFormParams) => {
520
528
  setIsSignUpEffect(true);
521
529
  }, [orderState.loading]);
522
530
 
531
+ useEffect(() => {
532
+ if (isAllowUnaddressOrderType) {
533
+ onNavigationRedirect && onNavigationRedirect(!!businessSlug ? 'Business' : 'BusinessList')
534
+ }
535
+ }, [isAllowUnaddressOrderType])
536
+
523
537
  return (
524
538
  <ScrollView
525
539
  keyboardShouldPersistTaps='always'
@@ -535,6 +549,11 @@ const AddressFormUI = (props: AddressFormParams) => {
535
549
  style={{ marginTop: Platform.OS === 'ios' ? 0 : 10 }}
536
550
  titleWrapStyle={{ paddingHorizontal: 0, width: '100%' }}
537
551
  titleStyle={{ marginRight: 0, marginLeft: 0, paddingRight: 5 }}
552
+ buttonProps={{
553
+ bgColor: theme.colors.white,
554
+ borderColor: theme.colors.white,
555
+ textStyle: { color: theme.colors.btnFont }
556
+ }}
538
557
  />
539
558
  </View>
540
559
  <TouchableWithoutFeedback onPress={Keyboard.dismiss}>
@@ -565,6 +584,7 @@ const AddressFormUI = (props: AddressFormParams) => {
565
584
  placeholder={t('ADD_ADDRESS', 'Add a address')}
566
585
  onPress={(data, details: any) => {
567
586
  handleChangeAddress(data, details);
587
+ setAutoCompleteAddress(true);
568
588
  }}
569
589
  query={{
570
590
  key: googleMapsApiKey,
@@ -579,6 +599,7 @@ const AddressFormUI = (props: AddressFormParams) => {
579
599
  target: { name: 'address', value: text },
580
600
  });
581
601
  setValue('address', text);
602
+ setAutoCompleteAddress(true)
582
603
  }
583
604
  setIsFirstTime(false);
584
605
  setAddressEditing(text.length == 0);
@@ -666,13 +687,15 @@ const AddressFormUI = (props: AddressFormParams) => {
666
687
  setSaveLocation={setSaveMapLocation}
667
688
  handleToggleMap={handleToggleMap}
668
689
  isIntGeoCoder
690
+ setAutoCompleteAddress={setAutoCompleteAddress}
691
+ autoCompleteAddress={autoCompleteAddress}
669
692
  />
670
693
  </GoogleMapContainer>
671
694
  </View>
672
695
  )}
673
696
 
674
697
  <View style={{ flexDirection: 'row', flexBasis: '50%' }}>
675
- {showField && showField('internal_number') && (
698
+ {((isRequiredField && isRequiredField('internal_number')) || showFieldWithTheme('internal_number')) && (
676
699
  <Controller
677
700
  control={control}
678
701
  name="internal_number"
@@ -708,7 +731,7 @@ const AddressFormUI = (props: AddressFormParams) => {
708
731
  isFocusHighlight
709
732
  style={{
710
733
  ...styles.inputsStyle,
711
- marginRight: showField('internal_number') && showField('zipcode') ? 24 : 0
734
+ marginRight: showField?.('internal_number') && showField?.('zipcode') ? 24 : 0
712
735
  }}
713
736
  forwardRef={internalNumberRef}
714
737
  returnKeyType="next"
@@ -719,7 +742,7 @@ const AddressFormUI = (props: AddressFormParams) => {
719
742
  />
720
743
  )}
721
744
 
722
- {showField && showField('zipcode') && (
745
+ {((isRequiredField && isRequiredField('zipcode')) || showFieldWithTheme('zipcode')) && (
723
746
  <Controller
724
747
  control={control}
725
748
  name="zipcode"
@@ -764,7 +787,7 @@ const AddressFormUI = (props: AddressFormParams) => {
764
787
  )}
765
788
  </View>
766
789
 
767
- {showField && showField('address_notes') && (
790
+ {((isRequiredField && isRequiredField('address_notes')) || showFieldWithTheme('address_notes')) && (
768
791
  <Controller
769
792
  control={control}
770
793
  name="address_notes"
@@ -855,8 +878,9 @@ const AddressFormUI = (props: AddressFormParams) => {
855
878
  ) : (
856
879
  <OButton
857
880
  text={t('CANCEL', 'Cancel')}
858
- bgColor={theme.colors.white}
859
- borderColor={theme.colors.primary}
881
+ bgColor={theme.colors.secundary}
882
+ borderColor={theme.colors.secundary}
883
+ textStyle={{ color: theme.colors.black }}
860
884
  style={{ borderRadius: 7.6, borderWidth: 1, shadowOpacity: 0 }}
861
885
  onClick={() => navigation?.canGoBack() && navigation.goBack()}
862
886
  />
@@ -883,6 +907,8 @@ const AddressFormUI = (props: AddressFormParams) => {
883
907
  <OButton
884
908
  text={t('SAVE', 'Save')}
885
909
  textStyle={{ color: theme.colors.white }}
910
+ bgColor={theme.colors.primary}
911
+ borderColor={theme.colors.primary}
886
912
  imgRightSrc={null}
887
913
  style={{ marginHorizontal: 30, marginBottom: 10 }}
888
914
  onClick={() => setSaveMapLocation(true)}
@@ -2,7 +2,7 @@ import styled from 'styled-components/native'
2
2
 
3
3
  export const AddressFormContainer = styled.View`
4
4
  flex: 1;
5
- padding: 0px 40px 20px;
5
+ padding: 0px 20px 20px;
6
6
  background-color: ${(props: any) => props.theme.colors.backgroundPage};
7
7
  justify-content: space-between;
8
8
  `
@@ -152,6 +152,11 @@ const AddressListUI = (props: AddressListParams) => {
152
152
  showCall={false}
153
153
  paddingTop={10}
154
154
  btnStyle={{ paddingLeft: 0 }}
155
+ buttonProps={{
156
+ bgColor: theme.colors.white,
157
+ borderColor: theme.colors.white,
158
+ textStyle: { color: theme.colors.btnFont }
159
+ }}
155
160
  />
156
161
  )}
157
162
  {
@@ -173,6 +178,11 @@ const AddressListUI = (props: AddressListParams) => {
173
178
  style={{ marginTop: 0 }}
174
179
  titleWrapStyle={{ paddingHorizontal: 0 }}
175
180
  titleStyle={{ marginLeft: 0, marginRight: 0 }}
181
+ buttonProps={{
182
+ bgColor: theme.colors.white,
183
+ borderColor: theme.colors.white,
184
+ textStyle: { color: theme.colors.btnFont }
185
+ }}
176
186
  />
177
187
  )}
178
188
  {addressList.loading && addressList?.addresses?.length === 0 && (
@@ -217,7 +227,8 @@ const AddressListUI = (props: AddressListParams) => {
217
227
  onSaveAddress: handleSaveAddress,
218
228
  isSelectedAfterAdd: true,
219
229
  isFromProductsList: isFromProductsList,
220
- hasAddressDefault: !!orderState.options?.address?.location
230
+ hasAddressDefault: !!orderState.options?.address?.location,
231
+ isFromCheckout: route?.params?.isFromCheckout
221
232
  }
222
233
  ) : onNavigationRedirect(
223
234
  'AddressFormInitial',
@@ -228,7 +239,8 @@ const AddressListUI = (props: AddressListParams) => {
228
239
  onSaveAddress: handleSaveAddress,
229
240
  isSelectedAfterAdd: true,
230
241
  isFromProductsList: isFromProductsList,
231
- hasAddressDefault: !!orderState.options?.address?.location
242
+ hasAddressDefault: !!orderState.options?.address?.location,
243
+ isFromCheckout: route?.params?.isFromCheckout
232
244
  })}
233
245
  >
234
246
  <OIcon src={theme.images.general.pencil} width={16} style={{ marginHorizontal: 4 }} />
@@ -305,7 +317,8 @@ const AddressListUI = (props: AddressListParams) => {
305
317
  addressesList: addressList?.addresses,
306
318
  nopadding: true,
307
319
  isSelectedAfterAdd: true,
308
- hasAddressDefault: !!orderState.options?.address?.location
320
+ hasAddressDefault: !!orderState.options?.address?.location,
321
+ isFromCheckout: route?.params?.isFromCheckout
309
322
  }) : onNavigationRedirect(
310
323
  'AddressFormInitial',
311
324
  {
@@ -314,7 +327,8 @@ const AddressListUI = (props: AddressListParams) => {
314
327
  addressesList: addressList?.addresses,
315
328
  nopadding: true,
316
329
  isSelectedAfterAdd: true,
317
- hasAddressDefault: !!orderState.options?.address?.location
330
+ hasAddressDefault: !!orderState.options?.address?.location,
331
+ isFormCheckout: route?.params?.isFromCheckout
318
332
  })}
319
333
  />
320
334
  </>
@@ -3,10 +3,10 @@ import styled from 'styled-components/native'
3
3
  export const Container = styled.ScrollView`
4
4
  position: relative;
5
5
  flex: 1;
6
- paddingLeft: 40px;
7
- paddingRight: 40px;
8
- margin-bottom: 40px;
9
- padding-top: 10px;
6
+ paddingLeft: 20px;
7
+ paddingRight: 20px;
8
+ margin-bottom: 40px;
9
+ padding-top: 10px;
10
10
  `
11
11
 
12
12
  export const AddressItem = styled.TouchableOpacity`
@@ -23,8 +23,7 @@ export const AnalyticsSegment = (props: any) => {
23
23
  segmentClient.track('Product List Viewed', {
24
24
  business_id: category?.business_id,
25
25
  category_id: category?.id,
26
- category: category?.name,
27
- products: category?.products
26
+ category: category?.name
28
27
  })
29
28
  }
30
29
 
@@ -62,11 +61,12 @@ export const AnalyticsSegment = (props: any) => {
62
61
  })
63
62
  }
64
63
 
65
- const handleProductAdded = (product: any) => {
64
+ const handleProductAdded = (product: any, result: any) => {
66
65
  segmentClient.track('Product Added', {
67
- id: product.id,
66
+ cart_id: result.uuid,
67
+ product_id: product.id,
68
68
  name: product.name,
69
- category: product.category_id,
69
+ category: product.category_id || product?.categoryId,
70
70
  price: product.price,
71
71
  quantity: product.quantity
72
72
  })
@@ -101,7 +101,7 @@ export const AnalyticsSegment = (props: any) => {
101
101
 
102
102
  const handleOrderPlaced = (order: any) => {
103
103
  segmentClient.track('Order Placed', {
104
- id: order.id,
104
+ order_id: order.id,
105
105
  affiliation: order.business?.name,
106
106
  revenue: order.total,
107
107
  tax: order.tax_total,
@@ -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 =>
@@ -26,7 +26,6 @@ import {
26
26
  SocialListWrapper
27
27
  } from './styles';
28
28
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
29
- const types = ['food', 'laundry', 'alcohol', 'groceries'];
30
29
 
31
30
  let BusinessInformation: null | React.ElementType = null
32
31
  let BusinessReviews: null | React.ElementType = null
@@ -36,6 +35,7 @@ export const BusinessBasicInformation = (
36
35
  ) => {
37
36
  const { navigation, businessState, isBusinessInfoShow, logo, header, isPreOrder } = props;
38
37
  const { business, loading } = businessState;
38
+ const types = business?.types && business?.types?.filter(({ enabled }) => (enabled)).map(({ name }) => (name))
39
39
 
40
40
  const theme = useTheme();
41
41
  const [orderState] = useOrder();
@@ -72,7 +72,7 @@ export const BusinessBasicInformation = (
72
72
  alignItems: 'flex-start'
73
73
  },
74
74
  businessInfo: {
75
- paddingHorizontal: 40,
75
+ paddingHorizontal: 20,
76
76
  paddingTop: isChewLayout ? 0 : 56,
77
77
  },
78
78
  bullet: {
@@ -95,7 +95,7 @@ export const BusinessBasicInformation = (
95
95
  width: '100%',
96
96
  top: 0,
97
97
  zIndex: 100,
98
- left: 40
98
+ left: 20
99
99
  },
100
100
  socialIcon: {
101
101
  borderRadius: 3,
@@ -146,14 +146,11 @@ export const BusinessBasicInformation = (
146
146
  }
147
147
 
148
148
  const getBusinessType = () => {
149
- if (Object.keys(business || {}).length <= 0) return t('GENERAL', 'General');
149
+ if (!types) return t('GENERAL', 'General');
150
150
  const _types: any = [];
151
151
  types.forEach(
152
- (type) =>
153
- business[type] &&
154
- _types.push(
155
- t(`BUSINESS_TYPE_${type?.replace(/\s/g, '_')?.toUpperCase()}`, type),
156
- ),
152
+ (type: any) =>
153
+ _types.push(type)
157
154
  );
158
155
  return _types.join(', ');
159
156
  };
@@ -247,7 +244,7 @@ export const BusinessBasicInformation = (
247
244
  <View style={styles.tiktokIcon}>
248
245
  <OIcon
249
246
  src={theme.images.general.tiktok}
250
- style={{ width: 10, height: 12 }}
247
+ style={{ width: 10, height: 12, bottom: 1 }}
251
248
  cover
252
249
  />
253
250
  </View>
@@ -11,7 +11,7 @@ export const BusinessHeader = styled.ImageBackground`
11
11
  `;
12
12
  export const BusinessLogo = styled.View`
13
13
  position: absolute;
14
- start: 40px;
14
+ start: 20px;
15
15
  top: -36px;
16
16
  z-index: 50;
17
17
  box-shadow: 0 0 2px ${Platform.OS == 'android' ? '#000000DD' : '#0000001A'};
@@ -35,7 +35,12 @@ import FastImage from 'react-native-fast-image'
35
35
  import { LottieAnimation } from '../LottieAnimation';
36
36
  import { CardAnimation } from '../shared/CardAnimation';
37
37
 
38
- export const BusinessControllerUI = (props: BusinessControllerParams) => {
38
+ function BusinessControllerPropsAreEqual(prevProps: any, nextProps: any) {
39
+ return JSON.stringify(prevProps.business) === JSON.stringify(nextProps.business) &&
40
+ prevProps.isBusinessOpen === nextProps.isBusinessOpen
41
+ }
42
+
43
+ export const BusinessControllerUI = React.memo((props: BusinessControllerParams) => {
39
44
  const {
40
45
  business,
41
46
  handleClick,
@@ -76,7 +81,7 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
76
81
  const hideBusinessFavoriteBadge = theme?.business_listing_view?.components?.business?.components?.featured_badge?.hidden
77
82
 
78
83
  const textSize = 12
79
- const cardHeight = windowHeight * 0.3
84
+ const cardHeight = windowHeight * 0.34
80
85
 
81
86
  const styles = StyleSheet.create({
82
87
  container: {
@@ -184,7 +189,7 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
184
189
  }
185
190
 
186
191
  return (
187
- <InView style={{ minHeight: 200 }} triggerOnce={true} onChange={(inView: boolean) => handleChangeInterSection(inView)}>
192
+ <View style={{ minHeight: 200 }}>
188
193
  {isIntersectionObserver ? (
189
194
  <CardAnimation
190
195
  style={[style, styles.container]}
@@ -227,7 +232,7 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
227
232
  </View>
228
233
  )}
229
234
  {!hideBusinessOffer && (
230
- getBusinessOffer((business?.offers)) &&
235
+ !!getBusinessOffer((business?.offers)) &&
231
236
  <OfferBox
232
237
  isClosed={!isBusinessOpen && (configState?.configs?.preorder_status_enabled?.value === '1')}
233
238
  isRibbon={business?.ribbon?.enabled && !!business?.ribbon?.text}
@@ -239,7 +244,7 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
239
244
  numberOfLines={2}
240
245
  ellipsizeMode='tail'
241
246
  lineHeight={13}
242
- >{getBusinessOffer((business?.offers)) || parsePrice(0)}</OText>
247
+ >{t('DISCOUNT', 'Discount')}{' '}{getBusinessOffer((business?.offers))}</OText>
243
248
  </OfferBox>
244
249
  )}
245
250
  <BusinessState isRibbon={business?.ribbon?.enabled && !!business?.ribbon?.text}>
@@ -256,7 +261,7 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
256
261
  </BusinessState>
257
262
  </BusinessHero>
258
263
  <BusinessContent>
259
- <BusinessInfo style={{ position: 'absolute', bottom: 85, left: 15 }}>
264
+ <BusinessInfo style={{ position: 'absolute', top: -26, left: 15 }}>
260
265
  {!hideBusinessLogo && (
261
266
  <BusinessLogo style={styles.businessLogo}>
262
267
  <FastImage
@@ -274,7 +279,10 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
274
279
  <OText
275
280
  size={textSize + 2}
276
281
  style={{ lineHeight: 18, marginBottom: 6, width: '90%' }}
277
- weight={'500'}>
282
+ weight={'500'}
283
+ numberOfLines={1}
284
+ ellipsizeMode='tail'
285
+ >
278
286
  {business?.name}
279
287
  </OText>
280
288
  {(!hideBusinessFavorite || !hideBusinessReviews) && (
@@ -301,7 +309,7 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
301
309
  </ReviewAndFavorite>
302
310
  )}
303
311
  </View>
304
- <OText size={textSize} style={{ lineHeight: 15, marginBottom: 3 }} numberOfLines={1}>
312
+ <OText size={textSize} style={{ lineHeight: 15, marginBottom: 3, fontFamily: undefined }} numberOfLines={1}>
305
313
  {business?.address}
306
314
  </OText>
307
315
  <Metadata>
@@ -373,9 +381,9 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
373
381
  </View>
374
382
  </Placeholder>
375
383
  )}
376
- </InView>
384
+ </View>
377
385
  );
378
- };
386
+ }, BusinessControllerPropsAreEqual);
379
387
 
380
388
  export const BusinessController = (props: BusinessControllerParams) => {
381
389
  const BusinessControllerProps = {
@@ -8,13 +8,14 @@ export const BusinessHero = styled.View`
8
8
  `
9
9
 
10
10
  export const BusinessContent = styled.View`
11
- padding-horizontal: 18px;
12
- padding-bottom: 10px;
13
- border-bottom-left-radius: 7.6px;
14
- border-bottom-right-radius: 7.6px;
15
- border-width: 1px;
16
- border-color: ${(props: any) => props.theme.colors.border};
17
- overflow: visible;
11
+ position: relative;
12
+ padding-horizontal: 18px;
13
+ padding-bottom: 10px;
14
+ border-bottom-left-radius: 7.6px;
15
+ border-bottom-right-radius: 7.6px;
16
+ border-width: 1px;
17
+ border-color: ${(props: any) => props.theme.colors.border};
18
+ overflow: visible;
18
19
  `;
19
20
 
20
21
  export const BusinessInfo = styled.View`
@@ -17,7 +17,7 @@ export const MediaWrapper = styled.ScrollView`
17
17
  height: 127px;
18
18
  `
19
19
  export const InnerContent = styled.View`
20
- padding: 20px 40px;
20
+ padding: 20px;
21
21
  `
22
22
  export const WrapScheduleBlock = styled.View`
23
23
  margin: 20px 0;
@@ -36,4 +36,4 @@ export const DivideView = styled.View`
36
36
  height: 8px;
37
37
  background-color: ${(props: any) => props.theme.colors.backgroundGray100};
38
38
  margin-horizontal: -40px;
39
- `;
39
+ `;
@@ -23,7 +23,10 @@ export const BusinessItemAccordion = (props: any) => {
23
23
  handleClickCheckout,
24
24
  checkoutButtonDisabled,
25
25
  isMultiCheckout,
26
- isFromUpselling
26
+ isFromUpselling,
27
+ changeActiveState,
28
+ isActive,
29
+ isGiftCart
27
30
  } = props
28
31
 
29
32
  const [orderState] = useOrder();
@@ -38,14 +41,13 @@ export const BusinessItemAccordion = (props: any) => {
38
41
  const isProducts = cart?.products?.length
39
42
  const isBusinessChangeEnabled = configs?.cart_change_business_validation?.value === '1'
40
43
 
41
- const [isActive, setActiveState] = useState(!!singleBusiness)
42
44
  const [viewedCart, setViewedCart] = useState<any>(null)
43
45
 
44
46
  useEffect(() => {
45
47
  const cartsArray = Object.values(orderState?.carts)
46
48
  const cartsLength = cartsArray.filter((cart: any) => cart.products.length > 0).length ?? 0
47
49
  if (cartsLength === 1) {
48
- setActiveState(!isClosed)
50
+ changeActiveState && changeActiveState(!isClosed, cart?.uuid)
49
51
  }
50
52
  }, [orderState?.carts, isClosed])
51
53
 
@@ -68,14 +70,14 @@ export const BusinessItemAccordion = (props: any) => {
68
70
  <BIContainer isClosed={isClosed} isMultiCheckout={isMultiCheckout} checkoutVisible={!isActive && !isClosed && !!isProducts && !checkoutButtonDisabled}>
69
71
  <BIHeader
70
72
  isClosed={isClosed}
71
- onPress={() => !isClosed ? setActiveState(!isActive) : isClosed}
73
+ onPress={() => !isClosed ? changeActiveState && changeActiveState(!isClosed, cart?.uuid) : isClosed}
72
74
  activeOpacity={1}
73
75
  >
74
76
  <BIInfo>
75
77
  <BIContentInfo>
76
78
  <OText size={16} lineHeight={24} weight={'600'}>{cart?.business?.name}</OText>
77
79
  <View style={{ flexDirection: 'row' }}>
78
- {props.onNavigationRedirect && !isClosed && (
80
+ {props.onNavigationRedirect && !isClosed && !isGiftCart && (
79
81
  <>
80
82
  <TouchableOpacity onPress={() => props.onNavigationRedirect('Business', { store: cart?.business?.slug })}>
81
83
  <OText color={theme.colors.primary} size={12} lineHeight={18} style={{ textDecorationLine: 'underline' }}>{t('GO_TO_STORE', 'Go to store')}</OText>
@@ -84,7 +86,9 @@ export const BusinessItemAccordion = (props: any) => {
84
86
  )}
85
87
  {!isCartPending && (
86
88
  <>
87
- <OText color={theme.colors.textSecondary}>{' \u2022 '}</OText>
89
+ {!isGiftCart && (
90
+ <OText color={theme.colors.textSecondary}>{' \u2022 '}</OText>
91
+ )}
88
92
  <OAlert
89
93
  title={t('DELETE_CART', 'Delete Cart')}
90
94
  message={t('QUESTION_DELETE_CART', 'Are you sure to you wants delete the selected cart')}
@@ -94,7 +98,7 @@ export const BusinessItemAccordion = (props: any) => {
94
98
  </OAlert>
95
99
  </>
96
100
  )}
97
- {isBusinessChangeEnabled && props.handleChangeStore && (
101
+ {isBusinessChangeEnabled && props.handleChangeStore && !isGiftCart && (
98
102
  <>
99
103
  <OText color={theme.colors.textSecondary}>{' \u2022 '}</OText>
100
104
  <TouchableOpacity