ordering-ui-react-native 0.16.0 → 0.16.1-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 (229) hide show
  1. package/package.json +8 -4
  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/AddressForm/index.tsx +18 -2
  6. package/src/components/BusinessBasicInformation/index.tsx +11 -19
  7. package/src/components/BusinessController/index.tsx +10 -8
  8. package/src/components/BusinessInformation/index.tsx +22 -0
  9. package/src/components/BusinessTypeFilter/index.tsx +1 -2
  10. package/src/components/BusinessesListing/index.tsx +1 -1
  11. package/src/components/Checkout/index.tsx +2 -1
  12. package/src/components/DriverTips/index.tsx +11 -6
  13. package/src/components/LanguageSelector/index.tsx +21 -16
  14. package/src/components/LoginForm/index.tsx +120 -30
  15. package/src/components/LoginForm/styles.tsx +6 -0
  16. package/src/components/Messages/index.tsx +2 -2
  17. package/src/components/NotificationSetting/index.tsx +85 -0
  18. package/src/components/OrderDetails/index.tsx +7 -21
  19. package/src/components/OrdersOption/index.tsx +54 -56
  20. package/src/components/PaymentOptions/index.tsx +335 -365
  21. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  22. package/src/components/ReviewDriver/index.tsx +1 -1
  23. package/src/components/ReviewOrder/index.tsx +2 -1
  24. package/src/components/ReviewProducts/index.tsx +11 -0
  25. package/src/components/SignupForm/index.tsx +145 -61
  26. package/src/components/SingleProductReview/index.tsx +8 -5
  27. package/src/components/StripeElementsForm/index.tsx +25 -16
  28. package/src/components/StripeMethodForm/index.tsx +1 -2
  29. package/src/components/UserProfileForm/index.tsx +63 -6
  30. package/src/components/UserProfileForm/styles.tsx +8 -0
  31. package/src/components/VerifyPhone/styles.tsx +1 -2
  32. package/src/components/shared/OBottomPopup.tsx +6 -2
  33. package/src/components/shared/OModal.tsx +1 -1
  34. package/src/index.tsx +2 -0
  35. package/src/navigators/CheckoutNavigator.tsx +6 -0
  36. package/src/navigators/HomeNavigator.tsx +6 -0
  37. package/src/pages/BusinessesListing.tsx +7 -6
  38. package/src/pages/MultiCheckout.tsx +31 -0
  39. package/src/pages/MultiOrdersDetails.tsx +27 -0
  40. package/src/pages/OrderDetails.tsx +1 -1
  41. package/src/pages/ReviewDriver.tsx +2 -2
  42. package/src/pages/ReviewOrder.tsx +2 -2
  43. package/src/theme.json +0 -1
  44. package/src/types/@fatnlazycat/react-native-recaptcha-v3/index.d.ts +1 -0
  45. package/src/types/index.tsx +15 -9
  46. package/src/utils/index.tsx +0 -1
  47. package/themes/business/index.tsx +4 -0
  48. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +1 -1
  49. package/themes/business/src/components/BusinessController/index.tsx +2 -2
  50. package/themes/business/src/components/Chat/index.tsx +42 -34
  51. package/themes/business/src/components/DriverMap/index.tsx +12 -8
  52. package/themes/business/src/components/DriverSchedule/index.tsx +71 -0
  53. package/themes/business/src/components/DriverSchedule/styles.tsx +6 -0
  54. package/themes/business/src/components/LoginForm/index.tsx +111 -74
  55. package/themes/business/src/components/MapView/index.tsx +1 -1
  56. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  57. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  58. package/themes/business/src/components/OrderDetails/Delivery.tsx +3 -3
  59. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +25 -18
  60. package/themes/business/src/components/OrdersListManager/index.tsx +10 -3
  61. package/themes/business/src/components/OrdersOption/index.tsx +65 -21
  62. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  63. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  64. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  65. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  66. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  67. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  68. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  69. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  70. package/themes/business/src/components/PreviousMessages/index.tsx +17 -18
  71. package/themes/business/src/components/PreviousOrders/index.tsx +21 -23
  72. package/themes/business/src/components/ProductItemAccordion/index.tsx +5 -4
  73. package/themes/business/src/components/ReviewCustomer/index.tsx +1 -1
  74. package/themes/business/src/components/ScheduleBlocked/index.tsx +53 -0
  75. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  76. package/themes/business/src/components/UserProfileForm/index.tsx +28 -4
  77. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  78. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  79. package/themes/business/src/components/shared/OModal.tsx +41 -38
  80. package/themes/business/src/types/index.tsx +14 -9
  81. package/themes/business/src/utils/index.tsx +10 -0
  82. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  83. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  84. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  85. package/themes/kiosk/src/components/BusinessMenu/index.tsx +2 -1
  86. package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
  87. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +1 -0
  88. package/themes/kiosk/src/components/Checkout/index.tsx +18 -3
  89. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  90. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  91. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  92. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  93. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  94. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  95. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  96. package/themes/kiosk/src/components/OrderDetails/index.tsx +2 -2
  97. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  98. package/themes/kiosk/src/components/PaymentOptions/index.tsx +1 -1
  99. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  100. package/themes/kiosk/src/types/index.d.ts +2 -0
  101. package/themes/original/index.tsx +22 -0
  102. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  103. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  104. package/themes/original/src/components/AddressForm/index.tsx +137 -134
  105. package/themes/original/src/components/AddressList/index.tsx +2 -2
  106. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  107. package/themes/original/src/components/BusinessBasicInformation/index.tsx +302 -160
  108. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
  109. package/themes/original/src/components/BusinessController/index.tsx +179 -96
  110. package/themes/original/src/components/BusinessController/styles.tsx +5 -0
  111. package/themes/original/src/components/BusinessItemAccordion/index.tsx +12 -9
  112. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  113. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  114. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  115. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  116. package/themes/original/src/components/BusinessListingSearch/index.tsx +106 -126
  117. package/themes/original/src/components/BusinessListingSearch/styles.tsx +18 -13
  118. package/themes/original/src/components/BusinessPreorder/index.tsx +1 -1
  119. package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -2
  120. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  121. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  122. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  123. package/themes/original/src/components/BusinessProductsList/index.tsx +66 -73
  124. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  125. package/themes/original/src/components/BusinessProductsListing/index.tsx +289 -178
  126. package/themes/original/src/components/BusinessProductsListing/styles.tsx +18 -0
  127. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  128. package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -38
  129. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  130. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +561 -0
  131. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
  132. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +673 -0
  133. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
  134. package/themes/original/src/components/BusinessesListing/index.tsx +102 -464
  135. package/themes/original/src/components/Cart/index.tsx +82 -37
  136. package/themes/original/src/components/Cart/styles.tsx +4 -0
  137. package/themes/original/src/components/CartContent/index.tsx +22 -16
  138. package/themes/original/src/components/Checkout/index.tsx +107 -67
  139. package/themes/original/src/components/Checkout/styles.tsx +0 -1
  140. package/themes/original/src/components/DriverTips/index.tsx +11 -6
  141. package/themes/original/src/components/Favorite/index.tsx +92 -0
  142. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  143. package/themes/original/src/components/FavoriteList/index.tsx +317 -0
  144. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  145. package/themes/original/src/components/GPSButton/index.tsx +25 -17
  146. package/themes/original/src/components/GoogleMap/index.tsx +21 -12
  147. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +8 -3
  148. package/themes/original/src/components/HelpGuide/index.tsx +8 -3
  149. package/themes/original/src/components/HelpOrder/index.tsx +8 -3
  150. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  151. package/themes/original/src/components/LoginForm/Otp/index.tsx +3 -2
  152. package/themes/original/src/components/LoginForm/index.tsx +86 -43
  153. package/themes/original/src/components/Messages/index.tsx +17 -17
  154. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  155. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  156. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  157. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  158. package/themes/original/src/components/MultiCheckout/index.tsx +304 -0
  159. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  160. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  161. package/themes/original/src/components/MultiOrdersDetails/index.tsx +262 -0
  162. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  163. package/themes/original/src/components/MyOrders/index.tsx +132 -27
  164. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  165. package/themes/original/src/components/NavBar/index.tsx +11 -5
  166. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  167. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  168. package/themes/original/src/components/OrderDetails/index.tsx +136 -57
  169. package/themes/original/src/components/OrderDetails/styles.tsx +5 -2
  170. package/themes/original/src/components/OrderItAgain/index.tsx +73 -0
  171. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  172. package/themes/original/src/components/OrderProgress/index.tsx +8 -2
  173. package/themes/original/src/components/OrderSummary/index.tsx +2 -35
  174. package/themes/original/src/components/OrderTypeSelector/index.tsx +84 -36
  175. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  176. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +140 -0
  177. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  178. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +56 -0
  179. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  180. package/themes/original/src/components/OrdersOption/index.tsx +143 -47
  181. package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
  182. package/themes/original/src/components/PaymentOptionWallet/index.tsx +15 -23
  183. package/themes/original/src/components/PaymentOptions/index.tsx +57 -37
  184. package/themes/original/src/components/PhoneInputNumber/index.tsx +4 -10
  185. package/themes/original/src/components/PlaceSpot/index.tsx +243 -47
  186. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  187. package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
  188. package/themes/original/src/components/ProductForm/index.tsx +697 -649
  189. package/themes/original/src/components/ProductForm/styles.tsx +9 -7
  190. package/themes/original/src/components/ProductItemAccordion/index.tsx +38 -25
  191. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  192. package/themes/original/src/components/ProfessionalFilter/index.tsx +128 -0
  193. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  194. package/themes/original/src/components/ProfessionalProfile/index.tsx +298 -0
  195. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  196. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  197. package/themes/original/src/components/ReviewOrder/index.tsx +18 -3
  198. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  199. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  200. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  201. package/themes/original/src/components/SearchBar/index.tsx +13 -5
  202. package/themes/original/src/components/ServiceForm/index.tsx +608 -0
  203. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  204. package/themes/original/src/components/SignupForm/index.tsx +307 -159
  205. package/themes/original/src/components/SingleOrderCard/index.tsx +316 -0
  206. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  207. package/themes/original/src/components/SingleProductCard/index.tsx +215 -95
  208. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
  209. package/themes/original/src/components/SingleProductReview/index.tsx +30 -3
  210. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  211. package/themes/original/src/components/StripeElementsForm/index.tsx +25 -9
  212. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  213. package/themes/original/src/components/UpsellingProducts/index.tsx +7 -3
  214. package/themes/original/src/components/UserDetails/index.tsx +32 -18
  215. package/themes/original/src/components/UserFormDetails/index.tsx +107 -73
  216. package/themes/original/src/components/UserProfile/index.tsx +4 -0
  217. package/themes/original/src/components/UserProfileForm/index.tsx +15 -10
  218. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  219. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  220. package/themes/original/src/components/Wallets/index.tsx +176 -162
  221. package/themes/original/src/components/Wallets/styles.tsx +10 -8
  222. package/themes/original/src/components/shared/OBottomPopup.tsx +47 -14
  223. package/themes/original/src/components/shared/OButton.tsx +10 -3
  224. package/themes/original/src/components/shared/OInput.tsx +3 -2
  225. package/themes/original/src/components/shared/OModal.tsx +4 -2
  226. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  227. package/themes/original/src/types/index.tsx +200 -47
  228. package/themes/original/src/utils/index.tsx +77 -0
  229. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -26,6 +26,7 @@ interface Props {
26
26
  isNotDecoration?: boolean;
27
27
  styleCloseButton?: any;
28
28
  order?: any;
29
+ hideIcons?: boolean
29
30
  }
