ordering-ui-react-native 0.17.5 → 0.17.6-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 (213) hide show
  1. package/package.json +5 -5
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessInformation/index.tsx +11 -4
  4. package/src/components/BusinessInformation/styles.tsx +2 -2
  5. package/src/components/BusinessesListing/index.tsx +1 -1
  6. package/src/components/OrderCreating/index.tsx +1 -21
  7. package/src/components/PaymentOptionsWebView/index.tsx +119 -120
  8. package/src/components/SingleProductReview/index.tsx +7 -4
  9. package/src/components/StripeMethodForm/index.tsx +6 -14
  10. package/src/components/VerifyPhone/styles.tsx +1 -2
  11. package/src/components/shared/OToast.tsx +4 -4
  12. package/src/utils/index.tsx +7 -1
  13. package/themes/business/index.tsx +2 -0
  14. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +265 -240
  15. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
  16. package/themes/business/src/components/BusinessController/index.tsx +0 -1
  17. package/themes/business/src/components/Chat/index.tsx +118 -107
  18. package/themes/business/src/components/DriverMap/index.tsx +22 -9
  19. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  20. package/themes/business/src/components/LoginForm/Otp/index.tsx +120 -0
  21. package/themes/business/src/components/LoginForm/Otp/styles.tsx +7 -0
  22. package/themes/business/src/components/LoginForm/index.tsx +238 -80
  23. package/themes/business/src/components/LoginForm/styles.tsx +10 -0
  24. package/themes/business/src/components/MapView/index.tsx +18 -7
  25. package/themes/business/src/components/NewOrderNotification/index.tsx +43 -50
  26. package/themes/business/src/components/OrderDetails/Delivery.tsx +4 -3
  27. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +96 -50
  28. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +59 -62
  29. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
  30. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  31. package/themes/business/src/components/OrderMessage/index.tsx +18 -17
  32. package/themes/business/src/components/OrderSummary/index.tsx +113 -121
  33. package/themes/business/src/components/OrdersOption/index.tsx +32 -75
  34. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +250 -0
  35. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  36. package/themes/business/src/components/PreviousOrders/index.tsx +445 -243
  37. package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
  38. package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
  39. package/themes/business/src/components/ReviewCustomer/index.tsx +41 -24
  40. package/themes/business/src/components/StoresList/index.tsx +2 -2
  41. package/themes/business/src/components/shared/OLink.tsx +33 -13
  42. package/themes/business/src/components/shared/OModal.tsx +16 -9
  43. package/themes/business/src/components/shared/OText.tsx +8 -2
  44. package/themes/business/src/types/index.tsx +33 -2
  45. package/themes/business/src/utils/index.tsx +51 -0
  46. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  47. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  48. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  49. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -1
  50. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  51. package/themes/kiosk/src/components/LoginForm/Otp/index.tsx +92 -0
  52. package/themes/kiosk/src/components/LoginForm/Otp/styles.tsx +7 -0
  53. package/themes/kiosk/src/components/LoginForm/index.tsx +473 -151
  54. package/themes/kiosk/src/components/LoginForm/styles.tsx +14 -1
  55. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  56. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  57. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  58. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +3 -2
  59. package/themes/kiosk/src/components/PhoneInputNumber/styles.tsx +1 -3
  60. package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
  61. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  62. package/themes/kiosk/src/components/shared/OModal.tsx +14 -11
  63. package/themes/kiosk/src/layouts/Container.tsx +7 -1
  64. package/themes/kiosk/src/types/index.d.ts +13 -0
  65. package/themes/kiosk/src/utils/index.tsx +15 -0
  66. package/themes/original/index.tsx +8 -0
  67. package/themes/original/src/components/AddressDetails/index.tsx +29 -11
  68. package/themes/original/src/components/AddressForm/index.tsx +41 -16
  69. package/themes/original/src/components/AddressList/index.tsx +26 -21
  70. package/themes/original/src/components/AddressList/styles.tsx +4 -2
  71. package/themes/original/src/components/AnalyticsSegment/index.tsx +189 -9
  72. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  73. package/themes/original/src/components/BusinessBasicInformation/index.tsx +125 -82
  74. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +9 -4
  75. package/themes/original/src/components/BusinessController/index.tsx +145 -68
  76. package/themes/original/src/components/BusinessController/styles.tsx +22 -9
  77. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  78. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  79. package/themes/original/src/components/BusinessInformation/index.tsx +10 -31
  80. package/themes/original/src/components/BusinessItemAccordion/index.tsx +24 -23
  81. package/themes/original/src/components/BusinessListingSearch/index.tsx +52 -24
  82. package/themes/original/src/components/BusinessPreorder/index.tsx +97 -16
  83. package/themes/original/src/components/BusinessProductsList/index.tsx +20 -11
  84. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  85. package/themes/original/src/components/BusinessProductsListing/index.tsx +617 -490
  86. package/themes/original/src/components/BusinessProductsListing/styles.tsx +7 -13
  87. package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
  88. package/themes/original/src/components/BusinessTypeFilter/index.tsx +3 -3
  89. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  90. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +98 -78
  91. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -9
  92. package/themes/original/src/components/BusinessesListing/index.tsx +5 -3
  93. package/themes/original/src/components/Cart/index.tsx +88 -43
  94. package/themes/original/src/components/CartContent/index.tsx +102 -3
  95. package/themes/original/src/components/CartContent/styles.tsx +15 -1
  96. package/themes/original/src/components/Checkout/index.tsx +311 -178
  97. package/themes/original/src/components/Checkout/styles.tsx +4 -2
  98. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  99. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  100. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  101. package/themes/original/src/components/DriverTips/index.tsx +52 -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 +70 -80
  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/styles.ts +3 -3
  109. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +96 -0
  110. package/themes/original/src/components/GiftCard/GiftCardUI/styles.tsx +5 -0
  111. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +100 -0
  112. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +8 -0
  113. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +178 -0
  114. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +8 -0
  115. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +165 -0
  116. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +9 -0
  117. package/themes/original/src/components/Help/index.tsx +8 -8
  118. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +11 -22
  119. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +6 -0
  120. package/themes/original/src/components/HelpGuide/index.tsx +12 -16
  121. package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
  122. package/themes/original/src/components/HelpOrder/index.tsx +12 -25
  123. package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
  124. package/themes/original/src/components/Home/index.tsx +13 -4
  125. package/themes/original/src/components/LanguageSelector/index.tsx +19 -14
  126. package/themes/original/src/components/LastOrder/index.tsx +1 -34
  127. package/themes/original/src/components/LoginForm/Otp/index.tsx +89 -73
  128. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  129. package/themes/original/src/components/LoginForm/index.tsx +43 -19
  130. package/themes/original/src/components/LottieAnimation/index.tsx +78 -0
  131. package/themes/original/src/components/MessageListing/index.tsx +16 -42
  132. package/themes/original/src/components/Messages/index.tsx +32 -10
  133. package/themes/original/src/components/MomentOption/index.tsx +195 -88
  134. package/themes/original/src/components/MultiCart/index.tsx +50 -0
  135. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +117 -96
  136. package/themes/original/src/components/MultiCheckout/index.tsx +248 -83
  137. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
  138. package/themes/original/src/components/MultiOrdersDetails/index.tsx +67 -20
  139. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
  140. package/themes/original/src/components/MyOrders/index.tsx +66 -17
  141. package/themes/original/src/components/NavBar/index.tsx +6 -11
  142. package/themes/original/src/components/Notifications/index.tsx +144 -0
  143. package/themes/original/src/components/Notifications/styles.tsx +20 -0
  144. package/themes/original/src/components/OrderDetails/OrderEta.tsx +61 -0
  145. package/themes/original/src/components/OrderDetails/index.tsx +262 -347
  146. package/themes/original/src/components/OrderDetails/styles.tsx +10 -1
  147. package/themes/original/src/components/OrderItAgain/index.tsx +47 -43
  148. package/themes/original/src/components/OrderProgress/index.tsx +74 -112
  149. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  150. package/themes/original/src/components/OrderSummary/index.tsx +68 -29
  151. package/themes/original/src/components/OrderTypeSelector/index.tsx +4 -3
  152. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +28 -19
  153. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +3 -0
  154. package/themes/original/src/components/OrdersOption/index.tsx +101 -89
  155. package/themes/original/src/components/PageBanner/index.tsx +171 -0
  156. package/themes/original/src/components/PageBanner/styles.tsx +11 -0
  157. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  158. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  159. package/themes/original/src/components/PaymentOptions/index.tsx +3 -3
  160. package/themes/original/src/components/PhoneInputNumber/index.tsx +3 -3
  161. package/themes/original/src/components/PlaceSpot/index.tsx +12 -6
  162. package/themes/original/src/components/PreviousOrders/index.tsx +3 -2
  163. package/themes/original/src/components/ProductForm/index.tsx +240 -261
  164. package/themes/original/src/components/ProductForm/styles.tsx +4 -7
  165. package/themes/original/src/components/ProductItemAccordion/index.tsx +197 -138
  166. package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -10
  167. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +1 -2
  168. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  169. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -49
  170. package/themes/original/src/components/ProfessionalProfile/index.tsx +54 -14
  171. package/themes/original/src/components/Promotions/index.tsx +234 -220
  172. package/themes/original/src/components/Promotions/styles.tsx +10 -3
  173. package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
  174. package/themes/original/src/components/ReviewOrder/index.tsx +26 -9
  175. package/themes/original/src/components/ReviewOrder/styles.tsx +7 -0
  176. package/themes/original/src/components/ReviewProducts/index.tsx +7 -4
  177. package/themes/original/src/components/ReviewTrigger/index.tsx +27 -9
  178. package/themes/original/src/components/ReviewTrigger/styles.tsx +8 -1
  179. package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
  180. package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
  181. package/themes/original/src/components/ServiceForm/index.tsx +377 -270
  182. package/themes/original/src/components/Sessions/index.tsx +11 -8
  183. package/themes/original/src/components/Sessions/styles.tsx +5 -0
  184. package/themes/original/src/components/SignupForm/index.tsx +79 -66
  185. package/themes/original/src/components/SingleOrderCard/index.tsx +148 -62
  186. package/themes/original/src/components/SingleOrderCard/styles.tsx +11 -9
  187. package/themes/original/src/components/SingleProductCard/index.tsx +111 -56
  188. package/themes/original/src/components/SingleProductCard/styles.tsx +27 -13
  189. package/themes/original/src/components/SingleProductReview/index.tsx +38 -5
  190. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  191. package/themes/original/src/components/StripeCardsList/index.tsx +1 -1
  192. package/themes/original/src/components/StripeElementsForm/index.tsx +4 -1
  193. package/themes/original/src/components/UpsellingProducts/index.tsx +238 -218
  194. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  195. package/themes/original/src/components/UserDetails/index.tsx +8 -4
  196. package/themes/original/src/components/UserFormDetails/index.tsx +53 -54
  197. package/themes/original/src/components/UserProfile/index.tsx +58 -35
  198. package/themes/original/src/components/UserProfile/styles.ts +17 -0
  199. package/themes/original/src/components/UserProfileForm/index.tsx +21 -28
  200. package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
  201. package/themes/original/src/components/Wallets/index.tsx +31 -17
  202. package/themes/original/src/components/Wallets/styles.tsx +2 -0
  203. package/themes/original/src/components/shared/CardAnimation.tsx +47 -0
  204. package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
  205. package/themes/original/src/components/shared/OBottomPopup.tsx +1 -1
  206. package/themes/original/src/components/shared/OButton.tsx +6 -2
  207. package/themes/original/src/components/shared/OIcon.tsx +8 -1
  208. package/themes/original/src/components/shared/OInput.tsx +10 -1
  209. package/themes/original/src/components/shared/OModal.tsx +3 -3
  210. package/themes/original/src/layouts/Container.tsx +13 -9
  211. package/themes/original/src/types/index.tsx +47 -9
  212. package/themes/original/src/utils/index.tsx +375 -58
  213. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -1,5 +1,5 @@
