ordering-ui-react-native 0.16.68 → 0.16.69-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 +6 -5
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/ActiveOrders/index.tsx +61 -63
  4. package/src/components/ActiveOrders/styles.tsx +8 -14
  5. package/src/components/BusinessInformation/index.tsx +19 -4
  6. package/src/components/BusinessInformation/styles.tsx +2 -2
  7. package/src/components/BusinessProductsList/index.tsx +10 -10
  8. package/src/components/BusinessesListing/index.tsx +1 -1
  9. package/src/components/Checkout/index.tsx +2 -1
  10. package/src/components/LanguageSelector/index.tsx +21 -16
  11. package/src/components/Messages/index.tsx +2 -2
  12. package/src/components/OrdersOption/index.tsx +54 -56
  13. package/src/components/PaymentOptions/index.tsx +298 -345
  14. package/src/components/PaymentOptionsWebView/index.tsx +119 -120
  15. package/src/components/SingleProductReview/index.tsx +7 -4
  16. package/src/components/StripeElementsForm/index.tsx +25 -16
  17. package/src/components/VerifyPhone/styles.tsx +1 -2
  18. package/src/components/shared/OToast.tsx +4 -4
  19. package/src/types/@fatnlazycat/react-native-recaptcha-v3/index.d.ts +1 -0
  20. package/src/utils/index.tsx +2 -1
  21. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +260 -238
  22. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
  23. package/themes/business/src/components/BusinessController/index.tsx +2 -2
  24. package/themes/business/src/components/Chat/index.tsx +31 -31
  25. package/themes/business/src/components/DriverMap/index.tsx +7 -5
  26. package/themes/business/src/components/LoginForm/index.tsx +111 -74
  27. package/themes/business/src/components/MapView/index.tsx +14 -3
  28. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  29. package/themes/business/src/components/NewOrderNotification/index.tsx +31 -41
  30. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +70 -43
  31. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +3 -3
  32. package/themes/business/src/components/OrdersOption/index.tsx +63 -73
  33. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  34. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  35. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  36. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  37. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  38. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  39. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  40. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  41. package/themes/business/src/components/PreviousMessages/index.tsx +17 -18
  42. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +250 -0
  43. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  44. package/themes/business/src/components/PreviousOrders/index.tsx +440 -245
  45. package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
  46. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  47. package/themes/business/src/components/ReviewCustomer/index.tsx +39 -15
  48. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  49. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  50. package/themes/business/src/components/shared/OLink.tsx +33 -13
  51. package/themes/business/src/components/shared/OText.tsx +8 -2
  52. package/themes/business/src/types/index.tsx +14 -3
  53. package/themes/business/src/utils/index.tsx +10 -0
  54. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  55. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  56. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  57. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -1
  58. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  59. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  60. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  61. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  62. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  63. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  64. package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
  65. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  66. package/themes/kiosk/src/types/index.d.ts +2 -0
  67. package/themes/original/index.tsx +6 -0
  68. package/themes/original/src/components/AddressDetails/index.tsx +10 -8
  69. package/themes/original/src/components/AddressForm/index.tsx +153 -137
  70. package/themes/original/src/components/AddressList/index.tsx +18 -18
  71. package/themes/original/src/components/AddressList/styles.tsx +4 -2
  72. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  73. package/themes/original/src/components/BusinessBasicInformation/index.tsx +49 -33
  74. package/themes/original/src/components/BusinessController/index.tsx +101 -70
  75. package/themes/original/src/components/BusinessController/styles.tsx +14 -9
  76. package/themes/original/src/components/BusinessInformation/index.tsx +10 -31
  77. package/themes/original/src/components/BusinessItemAccordion/index.tsx +12 -6
  78. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  79. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  80. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  81. package/themes/original/src/components/BusinessListingSearch/index.tsx +87 -142
  82. package/themes/original/src/components/BusinessListingSearch/styles.tsx +10 -12
  83. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  84. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  85. package/themes/original/src/components/BusinessProductsList/index.tsx +41 -62
  86. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  87. package/themes/original/src/components/BusinessProductsListing/index.tsx +561 -479
  88. package/themes/original/src/components/BusinessProductsListing/styles.tsx +13 -12
  89. package/themes/original/src/components/BusinessTypeFilter/index.tsx +3 -2
  90. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  91. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +93 -98
  92. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -9
  93. package/themes/original/src/components/BusinessesListing/index.tsx +8 -8
  94. package/themes/original/src/components/Cart/index.tsx +63 -38
  95. package/themes/original/src/components/CartContent/index.tsx +80 -18
  96. package/themes/original/src/components/CartContent/styles.tsx +11 -1
  97. package/themes/original/src/components/Checkout/index.tsx +110 -114
  98. package/themes/original/src/components/Checkout/styles.tsx +4 -3
  99. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  100. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  101. package/themes/original/src/components/DriverTips/index.tsx +47 -37
  102. package/themes/original/src/components/DriverTips/styles.tsx +2 -1
  103. package/themes/original/src/components/Favorite/index.tsx +7 -4
  104. package/themes/original/src/components/Favorite/styles.tsx +1 -1
  105. package/themes/original/src/components/FavoriteList/index.tsx +69 -45
  106. package/themes/original/src/components/FloatingButton/index.tsx +1 -2
  107. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  108. package/themes/original/src/components/GPSButton/index.tsx +20 -19
  109. package/themes/original/src/components/GPSButton/styles.ts +3 -3
  110. package/themes/original/src/components/GoogleMap/index.tsx +10 -1
  111. package/themes/original/src/components/Help/index.tsx +7 -7
  112. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +14 -20
  113. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +6 -0
  114. package/themes/original/src/components/HelpGuide/index.tsx +12 -11
  115. package/themes/original/src/components/HelpGuide/styles.tsx +5 -0
  116. package/themes/original/src/components/HelpOrder/index.tsx +12 -20
  117. package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
  118. package/themes/original/src/components/LanguageSelector/index.tsx +19 -14
  119. package/themes/original/src/components/LoginForm/Otp/index.tsx +89 -73
  120. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  121. package/themes/original/src/components/LoginForm/index.tsx +98 -41
  122. package/themes/original/src/components/LottieAnimation/index.tsx +78 -0
  123. package/themes/original/src/components/MessageListing/index.tsx +7 -7
  124. package/themes/original/src/components/Messages/index.tsx +35 -20
  125. package/themes/original/src/components/MomentOption/index.tsx +17 -11
  126. package/themes/original/src/components/MultiCart/index.tsx +50 -0
  127. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +92 -93
  128. package/themes/original/src/components/MultiCheckout/index.tsx +158 -77
  129. package/themes/original/src/components/MultiOrdersDetails/index.tsx +60 -33
  130. package/themes/original/src/components/MyOrders/index.tsx +86 -20
  131. package/themes/original/src/components/NavBar/index.tsx +7 -6
  132. package/themes/original/src/components/NetworkError/index.tsx +5 -3
  133. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  134. package/themes/original/src/components/Notifications/index.tsx +144 -0
  135. package/themes/original/src/components/Notifications/styles.tsx +20 -0
  136. package/themes/original/src/components/OrderDetails/index.tsx +114 -15
  137. package/themes/original/src/components/OrderDetails/styles.tsx +15 -2
  138. package/themes/original/src/components/OrderItAgain/index.tsx +46 -43
  139. package/themes/original/src/components/OrderProgress/index.tsx +77 -66
  140. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  141. package/themes/original/src/components/OrderSummary/index.tsx +3 -36
  142. package/themes/original/src/components/OrderTypeSelector/index.tsx +13 -6
  143. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +94 -98
  144. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +3 -0
  145. package/themes/original/src/components/OrdersOption/index.tsx +97 -55
  146. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  147. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  148. package/themes/original/src/components/PaymentOptions/index.tsx +1 -2
  149. package/themes/original/src/components/PhoneInputNumber/index.tsx +1 -1
  150. package/themes/original/src/components/PlaceSpot/index.tsx +249 -47
  151. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  152. package/themes/original/src/components/PreviousOrders/index.tsx +3 -2
  153. package/themes/original/src/components/ProductForm/index.tsx +212 -253
  154. package/themes/original/src/components/ProductForm/styles.tsx +5 -8
  155. package/themes/original/src/components/ProductItemAccordion/index.tsx +199 -128
  156. package/themes/original/src/components/ProductOptionSubOption/index.tsx +17 -9
  157. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +1 -2
  158. package/themes/original/src/components/ProfessionalFilter/index.tsx +2 -1
  159. package/themes/original/src/components/ProfessionalProfile/index.tsx +19 -8
  160. package/themes/original/src/components/Promotions/index.tsx +234 -220
  161. package/themes/original/src/components/Promotions/styles.tsx +7 -2
  162. package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
  163. package/themes/original/src/components/ReviewOrder/index.tsx +43 -11
  164. package/themes/original/src/components/ReviewOrder/styles.tsx +7 -0
  165. package/themes/original/src/components/ReviewProducts/index.tsx +8 -5
  166. package/themes/original/src/components/ReviewTrigger/index.tsx +27 -9
  167. package/themes/original/src/components/ReviewTrigger/styles.tsx +8 -1
  168. package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
  169. package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
  170. package/themes/original/src/components/ServiceForm/index.tsx +328 -264
  171. package/themes/original/src/components/SignupForm/index.tsx +134 -89
  172. package/themes/original/src/components/SingleOrderCard/index.tsx +129 -54
  173. package/themes/original/src/components/SingleOrderCard/styles.tsx +10 -8
  174. package/themes/original/src/components/SingleProductCard/index.tsx +85 -82
  175. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -9
  176. package/themes/original/src/components/SingleProductReview/index.tsx +38 -5
  177. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  178. package/themes/original/src/components/StripeCardsList/index.tsx +1 -1
  179. package/themes/original/src/components/StripeElementsForm/index.tsx +13 -2
  180. package/themes/original/src/components/UpsellingProducts/index.tsx +244 -215
  181. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  182. package/themes/original/src/components/UserDetails/index.tsx +5 -3
  183. package/themes/original/src/components/UserFormDetails/index.tsx +6 -48
  184. package/themes/original/src/components/UserProfile/index.tsx +58 -35
  185. package/themes/original/src/components/UserProfile/styles.ts +17 -0
  186. package/themes/original/src/components/UserProfileForm/index.tsx +19 -28
  187. package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
  188. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  189. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  190. package/themes/original/src/components/Wallets/index.tsx +176 -164
  191. package/themes/original/src/components/Wallets/styles.tsx +12 -8
  192. package/themes/original/src/components/shared/CardAnimation.tsx +47 -0
  193. package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
  194. package/themes/original/src/components/shared/OBottomPopup.tsx +6 -4
  195. package/themes/original/src/components/shared/OButton.tsx +9 -4
  196. package/themes/original/src/components/shared/OIcon.tsx +8 -1
  197. package/themes/original/src/components/shared/OInput.tsx +10 -1
  198. package/themes/original/src/layouts/Container.tsx +13 -9
  199. package/themes/original/src/types/index.tsx +44 -6
  200. package/themes/original/src/utils/index.tsx +103 -58
  201. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -22,21 +22,24 @@ const DriverTipsUI = (props: any) => {
22
22
  const {
23
23
  driverTip,
24
24
  driverTipsOptions,
25
- optionSelected,
26
- isFixedPrice,
25
+ isMulti,
26
+ cart,
27
27
  isDriverTipUseCustom,
28
- handlerChangeOption
28
+ handlerChangeOption,
29
+ isFixedPrice
29
30
  } = props;
30
31
 
31
32
  const [{ parsePrice }] = useUtils();
33
+ const theme = useTheme();
32
34
  const [, t] = useLanguage();
33
35
  const [{ configs }] = useConfig();
34
-
35
- const theme = useTheme();
36
+ const [customTip, setCustomTip] = useState((!isMulti && isDriverTipUseCustom && !driverTipsOptions.includes(driverTip)) ?? false)
37
+ const currentTip = customTip ? parseFloat(driverTip || 0) > 0 : (!customTip && !driverTipsOptions.includes(driverTip) && parseFloat(driverTip || 0)) > 0
38
+ const [value, setvalue] = useState('');
36
39
 
37
40
  const style = StyleSheet.create({
38
- circle: {
39
- borderRadius: 30
41
+ semicircle: {
42
+ borderRadius: 8
40
43
  },
41
44
  inputStyle: {
42
45
  flex: 1,
@@ -48,53 +51,59 @@ const DriverTipsUI = (props: any) => {
48
51
  }
49
52
  })
50
53
 
51
- const [value, setvalue] = useState('');
52
-
53
- const placeholderCurrency = (configs?.currency_position?.value || 'left') === 'left'
54
+ const placeholderCurrency = !isFixedPrice ? `0%` : (configs?.currency_position?.value || 'left') === 'left'
54
55
  ? `${configs?.format_number_currency?.value}0`
55
56
  : `0${configs?.format_number_currency?.value}`
56
57
 
57
58
  const handleChangeDriverTip = (val: any) => {
58
59
  const tip = Number(val)
59
60
  if ((isNaN(tip) || tip < 0)) {
60
- setvalue(value)
61
- return
61
+ setvalue(value)
62
+ return
62
63
  }
63
64
  setvalue(val)
64
65
  }
65
-
66
+
66
67
  return (
67
68
  <DTContainer>
68
69
  <DTLabel>
69
70
  {t('CUSTOM_DRIVER_TIP_MESSAGE', '100% of these tips go directly to your driver')}
70
71
  </DTLabel>
71
72
  <DTWrapperTips>
72
- {!isDriverTipUseCustom && driverTipsOptions.map((option: any, i: number) => (
73
+ {driverTipsOptions.map((option: any, i: number) => (
73
74
  <TouchableOpacity
74
75
  key={i}
75
- onPress={() => handlerChangeOption(option)}
76
+ onPress={() => {
77
+ handlerChangeOption(option)
78
+ setCustomTip(false)
79
+ }}
76
80
  >
77
81
  <DTCard
78
- style={style.circle}
79
- isActive={option === optionSelected}
82
+ style={style.semicircle}
83
+ isActive={(option === driverTip && !customTip)}
80
84
  >
81
- <OText size={12} numberOfLines={1} color={option === optionSelected ? '#FFF' : theme.colors.textSecondary}>
85
+ <OText size={12} numberOfLines={2} color={(option === driverTip && !customTip) ? '#FFF' : theme.colors.textSecondary}>
82
86
  {`${isFixedPrice ? parsePrice(option) : `${option}%`}`}
83
87
  </OText>
84
88
  </DTCard>
85
89
  </TouchableOpacity>
86
90
  ))}
91
+ {isDriverTipUseCustom && (
92
+ <TouchableOpacity
93
+ onPress={() => setCustomTip(true)}
94
+ >
95
+ <DTCard
96
+ style={style.semicircle}
97
+ isActive={customTip}
98
+ >
99
+ <OText size={12} numberOfLines={2} color={customTip ? '#FFF' : theme.colors.textSecondary}>
100
+ {t('CUSTOM_TIP', 'Custom')}
101
+ </OText>
102
+ </DTCard>
103
+ </TouchableOpacity>
104
+ )}
87
105
  </DTWrapperTips>
88
- {(!isDriverTipUseCustom && !driverTipsOptions.includes(driverTip) && driverTip > 0) && (
89
- <OText
90
- color={theme.colors.error}
91
- size={16}
92
- style={{ marginTop: 10, textAlign: 'center' }}
93
- >
94
- {t('CUSTOM_DRIVER_TIP_AMOUNT', 'The driver\'s current tip comes from a custom option')}
95
- </OText>
96
- )}
97
- {isDriverTipUseCustom && (
106
+ {customTip && (
98
107
  <DTForm>
99
108
  <DTWrapperInput>
100
109
  <OInput
@@ -120,17 +129,18 @@ const DriverTipsUI = (props: any) => {
120
129
  }}
121
130
  />
122
131
  </DTWrapperInput>
123
- {parseFloat(driverTip || 0) > 0 && (
124
- <OText
125
- color={theme.colors.error}
126
- size={16}
127
- style={{ marginTop: 10, textAlign: 'center' }}
128
- >
129
- {t('CURRENT_DRIVER_TIP_AMOUNT', 'Current driver tip amount')}: {parsePrice(driverTip)}
130
- </OText>
131
- )}
132
132
  </DTForm>
133
133
  )}
134
+ {currentTip && (
135
+ <OText
136
+ color={theme.colors.primary}
137
+ size={16}
138
+ style={{ marginTop: 10, textAlign: 'center' }}
139
+ >
140
+ {t('CURRENT_DRIVER_TIP_AMOUNT', 'Current driver tip amount')}{!isFixedPrice &&
141
+ ` (${driverTip}%)`}: {isFixedPrice ? parsePrice(driverTip) : parsePrice(cart?.driver_tip)}
142
+ </OText>
143
+ )}
134
144
  </DTContainer>
135
145
  )
136
146
  }
@@ -26,11 +26,12 @@ export const DTCard = styled.View`
26
26
  text-transform: capitalize;
27
27
  min-height: 55px;
28
28
  min-width: 55px;
29
- max-width: 55px;
29
+ max-width: 80px;
30
30
  max-height: 55px;
31
31
  margin-right: 10px;
32
32
  margin-left: 10px;
33
33
  margin-top: 10px;
34
+ padding-horizontal: 10px;
34
35
 
35
36
  ${(props: any) => props.isActive && css`
36
37
  background-color: ${(props: any) => props.theme.colors.primary};
@@ -1,6 +1,7 @@
1
1
  import React, { useState } from 'react'
2
2
  import { useLanguage, useOrder } from 'ordering-components/native'
3
3
  import { useTheme } from 'styled-components/native'
4
+ import { Platform } from 'react-native'
4
5
  import { FavoriteList } from '../FavoriteList'
5
6
  import NavBar from '../NavBar'
6
7
  import { OText } from '../shared'
@@ -33,7 +34,9 @@ export const Favorite = (props: any) => {
33
34
  }
34
35
 
35
36
  return (
36
- <Container>
37
+ <Container
38
+ pdng={Platform.OS === 'ios' ? '20px' : '30px'}
39
+ >
37
40
  <NavBar
38
41
  title={t('FAVORITE', 'Favorite')}
39
42
  titleAlign={'center'}
@@ -51,9 +54,9 @@ export const Favorite = (props: any) => {
51
54
  >
52
55
  <OText
53
56
  color={menu.key === tabSelected ? theme.colors.textNormal : theme.colors.disabled}
54
- size={14}
55
- weight={menu.key === tabSelected ? '500' : '400'}
56
- style={{ marginBottom: 12 }}
57
+ size={14}
58
+ weight={menu.key === tabSelected ? '500' : '400'}
59
+ style={{ marginBottom: 12 }}
57
60
  >
58
61
  {menu.name}
59
62
  </OText>
@@ -18,5 +18,5 @@ export const Tab = styled.TouchableOpacity`
18
18
  export const Container = styled.View`
19
19
  padding-horizontal: 40px;
20
20
  padding-bottom: 20px;
21
- padding-top: 30px;
21
+ padding-top: ${(props: any) => props.pdng};
22
22
  `
@@ -4,8 +4,8 @@ import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
4
4
  import { FavoriteParams } from '../../types';
5
5
  import { SingleOrderCard } from '../SingleOrderCard';
6
6
  import {
7
- FavoriteList as FavoriteListController,
8
- useOrder,
7
+ FavoriteList as FavoriteListController,
8
+ useOrder,
9
9
  useLanguage
10
10
  } from 'ordering-components/native';
11
11
  import { useTheme } from 'styled-components/native';
@@ -14,11 +14,12 @@ import { Container, WrappButton } from './styles'
14
14
  import { OButton } from '../shared';
15
15
  import { BusinessController } from '../BusinessController';
16
16
  import { SingleProductCard } from '../SingleProductCard';
17
+ import { NotFoundSource } from '../NotFoundSource';
17
18
  import moment from 'moment';
18
19
 
19
20
 
20
21
  const FavoriteListUI = (props: FavoriteParams) => {
21
- const {
22
+ const {
22
23
  favoriteList,
23
24
  handleUpdateFavoriteList,
24
25
  pagination,
@@ -30,9 +31,9 @@ const FavoriteListUI = (props: FavoriteParams) => {
30
31
  isBusiness,
31
32
  isOrder,
32
33
  isProduct
33
- } = props
34
+ } = props
34
35
 
35
- const theme = useTheme();
36
+ const theme = useTheme();
36
37
  const [, t] = useLanguage()
37
38
  const [orderState] = useOrder();
38
39
  const [{ carts }] = useOrder()
@@ -78,34 +79,39 @@ const FavoriteListUI = (props: FavoriteParams) => {
78
79
  const businessId = product?.category?.business?.id
79
80
  if (!categoryId || !businessId) return
80
81
  onNavigationRedirect && onNavigationRedirect('ProductDetails', {
81
- productId: product?.id,
82
- categoryId: categoryId,
83
- businessId: businessId
84
- })
82
+ isRedirect: 'business',
83
+ productId: product?.id,
84
+ businessId: businessId,
85
+ categoryId: categoryId,
86
+ business: {
87
+ store: product?.category?.business.slug,
88
+ header: product?.category?.header,
89
+ }
90
+ })
85
91
  }
86
92
 
87
93
  useEffect(() => {
88
- const _businessId = 'businessId:' + reorderState?.result?.business_id
89
- if (reorderState?.error) {
90
- if (reorderState?.result?.business_id) {
91
- _setStoreData('adjust-cart-products', JSON.stringify(_businessId))
92
- onNavigationRedirect && onNavigationRedirect('Business', { store: reorderState?.result?.business?.slug })
93
- }
94
- }
95
- if (!reorderState?.error && reorderState.loading === false && reorderState?.result?.business_id) {
96
- const cartProducts = carts?.[_businessId]?.products
97
- const available = cartProducts.every((product: any) => product.valid === true)
98
- const orderProducts = favoriteList?.favorites.find((order: any) => order?.id === reorderState?.result?.orderId)?.products
94
+ const _businessId = 'businessId:' + reorderState?.result?.business_id
95
+ if (reorderState?.error) {
96
+ if (reorderState?.result?.business_id) {
97
+ _setStoreData('adjust-cart-products', JSON.stringify(_businessId))
98
+ onNavigationRedirect && onNavigationRedirect('Business', { store: reorderState?.result?.business?.slug })
99
+ }
100
+ }
101
+ if (!reorderState?.error && reorderState.loading === false && reorderState?.result?.business_id) {
102
+ const cartProducts = carts?.[_businessId]?.products
103
+ const available = cartProducts.every((product: any) => product.valid === true)
104
+ const orderProducts = favoriteList?.favorites.find((order: any) => order?.id === reorderState?.result?.orderId)?.products
99
105
 
100
- if (available && reorderState?.result?.uuid && (cartProducts?.length === orderProducts?.length)) {
101
- onNavigationRedirect && onNavigationRedirect('CheckoutNavigator', { cartUuid: reorderState?.result.uuid })
102
- } else {
103
- _setStoreData('adjust-cart-products', JSON.stringify(_businessId))
104
- cartProducts?.length !== orderProducts?.length && _setStoreData('already-removed', JSON.stringify('removed'))
105
- onNavigationRedirect && onNavigationRedirect('Business', { store: reorderState?.result?.business?.slug })
106
- }
107
- }
108
- }, [reorderState])
106
+ if (available && reorderState?.result?.uuid && (cartProducts?.length === orderProducts?.length)) {
107
+ onNavigationRedirect && onNavigationRedirect('CheckoutNavigator', { cartUuid: reorderState?.result.uuid })
108
+ } else {
109
+ _setStoreData('adjust-cart-products', JSON.stringify(_businessId))
110
+ cartProducts?.length !== orderProducts?.length && _setStoreData('already-removed', JSON.stringify('removed'))
111
+ onNavigationRedirect && onNavigationRedirect('Business', { store: reorderState?.result?.business?.slug })
112
+ }
113
+ }
114
+ }, [reorderState])
109
115
 
110
116
  const handleBusinessClick = (business: any) => {
111
117
  onNavigationRedirect && onNavigationRedirect('Business', {
@@ -194,12 +200,12 @@ const FavoriteListUI = (props: FavoriteParams) => {
194
200
  )
195
201
  }
196
202
 
197
- return (
198
- <Container>
203
+ return (
204
+ <Container>
199
205
  {isBusiness && (
200
206
  <>
201
207
  {favoriteList?.favorites?.length > 0 && (
202
- favoriteList.favorites?.sort((a: any, b: any) => a?.name?.toLowerCase() > b?.name?.toLowerCase()).map((business: any, i:number) => (
208
+ favoriteList.favorites?.sort((a: any, b: any) => a?.name?.toLowerCase() > b?.name?.toLowerCase()).map((business: any, i: number) => (
203
209
  <BusinessController
204
210
  key={`${business.id}_` + i}
205
211
  business={business}
@@ -224,13 +230,19 @@ const FavoriteListUI = (props: FavoriteParams) => {
224
230
  <BusinessSkeleton key={i} />
225
231
  ))
226
232
  )}
233
+ {!favoriteList?.loading && !favoriteList?.favorites?.length && (
234
+ <NotFoundSource
235
+ content={t('NOT_FOUND_FAVORITES_LIST', 'No favorites to show at this time.')
236
+ }
237
+ />
238
+ )}
227
239
  </>
228
240
  )}
229
241
 
230
242
  {isOrder && (
231
243
  <>
232
244
  {favoriteList?.favorites?.length > 0 && (
233
- favoriteList.favorites?.sort((a: any, b:any) => moment(a?.delivery_datetime_utc).valueOf() - moment(b?.delivery_datetime_utc).valueOf())
245
+ favoriteList.favorites?.sort((a: any, b: any) => moment(a?.delivery_datetime_utc).valueOf() - moment(b?.delivery_datetime_utc).valueOf())
234
246
  .map((order: any, i: number) => (
235
247
  <SingleOrderCard
236
248
  key={`${order?.id}_${i}`}
@@ -243,13 +255,19 @@ const FavoriteListUI = (props: FavoriteParams) => {
243
255
  handleReorder={handleReorder}
244
256
  reorderLoading={reorderState?.loading}
245
257
  />
246
- ))
258
+ ))
247
259
  )}
248
260
  {favoriteList?.loading && (
249
261
  [...Array(5).keys()].map(i => (
250
262
  <OrderSkeleton key={i} />
251
263
  ))
252
264
  )}
265
+ {!favoriteList?.loading && !favoriteList?.favorites?.length && (
266
+ <NotFoundSource
267
+ content={t('NOT_FOUND_FAVORITES_LIST', 'No favorites to show at this time.')
268
+ }
269
+ />
270
+ )}
253
271
  </>
254
272
  )}
255
273
 
@@ -271,22 +289,28 @@ const FavoriteListUI = (props: FavoriteParams) => {
271
289
  <ProductSkeleton key={i} />
272
290
  ))
273
291
  )}
292
+ {!favoriteList?.loading && !favoriteList?.favorites?.length && (
293
+ <NotFoundSource
294
+ content={t('NOT_FOUND_FAVORITES_LIST', 'No favorites to show at this time.')
295
+ }
296
+ />
297
+ )}
274
298
  </>
275
299
  )}
276
300
 
277
301
  {!favoriteList?.loading && pagination.totalPages && pagination.currentPage < pagination.totalPages && (
278
- <WrappButton>
279
- <OButton
280
- onClick={() => getFavoriteList(pagination?.currentPage + 1)}
281
- text={t('LOAD_MORE_ITEMS', 'Load more items')}
282
- imgRightSrc={null}
283
- textStyle={{ color: theme.colors.white }}
284
- style={{ borderRadius: 7.6, shadowOpacity: 0, marginTop: 20 }}
285
- />
286
- </WrappButton>
287
- )}
302
+ <WrappButton>
303
+ <OButton
304
+ onClick={() => getFavoriteList(pagination?.currentPage + 1)}
305
+ text={t('LOAD_MORE_ITEMS', 'Load more items')}
306
+ imgRightSrc={null}
307
+ textStyle={{ color: theme.colors.white }}
308
+ style={{ borderRadius: 7.6, shadowOpacity: 0, marginTop: 20 }}
309
+ />
310
+ </WrappButton>
311
+ )}
288
312
  </Container>
289
- )
313
+ )
290
314
  }
291
315
 
292
316
  export const FavoriteList = (props: any) => {
@@ -62,7 +62,7 @@ const FloatingButtonUI = (props: FloatingButtonParams) => {
62
62
  return (
63
63
  <Container
64
64
  style={{
65
- paddingBottom: Platform.OS === 'ios' ? iosBottom ?? 0 : bottom + 16
65
+ paddingBottom: Platform.OS === 'ios' ? 20 : bottom + 16
66
66
  }}>
67
67
 
68
68
  <View style={styles.infoCont}>
@@ -86,7 +86,6 @@ const FloatingButtonUI = (props: FloatingButtonParams) => {
86
86
  {btnText}
87
87
  </OText>
88
88
  </Button>
89
-
90
89
  </Container>
91
90
  );
92
91
  };
@@ -12,7 +12,7 @@ export const Container = styled.View`
12
12
  width: 100%;
13
13
  justify-content: space-between;
14
14
  background-color: #FFF;
15
- z-index: 1000;
15
+ z-index: 20001;
16
16
  justify-content: space-between;
17
17
  `
18
18
 
@@ -1,17 +1,16 @@
1
1
  import React, { useEffect, useState } from 'react'
2
- import { getTrackingStatus, requestTrackingPermission } from 'react-native-tracking-transparency'
3
- import Geolocation from '@react-native-community/geolocation'
4
2
  import Geocoder from 'react-native-geocoding'
5
- import { GpsButtonStyle } from './styles'
6
- import { View } from 'react-native'
7
- import { OText } from '../shared'
8
3
  import { ActivityIndicator } from 'react-native-paper'
4
+ import Geolocation from '@react-native-community/geolocation'
5
+ import { getTrackingStatus, requestTrackingPermission } from 'react-native-tracking-transparency'
6
+
7
+ import { OText } from '../shared'
8
+ import { GpsButtonStyle } from './styles'
9
9
 
10
10
  export const GPSButton = (props: any) => {
11
11
  const {
12
12
  handleGPS,
13
13
  apiKey,
14
- googleReady,
15
14
  IconButton,
16
15
  IconLoadingButton
17
16
  } = props
@@ -56,25 +55,27 @@ export const GPSButton = (props: any) => {
56
55
  })
57
56
  }
58
57
 
59
- const getCurrentPosition = async () => {
58
+ const getCurrentPosition = async () => {
60
59
  let trackingStatus = await getTrackingStatus()
61
- if (trackingStatus === 'not-determined') {
62
- trackingStatus = await requestTrackingPermission()
63
- }
64
- if (trackingStatus === 'authorized' || trackingStatus === 'unavailable') {
65
- setLoading(true);
60
+ if (trackingStatus === 'not-determined') {
61
+ trackingStatus = await requestTrackingPermission()
62
+ }
63
+ if (trackingStatus === 'authorized' || trackingStatus === 'unavailable') {
64
+ setLoading(true)
66
65
  Geolocation.getCurrentPosition((pos) => {
67
- geoCodePosition(pos.coords);
66
+ geoCodePosition(pos.coords)
68
67
  }, (err) => {
69
68
  setLoading(false);
70
- console.log(err);
71
- });
69
+ console.log(`ERROR(${err.code}): ${err.message}`)
70
+ }, {
71
+ enableHighAccuracy: true, timeout: 15000, maximumAge: 10000
72
+ })
72
73
  }
73
- }
74
+ }
74
75
 
75
- useEffect(() => {
76
- Geocoder.init(apiKey);
77
- }, [])
76
+ useEffect(() => {
77
+ Geocoder.init(apiKey);
78
+ }, [])
78
79
 
79
80
  return (
80
81
  <GpsButtonStyle
@@ -1,6 +1,6 @@
1
1
  import styled, { css } from 'styled-components/native'
2
2
 
3
3
  export const GpsButtonStyle = styled.TouchableOpacity`
4
- width: 30px;
5
- height: 30px;
6
- `
4
+ width: 16px;
5
+ height: 16px;
6
+ `
@@ -89,7 +89,9 @@ export const GoogleMap = (props: GoogleMapsParams) => {
89
89
  return
90
90
  }
91
91
 
92
- if (distance <= maxLimitLocation) {
92
+ const _maxLimitLocation = typeof maxLimitLocation === 'string' ? parseInt(maxLimitLocation, 10) : maxLimitLocation
93
+
94
+ if (distance <= _maxLimitLocation) {
93
95
  setMarkerPosition(curPos)
94
96
  setRegion({ ...region, longitude: curPos.longitude, latitude: curPos.latitude })
95
97
  } else {
@@ -153,6 +155,13 @@ export const GoogleMap = (props: GoogleMapsParams) => {
153
155
  Geocoder.init(googleMapsApiKey)
154
156
  }, [])
155
157
 
158
+ useEffect(() => {
159
+ mapRef.current.animateToRegion({
160
+ ...region,
161
+ latitude: location?.lat,
162
+ longitude: location?.lng,
163
+ })
164
+ }, [location])
156
165
 
157
166
  useEffect(() => {
158
167
  if (saveLocation) {
@@ -31,20 +31,20 @@ export const Help = (props: HelpParams) => {
31
31
 
32
32
  return (
33
33
  <Container
34
+ pt={10}
34
35
  noPadding
35
36
  refreshControl={
36
- <RefreshControl
37
- refreshing={refreshing}
38
- onRefresh={() => handleOnRefresh()}
39
- />
40
- }
37
+ <RefreshControl
38
+ refreshing={refreshing}
39
+ onRefresh={() => handleOnRefresh()}
40
+ />
41
+ }
41
42
  >
42
43
  <NavBar
43
44
  title={t('HELP', 'Help')}
44
45
  titleAlign={'center'}
45
46
  onActionLeft={goToBack}
46
47
  showCall={false}
47
- paddingTop={10}
48
48
  btnStyle={{ paddingLeft: 0 }}
49
49
  />
50
50
  <HelpSubItem
@@ -53,7 +53,7 @@ export const Help = (props: HelpParams) => {
53
53
  <OText size={14}>{t('HELP_WITH_ORDER', 'Help with an order')}</OText>
54
54
  </HelpSubItem>
55
55
  <HelpSubItem
56
- onPress={() => onRedirect('HelpAccountAndPayment')}
56
+ onPress={() => onRedirect('HelpAccountAndPayment')}
57
57
  >
58
58
  <OText size={14}>{t('ACCOUNT_PAYMENT_OPTIONS', 'Account and Payment Options')}</OText>
59
59
  </HelpSubItem>
@@ -1,13 +1,17 @@
1
1
  import React from 'react'
2
+ import { Platform } from 'react-native'
2
3
  import { useLanguage } from 'ordering-components/native'
3
4
  import { HelpAccountAndPaymentParams } from '../../types'
4
5
  import { OText, OButton, OIcon } from '../shared'
5
6
  import { useTheme } from 'styled-components/native'
6
- import { StyleSheet } from 'react-native'
7
+ import { StyleSheet, TouchableOpacity } from 'react-native'
8
+ import AntDesignIcon from 'react-native-vector-icons/AntDesign'
7
9
 
8
10
  import {
9
- Content
11
+ Content,
12
+ Container
10
13
  } from './styles'
14
+ import NavBar from '../NavBar'
11
15
 
12
16
  export const HelpAccountAndPayment = (props: HelpAccountAndPaymentParams) => {
13
17
  const {
@@ -17,15 +21,6 @@ export const HelpAccountAndPayment = (props: HelpAccountAndPaymentParams) => {
17
21
  const theme = useTheme()
18
22
 
19
23
  const styles = StyleSheet.create({
20
- btnBackArrow: {
21
- borderWidth: 0,
22
- backgroundColor: theme.colors.white,
23
- borderColor: theme.colors.white,
24
- shadowColor: theme.colors.white,
25
- display: 'flex',
26
- justifyContent: 'flex-start',
27
- paddingLeft: 0,
28
- },
29
24
  imageStyle: {
30
25
  width: '100%',
31
26
  height: 300,
@@ -36,14 +31,13 @@ export const HelpAccountAndPayment = (props: HelpAccountAndPaymentParams) => {
36
31
  const goToBack = () => navigation?.canGoBack() && navigation.goBack()
37
32
 
38
33
  return (
39
- <>
40
- <OButton
41
- imgLeftSrc={theme.images.general.arrow_left}
42
- imgRightSrc={null}
43
- style={styles.btnBackArrow}
44
- onClick={() => goToBack()}
34
+ <Container>
35
+ <NavBar
36
+ title={t('ACCOUNT_PAYMENT_OPTIONS', 'Account and Payment Options')}
37
+ onActionLeft={goToBack}
38
+ btnStyle={{ paddingLeft: 0 }}
39
+ showCall={false}
45
40
  />
46
- <OText size={22} weight={600}>{t('ACCOUNT_PAYMENT_OPTIONS', 'Account and Payment Options')}</OText>
47
41
  <Content>
48
42
  <OText mBottom={20}>
49
43
  -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vel in congue nisl, nisi. Mauris, condimentum auctor sed cras cursus arcu pellentesque.
@@ -63,6 +57,6 @@ export const HelpAccountAndPayment = (props: HelpAccountAndPaymentParams) => {
63
57
  cover
64
58
  />
65
59
  </Content>
66
- </>
60
+ </Container>
67
61
  )
68
- }
62
+ }
@@ -4,3 +4,9 @@ export const Content = styled.View`
4
4
  padding-vertical: 20px;
5
5
  margin-bottom: 20px;
6
6
  `
7
+
8
+ export const Container = styled.ScrollView`
9
+ position: relative;
10
+ flex: 1;
11
+ margin: 10px 0;
12
+ `