30
31
 
31
32
  const OModal = (props: Props): React.ReactElement => {
@@ -47,6 +48,7 @@ const OModal = (props: Props): React.ReactElement => {
47
48
  style,
48
49
  styleCloseButton,
49
50
  order,
51
+ hideIcons
50
52
  } = props;
51
53
 
52
54
  const theme = useTheme();
@@ -70,8 +72,8 @@ const OModal = (props: Props): React.ReactElement => {
70
72
  alignItems: 'center',
71
73
  paddingHorizontal: 30,
72
74
  paddingTop: 30,
73
- paddingBottom: 25,
74
- borderBottomWidth: 2,
75
+ paddingBottom: !hideIcons ? 25 : 15,
76
+ borderBottomWidth: !hideIcons ? 2 : 0,
75
77
  borderBottomColor: '#e6e6e6',
76
78
  },
77
79
  titleGroups: {
@@ -165,7 +167,7 @@ const OModal = (props: Props): React.ReactElement => {
165
167
  transparent={isTransparent}
166
168
  visible={open}
167
169
  onRequestClose={() => {
168
- onClose();
170
+ onClose && onClose();
169
171
  }}
170
172
  style={{
171
173
  height: '100%',
@@ -218,50 +220,51 @@ const OModal = (props: Props): React.ReactElement => {
218
220
  {title}
219
221
  </OText>
220
222
  </View>
223
+ {!hideIcons && (
224
+ <View style={styles.titleGroups}>
225
+ <View style={styles.shadow}>
226
+ {order?.business?.logo ? (
227
+ <OIcon
228
+ url={optimizeImage(
229
+ order?.business?.logo,
230
+ 'h_300,c_limit',
231
+ )}
232
+ style={styles.titleIcons}
233
+ />
234
+ ) : (
235
+ <OIcon
236
+ src={theme.images.dummies.businessLogo}
237
+ style={styles.titleIcons}
238
+ />
239
+ )}
240
+ </View>
221
241
 
222
- <View style={styles.titleGroups}>
223
- <View style={styles.shadow}>
224
- {order?.business?.logo ? (
242
+ <View style={styles.shadow}>
225
243
  <OIcon
226
244
  url={optimizeImage(
227
- order?.business?.logo,
245
+ order?.customer?.photo ||
246
+ theme?.images?.dummies?.customerPhoto,
228
247
  'h_300,c_limit',
229
248
  )}
230
249
  style={styles.titleIcons}
231
250
  />
232
- ) : (
233
- <OIcon
234
- src={theme.images.dummies.businessLogo}
235
- style={styles.titleIcons}
236
- />
237
- )}
238
- </View>
251
+ </View>
239
252
 
240
- <View style={styles.shadow}>
241
- <OIcon
242
- url={optimizeImage(
243
- order?.customer?.photo ||
244
- theme?.images?.dummies?.customerPhoto,
245
- 'h_300,c_limit',
246
- )}
247
- style={styles.titleIcons}
248
- />
253
+ {order?.driver && (
254
+ <View style={styles.shadow}>
255
+ <OIcon
256
+ url={
257
+ optimizeImage(
258
+ order?.driver?.photo,
259
+ 'h_300,c_limit',
260
+ ) || theme?.images?.dummies?.driverPhoto
261
+ }
262
+ style={styles.titleIcons}
263
+ />
264
+ </View>
265
+ )}
249
266
  </View>
250
-
251
- {order?.driver && (
252
- <View style={styles.shadow}>
253
- <OIcon
254
- url={
255
- optimizeImage(
256
- order?.driver?.photo,
257
- 'h_300,c_limit',
258
- ) || theme?.images?.dummies?.driverPhoto
259
- }
260
- style={styles.titleIcons}
261
- />
262
- </View>
263
- )}
264
- </View>
267
+ )}
265
268
  </View>
266
269
  )}
267
270
  {children}
@@ -21,8 +21,8 @@ export interface LoginParams {
21
21
  allowedLevels?: any;
22
22
  useRootPoint?: any;
23
23
  notificationState?: any;
24
- handleReCaptcha?: any;
25
- enableReCaptcha?: any;
24
+ handleReCaptcha?: any;
25
+ enableReCaptcha?: any;
26
26
  }
27
27
  export interface ProfileParams {
28
28
  navigation?: any;
@@ -41,6 +41,7 @@ export interface ProfileParams {
41
41
  validationFields?: any;
42
42
  showField?: any;
43
43
  isRequiredField?: any;
44
+ isAlsea?: boolean;
44
45
  }
45
46
 
46
47
  export interface AddressListParams {
@@ -255,6 +256,7 @@ export interface MessagesOptionParams {
255
256
  messagesReadList?: any;
256
257
  onNavigationRedirect?: any;
257
258
  setSortBy?: any;
259
+ getOrders: any
258
260
  }
259
261
  export interface OrdersOptionParams {
260
262
  orderList?: any;
@@ -265,7 +267,7 @@ export interface OrdersOptionParams {
265
267
  titleContent?: string;
266
268
  customArray?: Array<any>;
267
269
  loadMoreOrders?: () => {};
268
- loadOrders?: ({}: any) => {};
270
+ loadOrders?: ({ }: any) => {};
269
271
  messages?: any;
270
272
  setMessages?: () => {};
271
273
  loadMessages?: () => {};
@@ -279,7 +281,7 @@ export interface OrdersOptionParams {
279
281
  ordersGroup?: any;
280
282
  setOrdersGroup?: any;
281
283
  setCurrentFilters?: any;
282
- onFiltered?: ({}: any) => {};
284
+ onFiltered?: ({ }: any) => {};
283
285
  filtered?: any;
284
286
  handleClickOrder?: any;
285
287
  orderGroupStatusCustom?: {
@@ -290,9 +292,11 @@ export interface OrdersOptionParams {
290
292
  };
291
293
  isBusinessApp?: boolean;
292
294
  handleClickLogisticOrder: (status: number, orderId: number) => void,
293
- logisticOrders: {orders: Array<any>, loading: boolean, error: Array<string> | string},
295
+ logisticOrders: { orders: Array<any>, loading: boolean, error: Array<string> | string },
294
296
  loadLogisticOrders: () => void;
295
- isLogisticActivated?: boolean
297
+ isLogisticActivated?: boolean;
298
+ isAlsea?: boolean;
299
+ checkNotification?: boolean;
296
300
  }
297
301
  export interface ActiveOrdersParams {
298
302
  orders?: any;
@@ -390,6 +394,7 @@ export interface ProductItemAccordionParams {
390
394
  offsetDisabled?: any;
391
395
  isFromCheckout?: any;
392
396
  isClickableEvent?: any;
397
+ currency?: any;
393
398
  }
394
399
  export interface ReviewOrderParams {
395
400
  order?: { orderId: number; businessId: number; logo: string };
@@ -405,7 +410,7 @@ export interface MessagesParams {
405
410
  order?: any;
406
411
  orderId?: number;
407
412
  messages?: any;
408
- message?: string;
413
+ message: string;
409
414
  image?: string;
410
415
  messagesToShow?: any;
411
416
  sendMessage?: any;
@@ -561,13 +566,13 @@ export interface AcceptOrRejectOrderParams {
561
566
  }
562
567
 
563
568
  export interface MapViewParams {
564
- onNavigationRedirect: (page : string, params ?: any) => void,
569
+ onNavigationRedirect: (page: string, params?: any) => void,
565
570
  getBusinessLocations: () => void,
566
571
  isLoadingBusinessMarkers?: boolean,
567
572
  markerGroups: Array<any>,
568
573
  customerMarkerGroups: Array<any>,
569
574
  alertState: { open: boolean, content: Array<string>, key?: string | null },
570
- setAlertState: ({open, content, key} : { open: boolean, content: Array<string>, key?: string | null }) => void
575
+ setAlertState: ({ open, content, key }: { open: boolean, content: Array<string>, key?: string | null }) => void
571
576
  }
572
577
 
573
578
  export interface ReviewCustomerParams {
@@ -38,6 +38,8 @@ export const getTraduction = (key: string, t: any) => {
38
38
  ERROR_PRODUCT_NOT_FOUND: 'Error with the product',
39
39
  ERROR_USER_UPDATE_YOU_HAVE_ASSIGNED_ORDERS:
40
40
  "You can't because you have assigned orders",
41
+ ERROR_INVALID_OFFER: 'The offer doesn\'t exist',
42
+ ERROR_AUTH_DRIVER_LOGIN_VALIDATION: 'Error auth driver login validation'
41
43
  };
42
44
 
43
45
  return keyList[key] ? t(key, keyList[key]) : t(key);
@@ -343,3 +345,11 @@ export const getOrderStatus = (s: string, t: any) => {
343
345
 
344
346
  return objectStatus && objectStatus;
345
347
  };
348
+
349
+ export const transformDistance = (value : number, distanceUnit?: string) => {
350
+ return distanceUnit === 'mi'
351
+ ? (value / 1.609).toFixed(2)
352
+ : distanceUnit === 'ft'
353
+ ? (value * 3280.84).toFixed(0)
354
+ : (value).toFixed(2)
355
+ }
@@ -197,7 +197,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
197
197
  {isFarAway && (
198
198
  <FarAwayMessage style={styles.farAwayMsg}>
199
199
  <Ionicons name='md-warning-outline' style={styles.iconStyle} />
200
- <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'You are far from this address')}</OText>
200
+ <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'Your are far from this address')}</OText>
201
201
  </FarAwayMessage>
202
202
  )}
203
203
  {!auth && (
@@ -410,8 +410,7 @@ const LoginFormUI = (props: LoginParams) => {
410
410
  textInputProps={{
411
411
  returnKeyType: 'next',
412
412
  onSubmitEditing: () => inputRef?.current?.focus?.(),
413
- style: { borderWidth: 0, fontSize: 12 },
414
- maxLength: 10
413
+ style: { borderWidth: 0, fontSize: 12 }
415
414
  }}
416
415
  textWrapStyle={{ borderColor: theme.colors.clear, borderWidth: 0, height: 40, paddingStart: 0 }}
417
416
  />
@@ -155,7 +155,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
155
155
  {isFarAway && (
156
156
  <FarAwayMessage style={styles.farAwayMsg}>
157
157
  <Ionicons name='md-warning-outline' style={styles.iconStyle} />
158
- <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'You are far from this address')}</OText>
158
+ <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'Your are far from this address')}</OText>
159
159
  </FarAwayMessage>
160
160
  )}
161
161
  <View style={styles.wrapperOrderOptions}>
@@ -1,5 +1,5 @@
1
1
  import React, { useCallback, useEffect, useRef, useState } from 'react';
2
- import { PanResponder, TouchableOpacity, View } from 'react-native';
2
+ import { PanResponder, Platform, TouchableOpacity, View } from 'react-native';
3
3
  import {
4
4
  useLanguage,
5
5
  useOrder,
@@ -120,6 +120,7 @@ const BusinessMenu = (props:any): React.ReactElement => {
120
120
  }}
121
121
  >
122
122
  <Container nopadding nestedScrollEnabled>
123
+ {Platform.OS === 'android' && (<View style={{ paddingTop: 20 }} />)}
123
124
  <NavBar
124
125
  title={t('MENU_V21', 'Menu')}
125
126
  onActionLeft={goToBack}
@@ -56,9 +56,10 @@ const CartItem = (props: CartItemProps) => {
56
56
  return product
57
57
  }
58
58
  const isProductIngredients = productInfo()?.ingredients.length > 0 || productInfo()?.options.length > 0 || product?.comment
59
- const getFormattedSubOptionName = ({ quantity, name, position, price }: { quantity: number, name: string, position: string, price: number }) => {
59
+ const getFormattedSubOptionName = ({ quantity, name, position, price }: { quantity: number, name: string, position: string, price: any }) => {
60
60
  const pos = position ? `(${position})` : ''
61
- return `${quantity} x ${name} ${pos} +${price}`
61
+ const str = `${quantity} x ${name} ${pos}`
62
+ return price ? `${str} ${price}` : str
62
63
  }
63
64
 
64
65
  return (
@@ -184,7 +185,7 @@ const CartItem = (props: CartItemProps) => {
184
185
  quantity: suboption.quantity,
185
186
  name: suboption.name,
186
187
  position: (suboption.position !== 'whole') ? t(suboption.position.toUpperCase(), suboption.position) : '',
187
- price: parsePrice(suboption.price)
188
+ price: suboption.price > 0 && `+${parsePrice(suboption.price)}`
188
189
  })}
189
190
  </OText>
190
191
  </ProductSubOption>
@@ -141,6 +141,7 @@ const CategoriesMenu = (props: any): React.ReactElement => {
141
141
  }}
142
142
  >
143
143
  <Container nopadding nestedScrollEnabled>
144
+ {Platform.OS === 'android' && (<View style={{ paddingTop: 20 }} />)}
144
145
  <NavBar
145
146
  title={categories[curIndexCateg].name}
146
147
  onActionLeft={goToBack}
@@ -1,5 +1,5 @@
1
1
  import React, { useState, useEffect } from 'react';
2
-
2
+ import { _retrieveStoreData } from '../../../../../src/providers/StoreUtil';
3
3
  import {
4
4
  Checkout as CheckoutController,
5
5
  useOrder,
@@ -35,6 +35,20 @@ const CheckoutUI = (props: any) => {
35
35
  } = props
36
36
 
37
37
  const [errorCash, setErrorCash] = useState(false);
38
+ const [customerName, setCustomerName] = useState(null);
39
+
40
+ const getCustomerName = async () => {
41
+ const data = await _retrieveStoreData('customer_name');
42
+ setCustomerName(data?.customerName)
43
+ }
44
+
45
+ useEffect(() => {
46
+ if (!cartState.loading && cart && !cart?.valid && cart?.status === 2) {
47
+ navigation?.canGoBack() && navigation.goBack()
48
+ } else {
49
+ getCustomerName()
50
+ }
51
+ }, [cart])
38
52
 
39
53
  useEffect(() => {
40
54
  if (!cartState.loading && cart && !cart?.valid && cart?.status === 2) {
@@ -48,6 +62,7 @@ const CheckoutUI = (props: any) => {
48
62
  navigation={navigation}
49
63
  cart={cart}
50
64
  errors={errors}
65
+ customerName={customerName}
51
66
  onPaymentChange={handlePaymethodChange}
52
67
  onNavigationRedirect={onNavigationRedirect}
53
68
  paySelected={paymethodSelected}
@@ -110,7 +125,7 @@ export const Checkout = (props: any) => {
110
125
  loading: false,
111
126
  cart: result
112
127
  })
113
- } catch (error) {
128
+ } catch (error: any) {
114
129
  showToast(ToastType.Error, error?.toString() || error.message)
115
130
  }
116
131
  } else {
@@ -122,7 +137,7 @@ export const Checkout = (props: any) => {
122
137
  error: cart ? null : result
123
138
  })
124
139
  }
125
- } catch (e) {
140
+ } catch (e: any) {
126
141
  setCartState({
127
142
  ...cartState,
128
143
  loading: false,
@@ -113,12 +113,6 @@ const CustomerName = (props: Props): React.ReactElement => {
113
113
  style={{ bottom: 20 }}
114
114
  >
115
115
  {t('WHATS_YOUR_NAME', "What's your name?")}
116
- {/* <OText
117
- size={orientationState?.dimensions?.width * 0.05}
118
- weight={'700'}
119
- >
120
- {`${t('ORDER_BE_FOR', 'order be for?')}`}
121
- </OText> */}
122
116
  </OText>
123
117
  <Controller
124
118
  control={control}
@@ -53,5 +53,6 @@ const styles = StyleSheet.create({
53
53
  },
54
54
  shadowOpacity: 0.21,
55
55
  shadowRadius: 5,
56
+ elevation: 16
56
57
  }
57
58
  })
@@ -19,12 +19,12 @@ export const WrapperFloatBtn = styled.View`
19
19
  top: 10%;
20
20
  right: ${(props: any) => props.outside ? 11 : 58}%;
21
21
  z-index: 20002;
22
- elevation: 11;
22
+ elevation: 17;
23
23
  `;
24
24
 
25
25
  export const IconControl = styled.TouchableOpacity`
26
26
  background-color: ${(props: any) => props.theme.colors.white};
27
27
  padding: 10px;
28
28
  border-radius: 8px;
29
- elevation: 11;
29
+ elevation: 17;
30
30
  `;
@@ -1,10 +1,15 @@
1
- import React, { useEffect, useState } from 'react';
1
+ import React, { useEffect, useState, useRef } from 'react';
2
2
  import { StyleSheet, View } from 'react-native';
3
3
  import { useForm, Controller } from 'react-hook-form';
4
4
  import { useTheme } from 'styled-components/native';
5
+ import { TouchableOpacity } from 'react-native-gesture-handler';
6
+ import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
7
+ import Recaptcha from 'react-native-recaptcha-that-works'
8
+ import ReCaptcha from '@fatnlazycat/react-native-recaptcha-v3'
5
9
 
6
10
  import {
7
11
  LoginForm as LoginFormController,
12
+ useConfig,
8
13
  useLanguage,
9
14
  ToastType,
10
15
  useToast,
@@ -13,7 +18,8 @@ import {
13
18
 
14
19
  import {
15
20
  WelcomeTextContainer,
16
- LogoWrapper
21
+ LogoWrapper,
22
+ RecaptchaButton
17
23
  } from './styles';
18
24
 
19
25
  import { OText, OButton, OInput, OIcon } from '../shared';
@@ -26,14 +32,20 @@ const LoginFormUI = (props: LoginParams) => {
26
32
  loginButtonText,
27
33
  formState,
28
34
  handleButtonLoginClick,
29
- useRootPoint
35
+ useRootPoint,
36
+ handleReCaptcha,
37
+ enableReCaptcha
30
38
  } = props;
31
39
 
32
40
  const theme = useTheme()
41
+ const [{ configs }] = useConfig()
33
42
  const [ordering, { setOrdering }] = useApi();
34
43
  const [, { showToast }] = useToast();
35
44
  const [, t] = useLanguage();
36
- const {control, handleSubmit, formState: {errors}} = useForm();
45
+ const [recaptchaConfig, setRecaptchaConfig] = useState<any>({})
46
+ const [recaptchaVerified, setRecaptchaVerified] = useState(false)
47
+ const recaptchaRef = useRef<any>({});
48
+ const { control, handleSubmit, formState: { errors } } = useForm();
37
49
  const [orientationState] = useDeviceOrientation();
38
50
 
39
51
  const [formsStateValues, setFormsStateValues] = useState<any>({ isSubmitted: false })
@@ -60,6 +72,25 @@ const LoginFormUI = (props: LoginParams) => {
60
72
  onChange(value.toLowerCase().replace(/[&,()%";:ç?<>{}\\[\]\s]/g, ''));
61
73
  };
62
74
 
75
+ const handleOpenRecaptcha = () => {
76
+ setRecaptchaVerified(false)
77
+ if (!recaptchaConfig?.siteKey) {
78
+ showToast(ToastType.Error, t('NO_RECAPTCHA_SITE_KEY', 'The config doesn\'t have recaptcha site key'));
79
+ return
80
+ }
81
+ if (!recaptchaConfig?.baseUrl) {
82
+ showToast(ToastType.Error, t('NO_RECAPTCHA_BASE_URL', 'The config doesn\'t have recaptcha base url'));
83
+ return
84
+ }
85
+
86
+ recaptchaRef.current.open()
87
+ }
88
+
89
+ const onRecaptchaVerify = (token: any) => {
90
+ setRecaptchaVerified(true)
91
+ handleReCaptcha && handleReCaptcha({ code: token, version: recaptchaConfig?.version })
92
+ }
93
+
63
94
  const styles = StyleSheet.create({
64
95
  logo: {
65
96
  height: 80,
@@ -87,6 +118,20 @@ const LoginFormUI = (props: LoginParams) => {
87
118
 
88
119
  useEffect(() => {
89
120
  if (!formState.loading && formState.result?.error) {
121
+ if (formState.result?.result?.[0] === 'ERROR_AUTH_VERIFICATION_CODE') {
122
+ setRecaptchaVerified(false)
123
+ setRecaptchaConfig({
124
+ version: 'v2',
125
+ siteKey: configs?.security_recaptcha_site_key?.value || null,
126
+ baseUrl: configs?.security_recaptcha_base_url?.value || null
127
+ })
128
+ showToast(ToastType.Info, t('TRY_AGAIN', 'Please try again'))
129
+ setFormsStateValues({
130
+ ...formsStateValues,
131
+ isSubmitted: false,
132
+ })
133
+ return
134
+ }
90
135
  formState.result?.result && showToast(
91
136
  ToastType.Error,
92
137
  typeof formState.result?.result === 'string'
@@ -122,9 +167,32 @@ const LoginFormUI = (props: LoginParams) => {
122
167
  }
123
168
  }, [errors]);
124
169
 
170
+ useEffect(() => {
171
+ if (configs && Object.keys(configs).length > 0 && enableReCaptcha) {
172
+ if (configs?.security_recaptcha_type?.value === 'v3' &&
173
+ configs?.security_recaptcha_score_v3?.value > 0 &&
174
+ configs?.security_recaptcha_site_key_v3?.value
175
+ ) {
176
+ setRecaptchaConfig({
177
+ version: 'v3',
178
+ siteKey: configs?.security_recaptcha_site_key_v3?.value || null,
179
+ baseUrl: configs?.security_recaptcha_base_url?.value || null
180
+ })
181
+ return
182
+ }
183
+ if (configs?.security_recaptcha_site_key?.value) {
184
+ setRecaptchaConfig({
185
+ version: 'v2',
186
+ siteKey: configs?.security_recaptcha_site_key?.value || null,
187
+ baseUrl: configs?.security_recaptcha_base_url?.value || null
188
+ })
189
+ }
190
+ }
191
+ }, [configs, enableReCaptcha])
192
+
125
193
  const logo = (
126
194
  <LogoWrapper>
127
- <OIcon src={theme.images.logos.logotype} style={styles.logo}/>
195
+ <OIcon src={theme.images.logos.logotype} style={styles.logo} />
128
196
  </LogoWrapper>
129
197
  );
130
198
 
@@ -144,7 +212,7 @@ const LoginFormUI = (props: LoginParams) => {
144
212
  value={value}
145
213
  autoCapitalize='none'
146
214
  autoCorrect={false}
147
- inputStyle={{textAlign: 'center'}}
215
+ inputStyle={{ textAlign: 'center' }}
148
216
  onChange={(e: any) => {
149
217
  onChange(e?.target?.value);
150
218
  setFormsStateValues({
@@ -167,7 +235,7 @@ const LoginFormUI = (props: LoginParams) => {
167
235
  autoCapitalize="none"
168
236
  autoCorrect={false}
169
237
  type="email-address"
170
- inputStyle={{textAlign: 'center'}}
238
+ inputStyle={{ textAlign: 'center' }}
171
239
  onChange={(e: any) => {
172
240
  handleChangeInputEmail(e, onChange);
173
241
  }}
@@ -199,7 +267,7 @@ const LoginFormUI = (props: LoginParams) => {
199
267
  style={styles.inputStyle}
200
268
  value={value}
201
269
  onChange={(val: any) => onChange(val)}
202
- inputStyle={{textAlign: 'center'}}
270
+ inputStyle={{ textAlign: 'center' }}
203
271
  />
204
272
  )}
205
273
  name="password"
@@ -211,7 +279,49 @@ const LoginFormUI = (props: LoginParams) => {
211
279
  }}
212
280
  defaultValue=""
213
281
  />
214
-
282
+ {(recaptchaConfig?.version) && (
283
+ <>
284
+ {recaptchaConfig?.version === 'v3' ? (
285
+ <ReCaptcha
286
+ url={recaptchaConfig?.baseUrl}
287
+ siteKey={recaptchaConfig?.siteKey}
288
+ containerStyle={{ height: 40 }}
289
+ onExecute={onRecaptchaVerify}
290
+ reCaptchaType={1}
291
+ />
292
+ ) : (
293
+ <>
294
+ <TouchableOpacity
295
+ onPress={handleOpenRecaptcha}
296
+ >
297
+ <RecaptchaButton>
298
+ {recaptchaVerified ? (
299
+ <MaterialCommunityIcons
300
+ name="checkbox-marked"
301
+ size={26}
302
+ color={theme.colors.primary}
303
+ />
304
+ ) : (
305
+ <MaterialCommunityIcons
306
+ name="checkbox-blank-outline"
307
+ size={26}
308
+ color={theme.colors.mediumGray}
309
+ />
310
+ )}
311
+ <OText size={14} mLeft={8}>{t('VERIFY_ReCAPTCHA', 'Verify reCAPTCHA')}</OText>
312
+ </RecaptchaButton>
313
+ </TouchableOpacity>
314
+ <Recaptcha
315
+ ref={recaptchaRef}
316
+ siteKey={recaptchaConfig?.siteKey}
317
+ baseUrl={recaptchaConfig?.baseUrl}
318
+ onVerify={onRecaptchaVerify}
319
+ onExpire={() => setRecaptchaVerified(false)}
320
+ />
321
+ </>)
322
+ }
323
+ </>
324
+ )}
215
325
  <OButton
216
326
  onClick={handleSubmit(onSubmit)}
217
327
  text={loginButtonText}
@@ -280,7 +390,7 @@ const LoginFormUI = (props: LoginParams) => {
280
390
  ? 0 : 0,
281
391
  }}
282
392
  >
283
- { welcome }
393
+ {welcome}
284
394
  {orientationState?.orientation === LANDSCAPE && (
285
395
  <View style={{
286
396
  justifyContent: 'flex-end',
@@ -327,6 +437,7 @@ export const LoginForm = (props: any) => {
327
437
  const loginProps = {
328
438
  ...props,
329
439
  UIComponent: LoginFormUI,
440
+ isRecaptchaEnable: true
330
441
  };
331
442
  return <LoginFormController {...loginProps} />;
332
443
  };
@@ -7,3 +7,8 @@ export const LogoWrapper = styled.View`
7
7
  export const WelcomeTextContainer = styled.View`
8
8
  margin-bottom: 30px;
9
9
  `;
10
+ export const RecaptchaButton = styled.View`
11
+ flex-direction: row;
12
+ align-items: center;
13
+ margin-bottom: 10px;
14
+ `