1
1
  import React, { useState } from 'react'
2
- import { View, TouchableOpacity } from 'react-native'
2
+ import { View, TouchableOpacity, Platform } from 'react-native'
3
3
  import { useLanguage, useSession, useUtils, Sessions as SessionsController } from 'ordering-components/native'
4
4
  import NavBar from '../NavBar'
5
5
  import { SessionsParams } from '../../types'
@@ -12,7 +12,8 @@ import AntIcon from 'react-native-vector-icons/AntDesign'
12
12
  import {
13
13
  SessionsWrapper,
14
14
  SessionItem,
15
- DurationWrapper
15
+ DurationWrapper,
16
+ Container
16
17
  } from './styles'
17
18
 
18
19
  export const SessionsUI = (props: SessionsParams) => {
@@ -27,7 +28,7 @@ export const SessionsUI = (props: SessionsParams) => {
27
28
  const [, t] = useLanguage()
28
29
  const [{ user }] = useSession()
29
30
  const [{ parseDate }] = useUtils()
30
- const theme = useTheme()
31
+ const theme = useTheme()
31
32
  const [confirm, setConfirm] = useState<any>({ open: false, content: null, handleOnAccept: null, id: null, title: null })
32
33
  const goToBack = () => navigation?.canGoBack() && navigation.goBack()
33
34
 
@@ -61,7 +62,9 @@ export const SessionsUI = (props: SessionsParams) => {
61
62
  }
62
63
 
63
64
  return (
64
- <>
65
+ <Container
66
+ pdng={Platform.OS === 'ios' ? '10px' : '0'}
67
+ >
65
68
  <NavBar
66
69
  title={t('SESSIONS', 'Sessions')}
67
70
  titleAlign={'center'}
@@ -77,11 +80,11 @@ export const SessionsUI = (props: SessionsParams) => {
77
80
  <SessionItem key={i}>
78
81
  <Placeholder Animation={Fade}>
79
82
  <View style={{ flexDirection: 'row', alignItems: 'center' }}>
80
- <View style={{ flex: 1}}>
83
+ <View style={{ flex: 1 }}>
81
84
  <PlaceholderLine width={40} />
82
85
  <PlaceholderLine width={40} />
83
86
  </View>
84
- <PlaceholderLine width={5}/>
87
+ <PlaceholderLine width={5} />
85
88
  </View>
86
89
  </Placeholder>
87
90
  </SessionItem>
@@ -120,7 +123,7 @@ export const SessionsUI = (props: SessionsParams) => {
120
123
  style={{ borderRadius: 7.6, marginTop: 20 }}
121
124
  />
122
125
  </SessionsWrapper>
123
- ) : (
126
+ ) : (
124
127
  <OText>{t('YOU_DONT_HAVE_ANY_SESSIONS', 'You don\'t have any sessions')}</OText>
125
128
  )
126
129
  )}
@@ -147,7 +150,7 @@ export const SessionsUI = (props: SessionsParams) => {
147
150
  onCancel={() => setConfirm({ ...confirm, open: false, title: null })}
148
151
  onClose={() => setConfirm({ ...confirm, open: false, title: null })}
149
152
  />
150
- </>
153
+ </Container>
151
154
  )
152
155
  }
153
156
 
@@ -13,3 +13,8 @@ export const SessionItem = styled.View`
13
13
  export const DurationWrapper = styled.View`
14
14
  /* flex-direction: row; */
15
15
  `
16
+
17
+ export const Container = styled.View`
18
+ padding-top: ${(props: any) => props.pdng};
19
+ margin-bottom: 50px;
20
+ `
@@ -1,5 +1,5 @@
1
1
  import React, { useEffect, useRef, useState } from 'react';
2
- import { View, Pressable, StyleSheet, Linking, Platform, TouchableOpacity } from 'react-native';
2
+ import { View, Pressable, StyleSheet, Linking, Platform, TouchableOpacity, Vibration } from 'react-native';
3
3
  import { useForm, Controller } from 'react-hook-form';
4
4
  import Spinner from 'react-native-loading-spinner-overlay';
5
5
  import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
@@ -83,7 +83,8 @@ const SignupFormUI = (props: SignupParams) => {
83
83
  signUpTab,
84
84
  useSignUpFullDetails,
85
85
  useSignUpOtpEmail,
86
- useSignUpOtpCellphone
86
+ useSignUpOtpCellphone,
87
+ isGuest
87
88
  } = props;
88
89
 
89
90
  const theme = useTheme();
@@ -245,6 +246,7 @@ const SignupFormUI = (props: SignupParams) => {
245
246
  const onSubmit = (values?: any) => {
246
247
  if (phoneInputData.error && signUpTab !== 'otpEmail') {
247
248
  showToast(ToastType.Error, phoneInputData.error);
249
+ Vibration.vibrate()
248
250
  return;
249
251
  }
250
252
  if (
@@ -262,6 +264,7 @@ const SignupFormUI = (props: SignupParams) => {
262
264
  'The field Mobile phone is required.',
263
265
  ),
264
266
  );
267
+ Vibration.vibrate()
265
268
  return;
266
269
  }
267
270
  if (signUpTab === 'otpEmail' || signUpTab === 'otpCellphone') {
@@ -330,6 +333,7 @@ const SignupFormUI = (props: SignupParams) => {
330
333
  await Linking.openURL(url);
331
334
  } else {
332
335
  showToast(ToastType.Error, t('VALIDATION_ERROR_ACTIVE_URL', 'The _attribute_ is not a valid URL.').replace('_attribute_', t('URL', 'URL')))
336
+ Vibration.vibrate()
333
337
  }
334
338
  }
335
339
 
@@ -337,10 +341,12 @@ const SignupFormUI = (props: SignupParams) => {
337
341
  setRecaptchaVerified(false)
338
342
  if (!recaptchaConfig?.siteKey) {
339
343
  showToast(ToastType.Error, t('NO_RECAPTCHA_SITE_KEY', 'The config doesn\'t have recaptcha site key'));
344
+ Vibration.vibrate()
340
345
  return
341
346
  }
342
347
  if (!recaptchaConfig?.baseUrl) {
343
348
  showToast(ToastType.Error, t('NO_RECAPTCHA_BASE_URL', 'The config doesn\'t have recaptcha base url'));
349
+ Vibration.vibrate()
344
350
  return
345
351
  }
346
352
  recaptchaRef.current.open()
@@ -384,10 +390,11 @@ const SignupFormUI = (props: SignupParams) => {
384
390
  baseUrl: configs?.security_recaptcha_base_url?.value || null
385
391
  })
386
392
  showToast(ToastType.Info, t('TRY_AGAIN', 'Please try again'))
393
+ Vibration.vibrate()
387
394
  return
388
395
  }
389
- formState.result?.result &&
390
- showToast(ToastType.Error, formState.result?.result[0]);
396
+ formState.result?.result && showToast(ToastType.Error, formState.result?.result[0]);
397
+ formState.result?.result && Vibration.vibrate()
391
398
  setIsLoadingVerifyModal(false);
392
399
  }
393
400
  }, [formState]);
@@ -395,6 +402,7 @@ const SignupFormUI = (props: SignupParams) => {
395
402
  useEffect(() => {
396
403
  if (Object.keys(errors).length > 0) {
397
404
  setIsLoadingVerifyModal(false);
405
+ Vibration.vibrate()
398
406
  }
399
407
  }, [errors])
400
408
 
@@ -423,6 +431,7 @@ const SignupFormUI = (props: SignupParams) => {
423
431
  ? verifyPhoneState?.result?.result
424
432
  : verifyPhoneState?.result?.result[0];
425
433
  verifyPhoneState.result?.result && showToast(ToastType.Error, message);
434
+ verifyPhoneState.result?.result && Vibration.vibrate()
426
435
  setIsLoadingVerifyModal(false);
427
436
  return;
428
437
  }
@@ -457,16 +466,19 @@ const SignupFormUI = (props: SignupParams) => {
457
466
 
458
467
  return (
459
468
  <View>
460
- <NavBar
461
- title={t('SIGNUP', 'Signup')}
462
- titleAlign={'center'}
463
- onActionLeft={() => navigation?.canGoBack() && navigation.goBack()}
464
- showCall={false}
465
- btnStyle={{ paddingLeft: 0 }}
466
- style={{ flexDirection: 'column', alignItems: 'flex-start' }}
467
- titleWrapStyle={{ paddingHorizontal: 0 }}
468
- titleStyle={{ marginLeft: 0, marginRight: 0 }}
469
- />
469
+ {isGuest ? (
470
+ <OText style={{ textAlign: 'center', marginBottom: 10 }} size={18}>{t('SIGNUP', 'Signup')}</OText>
471
+ ) : (
472
+ <NavBar
473
+ title={t('SIGNUP', 'Signup')}
474
+ titleAlign={'center'}
475
+ onActionLeft={() => navigation?.canGoBack() && navigation.goBack()}
476
+ showCall={false}
477
+ btnStyle={{ paddingLeft: 0 }}
478
+ titleWrapStyle={{ paddingHorizontal: 0 }}
479
+ titleStyle={{ marginLeft: 0, marginRight: 0 }}
480
+ />
481
+ )}
470
482
  <FormSide>
471
483
  {((Number(useSignUpFullDetails) + Number(useSignUpOtpEmail) + Number(useSignUpOtpCellphone)) > 1) && (
472
484
  <SignupWith>
@@ -579,7 +591,7 @@ const SignupFormUI = (props: SignupParams) => {
579
591
  control={control}
580
592
  render={({ onChange, value }: any) => (
581
593
  <OInput
582
- placeholder={t(field.name)}
594
+ placeholder={t(field.name?.replace(/\s/g, '_')?.toUpperCase(), field.name)}
583
595
  style={style.inputStyle}
584
596
  icon={
585
597
  field.code === 'email'
@@ -886,64 +898,65 @@ const SignupFormUI = (props: SignupParams) => {
886
898
  </View>
887
899
  )
888
900
  }
889
- <View
890
- style={{
891
- flexDirection: 'row',
892
- width: '100%',
893
- justifyContent: 'space-between',
894
- alignItems: 'center',
895
- marginVertical: 30,
896
- }}>
897
- <View style={style.line} />
898
- <OText
899
- size={14}
900
- mBottom={10}
901
- style={{ paddingHorizontal: 19 }}
902
- color={theme.colors.disabled}>
903
- {t('OR', 'or')}
904
- </OText>
905
- <View style={style.line} />
906
- </View>
907
-
908
- {configs && Object.keys(configs).length > 0 && (
909
- (((configs?.facebook_login?.value === 'true' || configs?.facebook_login?.value === '1') && configs?.facebook_id?.value) ||
910
- (configs?.google_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null)) &&
901
+ {configs && Object.keys(configs).length > 0 && !isGuest && (
902
+ (((configs?.facebook_login?.value === 'true' || configs?.facebook_login?.value === '1') && configs?.facebook_id?.value && facebookLoginEnabled) ||
903
+ ((configs?.google_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null) && googleLoginEnabled) ||
904
+ ((configs?.apple_login_client_id?.value !== '' && configs?.apple_login_client_id?.value !== null) && appleLoginEnabled)) &&
911
905
  (
912
- <ButtonsWrapper>
913
- <SocialButtons>
914
- {(configs?.facebook_login?.value === 'true' || configs?.facebook_login?.value === '1') &&
915
- configs?.facebook_id?.value &&
916
- facebookLoginEnabled &&
917
- (
918
- <FacebookLogin
906
+ <>
907
+ <View
908
+ style={{
909
+ flexDirection: 'row',
910
+ width: '100%',
911
+ justifyContent: 'space-between',
912
+ alignItems: 'center',
913
+ marginVertical: 30,
914
+ }}>
915
+ <View style={style.line} />
916
+ <OText
917
+ size={14}
918
+ mBottom={10}
919
+ style={{ paddingHorizontal: 19 }}
920
+ color={theme.colors.disabled}>
921
+ {t('OR', 'or')}
922
+ </OText>
923
+ <View style={style.line} />
924
+ </View>
925
+ <ButtonsWrapper>
926
+ <SocialButtons>
927
+ {(configs?.facebook_login?.value === 'true' || configs?.facebook_login?.value === '1') &&
928
+ configs?.facebook_id?.value &&
929
+ facebookLoginEnabled &&
930
+ (
931
+ <FacebookLogin
932
+ notificationState={notificationState}
933
+ handleErrors={(err: any) => { showToast(ToastType.Error, err), Vibration.vibrate() }}
934
+ handleLoading={(val: boolean) => setIsFBLoading(val)}
935
+ handleSuccessFacebookLogin={handleSuccessFacebook}
936
+ />
937
+ )}
938
+ {(configs?.google_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null) && googleLoginEnabled && (
939
+ <GoogleLogin
919
940
  notificationState={notificationState}
920
- handleErrors={(err: any) => showToast(ToastType.Error, err)}
941
+ webClientId={configs?.google_login_client_id?.value}
942
+ handleErrors={(err: any) => { showToast(ToastType.Error, err), Vibration.vibrate() }}
921
943
  handleLoading={(val: boolean) => setIsFBLoading(val)}
922
- handleSuccessFacebookLogin={handleSuccessFacebook}
944
+ handleSuccessGoogleLogin={handleSuccessFacebook}
923
945
  />
924
946
  )}
925
- {(configs?.google_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null) && googleLoginEnabled && (
926
- <GoogleLogin
927
- notificationState={notificationState}
928
- webClientId={configs?.google_login_client_id?.value}
929
- handleErrors={(err: any) => showToast(ToastType.Error, err)}
930
- handleLoading={(val: boolean) => setIsFBLoading(val)}
931
- handleSuccessGoogleLogin={handleSuccessFacebook}
932
- />
933
- )}
934
- {(configs?.apple_login_client_id?.value !== '' && configs?.apple_login_client_id?.value !== null) && appleLoginEnabled && (
935
- <AppleLogin
936
- notificationState={notificationState}
937
- handleErrors={(err: any) => showToast(ToastType.Error, err)}
938
- handleLoading={(val: boolean) => setIsFBLoading(val)}
939
- handleSuccessAppleLogin={handleSuccessFacebook}
940
- />
941
- )}
942
- </SocialButtons>
943
- </ButtonsWrapper>
947
+ {(configs?.apple_login_client_id?.value !== '' && configs?.apple_login_client_id?.value !== null) && appleLoginEnabled && (
948
+ <AppleLogin
949
+ notificationState={notificationState}
950
+ handleErrors={(err: any) => { showToast(ToastType.Error, err), Vibration.vibrate() }}
951
+ handleLoading={(val: boolean) => setIsFBLoading(val)}
952
+ handleSuccessAppleLogin={handleSuccessFacebook}
953
+ />
954
+ )}
955
+ </SocialButtons>
956
+ </ButtonsWrapper>
957
+ </>
944
958
  )
945
959
  )}
946
-
947
960
  </FormSide>
948
961
  <OModal
949
962
  open={willVerifyOtpState}
@@ -5,15 +5,14 @@ import {
5
5
  useOrder,
6
6
  useLanguage
7
7
  } from 'ordering-components/native';
8
+ import FastImage from 'react-native-fast-image'
8
9
  import { StyleSheet, TouchableOpacity, View } from 'react-native';
9
10
  import { useTheme } from 'styled-components/native';
10
11
  import { OIcon, OText, OButton } from '../shared';
11
- import IconAntDesign from 'react-native-vector-icons/AntDesign'
12
12
  import { SingleOrderCardParams } from '../../types';
13
13
  import { OAlert } from '../../../../../src/components/shared'
14
-
14
+ import { OrderEta } from '../OrderDetails/OrderEta'
15
15
  import {
16
- Container,
17
16
  InnerContainer,
18
17
  Logo,
19
18
  CardInfoWrapper,
@@ -21,8 +20,11 @@ import {
21
20
  ButtonWrapper,
22
21
  ContentFooter,
23
22
  UnreadMessageCounter,
24
- Price
23
+ Price,
24
+ MultiLogosContainer
25
25
  } from './styles';
26
+ import { LottieAnimation } from '../LottieAnimation';
27
+ import { CardAnimation } from '../shared/CardAnimation';
26
28
 
27
29
  const SingleOrderCardUI = (props: SingleOrderCardParams) => {
28
30
  const {
@@ -44,17 +46,28 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
44
46
  const [{ carts }] = useOrder()
45
47
  const theme = useTheme();
46
48
 
47
- const [reorderSelected, setReorderSelected] = useState<number | null>(null);
49
+ let [reorderSelected, setReorderSelected] = useState<number | null>(null);
48
50
  const [confirm, setConfirm] = useState<any>({ open: false, content: null, handleOnAccept: null, id: null, title: null })
51
+ const [isPressed, setIsPressed] = useState(false)
49
52
 
50
53
  const allowedOrderStatus = [1, 2, 5, 6, 10, 11, 12];
51
54
 
52
55
  const styles = StyleSheet.create({
56
+ container: {
57
+ borderRadius: 7.6,
58
+ marginBottom: 10,
59
+ paddingVertical: 5,
60
+ },
53
61
  logo: {
54
62
  borderRadius: 8,
55
63
  width: 64,
56
64
  height: 64
57
65
  },
66
+ minilogo: {
67
+ borderRadius: 8,
68
+ width: 40,
69
+ height: 40
70
+ },
58
71
  logoWrapper: {
59
72
  overflow: 'hidden',
60
73
  backgroundColor: 'white',
@@ -72,9 +85,13 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
72
85
  marginRight: 2,
73
86
  },
74
87
  reorderLoading: {
75
- width: 80,
76
- height: 40,
77
- borderRadius: 10,
88
+ height: 23,
89
+ paddingLeft: 20,
90
+ paddingRight: 20,
91
+ borderRadius: 23,
92
+ shadowOpacity: 0,
93
+ backgroundColor: theme.colors.primary,
94
+ borderWidth: 0,
78
95
  },
79
96
  reorderbutton: {
80
97
  height: 23,
@@ -100,23 +117,41 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
100
117
  infoText: {
101
118
  flexDirection: 'row',
102
119
  alignItems: 'center'
120
+ },
121
+ cardAnimation: {
122
+ elevation: isPressed ? 2 : 0,
123
+ shadowColor: '#888',
124
+ shadowOffset: { width: 0, height: isPressed ? 2 : 0 },
125
+ shadowRadius: 18,
126
+ shadowOpacity: isPressed ? 0.8 : 0,
127
+ borderRadius: 12,
103
128
  }
104
129
  });
105
130
 
106
131
  const handleReorderClick = (order: any) => {
107
- if (carts[`businessId:${order?.business_id}`] && carts[`businessId:${order?.business_id}`]?.products?.length > 0) {
132
+ setReorderSelected(null)
133
+ reorderSelected = null
134
+ const isMultiOrders = Array.isArray(order?.id)
135
+
136
+ const isRemoveCart = isMultiOrders
137
+ ? order?.business_id?.some((businessId: any) => !!carts[`businessId:${businessId}`]?.uuid)
138
+ : carts[`businessId:${order?.business_id}`] && !!carts[`businessId:${order?.business_id}`]?.uuid
139
+
140
+ if (isRemoveCart) {
108
141
  setConfirm({
109
142
  open: true,
110
143
  content: [t('QUESTION_DELETE_PRODUCTS_FROM_CART', 'Are you sure that you want to delete all products from cart?')],
111
144
  title: t('ORDER', 'Order'),
112
145
  handleOnAccept: async () => {
113
- handleRemoveCart()
146
+ handleRemoveCart(order)
114
147
  setConfirm({ ...confirm, open: false })
115
148
  }
116
149
  })
117
150
  } else {
118
- setReorderSelected(order?.id);
119
- handleReorder && handleReorder(order?.id);
151
+ const orderId = Array.isArray(order?.id) ? order?.id[0] : order?.id
152
+ setReorderSelected(orderId)
153
+ reorderSelected = orderId
154
+ handleReorder && handleReorder(order?.id)
120
155
  }
121
156
  };
122
157
 
@@ -127,11 +162,12 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
127
162
  order: {
128
163
  id: order?.id,
129
164
  business_id: order?.business_id,
130
- logo: order?.business?.logo,
165
+ logo: order?.business?.length > 1 ? order?.business?.map?.((business: any) => business?.logo) : order?.business?.logo,
131
166
  driver: order?.driver,
132
167
  products: order?.products,
133
168
  review: order?.review,
134
- user_review: order?.user_review
169
+ user_review: order?.user_review,
170
+ business: order?.business
135
171
  },
136
172
  });
137
173
  return
@@ -144,13 +180,16 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
144
180
  onNavigationRedirect('OrderDetails', { orderId: order?.uuid });
145
181
  };
146
182
 
147
- const handleClickViewOrder = (uuid: string) => {
183
+ const handleClickViewOrder = (order: any) => {
148
184
  if (isMessageView) {
149
185
  handleClickOrder(order?.uuid)
150
186
  return
151
187
  }
152
- onNavigationRedirect &&
153
- onNavigationRedirect('OrderDetails', { orderId: uuid });
188
+ if (order?.cart_group_id) {
189
+ onNavigationRedirect?.('MultiOrdersDetails', { orderId: order?.cart_group_id });
190
+ } else {
191
+ onNavigationRedirect?.('OrderDetails', { orderId: order?.uuid });
192
+ }
154
193
  };
155
194
 
156
195
  const handleChangeFavorite = () => {
@@ -159,32 +198,71 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
159
198
 
160
199
  const handleOriginalReorder = () => {
161
200
  setConfirm({ ...confirm, open: false, title: null })
162
- setReorderSelected(order?.id);
163
- handleReorder && handleReorder(order?.id);
164
201
  }
165
202
 
203
+ const hideBusinessLogo = theme?.orders?.components?.business_logo?.hidden
204
+ const hideDate = theme?.orders?.components?.date?.hidden
205
+ const hideBusinessName = theme?.orders?.components?.business_name?.hidden
206
+ const hideOrderNumber = theme?.orders?.components?.order_number?.hidden
207
+ const hideReviewOrderButton = theme?.orders?.components?.review_order_button?.hidden
208
+ const hideReorderButton = theme?.orders?.components?.reorder_button?.hidden
209
+ const hideFavorite = theme?.orders?.components?.favorite?.hidden
210
+ const hideOrderStatus = theme?.orders?.components?.order_status?.hidden
211
+
166
212
  return (
167
213
  <>
168
- <Container
169
- onPress={() => handleClickViewOrder(order?.uuid)}
170
- activeOpacity={0.7}
214
+ <CardAnimation
215
+ onClick={() => handleClickViewOrder(order)}
216
+ style={[styles.container]}
171
217
  >
172
218
  <InnerContainer>
173
- {(!!order.business?.logo || theme?.images?.dummies?.businessLogo) && (
174
- <Logo style={styles.logoWrapper}>
175
- <OIcon
176
- url={optimizeImage(order.business?.logo || theme?.images?.dummies?.businessLogo, 'h_300,c_limit')}
177
- style={styles.logo}
178
- />
179
- </Logo>
219
+ {!hideBusinessLogo && (!!order.business?.logo || theme?.images?.dummies?.businessLogo) && (
220
+ <>
221
+ {order?.business?.length > 1 ? (
222
+ <MultiLogosContainer>
223
+ {order?.business?.map((business: any, i: number) => i < 2 && (
224
+ <Logo
225
+ isMulti
226
+ key={business?.id}
227
+ style={styles.logoWrapper}
228
+ >
229
+ <FastImage
230
+ style={styles.minilogo}
231
+ source={business?.logo ? {
232
+ uri: optimizeImage(business?.logo, 'h_300,c_limit'),
233
+ priority: FastImage.priority.normal,
234
+ } : theme?.images?.dummies?.businessLogo}
235
+ resizeMode={FastImage.resizeMode.contain}
236
+ />
237
+ </Logo>
238
+ ))}
239
+ {order?.business?.length > 1 && (order?.business?.length - 2) > 0 && (
240
+ <OText mRight={3}> + {order?.business?.length - 2}</OText>
241
+ )}
242
+ </MultiLogosContainer>
243
+ ) : (
244
+ <Logo style={styles.logoWrapper}>
245
+ <FastImage
246
+ style={styles.logo}
247
+ source={order.business?.logo ? {
248
+ uri: optimizeImage(order.business?.logo, 'h_300,c_limit'),
249
+ priority: FastImage.priority.normal,
250
+ } : theme?.images?.dummies?.businessLogo}
251
+ resizeMode={FastImage.resizeMode.contain}
252
+ />
253
+ </Logo>
254
+ )}
255
+ </>
180
256
  )}
181
257
  <CardInfoWrapper>
182
258
  <ContentHeader>
183
- <View style={{ flex: 1 }}>
184
- <OText size={12} lineHeight={18} weight={'600'} numberOfLines={1} ellipsizeMode={'tail'}>
185
- {order.business?.name}
186
- </OText>
187
- </View>
259
+ {(order?.business?.length > 1 && !hideOrderNumber) || (!order?.business?.length && !hideBusinessName) && (
260
+ <View style={{ flex: 1 }}>
261
+ <OText size={12} lineHeight={18} weight={'600'} numberOfLines={1} ellipsizeMode={'tail'}>
262
+ {order?.business?.length > 1 ? `${t('GROUP_ORDER', 'Group Order')} ${t('No', 'No')}. ${order?.cart_group_id}` : order.business?.name}
263
+ </OText>
264
+ </View>
265
+ )}
188
266
  {!!!pastOrders && (
189
267
  <>
190
268
  {isMessageView ? (
@@ -208,7 +286,8 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
208
286
  )}
209
287
  {!!pastOrders && (
210
288
  <ButtonWrapper>
211
- {allowedOrderStatus.includes(parseInt(order?.status)) &&
289
+ {!hideReviewOrderButton &&
290
+ allowedOrderStatus.includes(parseInt(order?.status)) &&
212
291
  !order.review && (
213
292
  <TouchableOpacity
214
293
  onPress={() => handleClickOrderReview(order)}
@@ -218,7 +297,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
218
297
  </OText>
219
298
  </TouchableOpacity>
220
299
  )}
221
- {order.cart && (
300
+ {!hideReorderButton && typeof order?.id === 'number' && (
222
301
  <OButton
223
302
  text={t('REORDER', 'Reorder')}
224
303
  imgRightSrc={''}
@@ -238,7 +317,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
238
317
  <ContentFooter>
239
318
  <View style={{ flex: 1 }}>
240
319
  <View style={styles.infoText}>
241
- {!!!pastOrders && (
320
+ {(!!!pastOrders || order?.business?.length > 1) && !hideOrderNumber && (
242
321
  <>
243
322
  <OText
244
323
  size={10}
@@ -248,7 +327,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
248
327
  lineHeight={15}
249
328
  numberOfLines={1}
250
329
  >
251
- {t('ORDER_NO', 'Order No') + '.'}
330
+ {order?.business?.length > 1 ? order?.business?.length : (t('ORDER_NO', 'Order No') + '.')}
252
331
  </OText>
253
332
  <OText
254
333
  size={10}
@@ -257,43 +336,50 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
257
336
  lineHeight={15}
258
337
  numberOfLines={1}
259
338
  >
260
- {order.id + ` \u2022 `}
339
+ {order?.business?.length > 1 ? t('ORDERS', 'orders') + ' \u2022 ' : order.id + ` \u2022 `}
261
340
  </OText>
262
341
  </>
263
342
  )}
343
+ {!hideDate && (
344
+ <OText
345
+ size={10}
346
+ lineHeight={15}
347
+ color={theme.colors.textSecondary}
348
+ style={{ marginVertical: 3 }}
349
+ numberOfLines={1}>
350
+ {
351
+ pastOrders
352
+ ? order?.delivery_datetime_utc ? parseDate(order?.delivery_datetime_utc) : parseDate(order?.delivery_datetime, { utc: false })
353
+ : <OrderEta order={order} />
354
+ }
355
+ </OText>
356
+ )}
357
+ </View>
358
+ {!hideOrderStatus && (
264
359
  <OText
360
+ color={theme.colors.primary}
265
361
  size={10}
266
362
  lineHeight={15}
267
- color={theme.colors.textSecondary}
268
- style={{ marginVertical: 3 }}
269
363
  numberOfLines={1}>
270
- {order?.delivery_datetime_utc ? parseDate(order?.delivery_datetime_utc) : parseDate(order?.delivery_datetime, { utc: false })}
364
+ {getOrderStatus(order.status)?.value}
271
365
  </OText>
272
- </View>
273
- <OText
274
- color={theme.colors.primary}
275
- size={10}
276
- lineHeight={15}
277
- numberOfLines={1}>
278
- {getOrderStatus(order.status)?.value}
279
- </OText>
366
+ )}
280
367
  </View>
281
- {!isMessageView && (
282
- <TouchableOpacity
283
- onPress={handleChangeFavorite}
284
- style={{ marginTop: 5 }}
285
- >
286
- <IconAntDesign
287
- name={order?.favorite ? 'heart' : 'hearto'}
288
- color={theme.colors.danger5}
289
- size={16}
290
- />
291
- </TouchableOpacity>
368
+ {!isMessageView && !order?.business?.length && !hideFavorite && (
369
+ <LottieAnimation
370
+ type='favorite'
371
+ onClick={handleChangeFavorite}
372
+ initialValue={order?.favorite ? 0.75 : 0}
373
+ toValue={order?.favorite ? 0 : 0.75}
374
+ style={{ marginBottom: 5 }}
375
+ iconProps={{ color: theme.colors.danger5, size: 16, style: { top: 7 } }}
376
+ isActive={order?.favorite}
377
+ />
292
378
  )}
293
379
  </ContentFooter>
294
380
  </CardInfoWrapper>
295
381
  </InnerContainer>
296
- </Container>
382
+ </CardAnimation>
297
383
  <OAlert
298
384
  open={confirm.open}
299
385
  title={confirm.title}