ordering-ui-react-native 0.15.66 → 0.15.67-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 (214) hide show
  1. package/package.json +7 -3
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/AddressForm/index.tsx +18 -2
  4. package/src/components/BusinessBasicInformation/index.tsx +11 -19
  5. package/src/components/BusinessController/index.tsx +16 -8
  6. package/src/components/BusinessInformation/index.tsx +14 -0
  7. package/src/components/BusinessTypeFilter/index.tsx +1 -2
  8. package/src/components/BusinessesListing/index.tsx +1 -1
  9. package/src/components/Checkout/index.tsx +23 -2
  10. package/src/components/DriverTips/index.tsx +11 -6
  11. package/src/components/LanguageSelector/index.tsx +6 -2
  12. package/src/components/LoginForm/index.tsx +120 -30
  13. package/src/components/LoginForm/styles.tsx +6 -0
  14. package/src/components/OrderDetails/index.tsx +7 -21
  15. package/src/components/PaymentOptions/index.tsx +67 -50
  16. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  17. package/src/components/ReviewDriver/index.tsx +1 -1
  18. package/src/components/ReviewOrder/index.tsx +2 -1
  19. package/src/components/ReviewProducts/index.tsx +11 -0
  20. package/src/components/SignupForm/index.tsx +145 -61
  21. package/src/components/SingleProductCard/index.tsx +16 -4
  22. package/src/components/SingleProductReview/index.tsx +1 -1
  23. package/src/components/StripeMethodForm/index.tsx +22 -24
  24. package/src/components/UpsellingProducts/index.tsx +1 -1
  25. package/src/components/UserProfileForm/index.tsx +63 -6
  26. package/src/components/UserProfileForm/styles.tsx +8 -0
  27. package/src/components/VerifyPhone/styles.tsx +1 -2
  28. package/src/components/shared/OModal.tsx +1 -1
  29. package/src/hooks/useCountdownTimer.tsx +26 -0
  30. package/src/navigators/CheckoutNavigator.tsx +6 -0
  31. package/src/navigators/HomeNavigator.tsx +12 -0
  32. package/src/pages/BusinessesListing.tsx +7 -6
  33. package/src/pages/MultiCheckout.tsx +31 -0
  34. package/src/pages/MultiOrdersDetails.tsx +27 -0
  35. package/src/pages/OrderDetails.tsx +1 -1
  36. package/src/pages/ReviewDriver.tsx +2 -2
  37. package/src/pages/ReviewOrder.tsx +2 -2
  38. package/src/pages/Sessions.tsx +22 -0
  39. package/src/theme.json +0 -1
  40. package/src/types/index.tsx +18 -11
  41. package/src/utils/index.tsx +68 -1
  42. package/themes/business/index.tsx +4 -0
  43. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +103 -15
  44. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -0
  45. package/themes/business/src/components/Chat/index.tsx +42 -90
  46. package/themes/business/src/components/DriverMap/index.tsx +6 -5
  47. package/themes/business/src/components/DriverSchedule/index.tsx +71 -0
  48. package/themes/business/src/components/DriverSchedule/styles.tsx +6 -0
  49. package/themes/business/src/components/LoginForm/index.tsx +89 -2
  50. package/themes/business/src/components/LoginForm/styles.tsx +6 -0
  51. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  52. package/themes/business/src/components/NewOrderNotification/index.tsx +26 -13
  53. package/themes/business/src/components/OrderDetails/Business.tsx +2 -2
  54. package/themes/business/src/components/OrderDetails/Delivery.tsx +28 -11
  55. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +14 -7
  56. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +6 -0
  57. package/themes/business/src/components/OrdersListManager/index.tsx +1 -1
  58. package/themes/business/src/components/OrdersOption/index.tsx +8 -4
  59. package/themes/business/src/components/PreviousOrders/index.tsx +7 -7
  60. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  61. package/themes/business/src/components/ScheduleBlocked/index.tsx +53 -0
  62. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  63. package/themes/business/src/components/UserProfileForm/index.tsx +28 -4
  64. package/themes/business/src/components/shared/OModal.tsx +41 -38
  65. package/themes/business/src/types/index.tsx +8 -2
  66. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  67. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  68. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  69. package/themes/kiosk/src/components/BusinessMenu/index.tsx +39 -28
  70. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -3
  71. package/themes/kiosk/src/components/Cart/index.tsx +11 -12
  72. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +9 -2
  73. package/themes/kiosk/src/components/CartContent/index.tsx +0 -11
  74. package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
  75. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +107 -62
  76. package/themes/kiosk/src/components/Checkout/index.tsx +40 -22
  77. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  78. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  79. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  80. package/themes/kiosk/src/components/NavBar/index.tsx +29 -20
  81. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  82. package/themes/kiosk/src/components/OrderDetails/index.tsx +32 -27
  83. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +9 -11
  84. package/themes/kiosk/src/components/PaymentOptions/index.tsx +56 -54
  85. package/themes/kiosk/src/components/ProductForm/index.tsx +7 -8
  86. package/themes/kiosk/src/components/ProductItemAccordion/index.tsx +2 -2
  87. package/themes/kiosk/src/components/ProductOption/index.tsx +1 -1
  88. package/themes/kiosk/src/components/ProductOptionSubOption/index.tsx +3 -1
  89. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +16 -5
  90. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  91. package/themes/kiosk/src/types/index.d.ts +1 -0
  92. package/themes/original/index.tsx +30 -8
  93. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  94. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  95. package/themes/original/src/components/AddressForm/index.tsx +7 -6
  96. package/themes/original/src/components/AddressList/index.tsx +30 -18
  97. package/themes/original/src/components/AppleLogin/index.tsx +6 -8
  98. package/themes/original/src/components/BusinessBasicInformation/index.tsx +304 -158
  99. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
  100. package/themes/original/src/components/BusinessController/index.tsx +195 -96
  101. package/themes/original/src/components/BusinessController/styles.tsx +5 -0
  102. package/themes/original/src/components/BusinessItemAccordion/index.tsx +8 -5
  103. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  104. package/themes/original/src/components/BusinessListingSearch/index.tsx +231 -63
  105. package/themes/original/src/components/BusinessListingSearch/styles.tsx +22 -2
  106. package/themes/original/src/components/BusinessPreorder/index.tsx +1 -1
  107. package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -2
  108. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  109. package/themes/original/src/components/BusinessProductsList/index.tsx +53 -52
  110. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  111. package/themes/original/src/components/BusinessProductsListing/index.tsx +318 -155
  112. package/themes/original/src/components/BusinessProductsListing/styles.tsx +32 -0
  113. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  114. package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -39
  115. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  116. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +560 -0
  117. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
  118. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +679 -0
  119. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
  120. package/themes/original/src/components/BusinessesListing/index.tsx +99 -458
  121. package/themes/original/src/components/Cart/index.tsx +61 -42
  122. package/themes/original/src/components/Checkout/index.tsx +90 -39
  123. package/themes/original/src/components/DriverTips/index.tsx +17 -12
  124. package/themes/original/src/components/Favorite/index.tsx +92 -0
  125. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  126. package/themes/original/src/components/FavoriteList/index.tsx +298 -0
  127. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  128. package/themes/original/src/components/ForgotPasswordForm/index.tsx +84 -4
  129. package/themes/original/src/components/GPSButton/index.tsx +15 -8
  130. package/themes/original/src/components/GoogleMap/index.tsx +11 -11
  131. package/themes/original/src/components/Help/index.tsx +21 -4
  132. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  133. package/themes/original/src/components/LastOrders/index.tsx +12 -1
  134. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -0
  135. package/themes/original/src/components/LoginForm/Otp/styles.tsx +7 -0
  136. package/themes/original/src/components/LoginForm/index.tsx +332 -164
  137. package/themes/original/src/components/LoginForm/styles.tsx +1 -3
  138. package/themes/original/src/components/MessageListing/index.tsx +10 -1
  139. package/themes/original/src/components/Messages/index.tsx +1 -1
  140. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  141. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  142. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  143. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  144. package/themes/original/src/components/MultiCheckout/index.tsx +298 -0
  145. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  146. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  147. package/themes/original/src/components/MultiOrdersDetails/index.tsx +258 -0
  148. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  149. package/themes/original/src/components/MyOrders/index.tsx +120 -32
  150. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  151. package/themes/original/src/components/NavBar/index.tsx +4 -4
  152. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  153. package/themes/original/src/components/OrderDetails/index.tsx +148 -63
  154. package/themes/original/src/components/OrderDetails/styles.tsx +1 -2
  155. package/themes/original/src/components/OrderSummary/index.tsx +6 -6
  156. package/themes/original/src/components/OrderTypeSelector/index.tsx +79 -35
  157. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  158. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +153 -0
  159. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  160. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +53 -0
  161. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  162. package/themes/original/src/components/OrdersOption/index.tsx +137 -38
  163. package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
  164. package/themes/original/src/components/PaymentOptionCash/index.tsx +2 -2
  165. package/themes/original/src/components/PaymentOptionWallet/index.tsx +17 -23
  166. package/themes/original/src/components/PaymentOptionWallet/styles.tsx +1 -1
  167. package/themes/original/src/components/PaymentOptions/index.tsx +58 -37
  168. package/themes/original/src/components/PhoneInputNumber/index.tsx +5 -11
  169. package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
  170. package/themes/original/src/components/ProductForm/index.tsx +718 -679
  171. package/themes/original/src/components/ProductForm/styles.tsx +6 -2
  172. package/themes/original/src/components/ProductItemAccordion/index.tsx +2 -2
  173. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  174. package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -12
  175. package/themes/original/src/components/ProfessionalFilter/index.tsx +128 -0
  176. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  177. package/themes/original/src/components/ProfessionalProfile/index.tsx +298 -0
  178. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  179. package/themes/original/src/components/Promotions/index.tsx +151 -133
  180. package/themes/original/src/components/Promotions/styles.tsx +3 -23
  181. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  182. package/themes/original/src/components/ReviewOrder/index.tsx +1 -1
  183. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  184. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  185. package/themes/original/src/components/SearchBar/index.tsx +13 -5
  186. package/themes/original/src/components/ServiceForm/index.tsx +579 -0
  187. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  188. package/themes/original/src/components/Sessions/index.tsx +160 -0
  189. package/themes/original/src/components/Sessions/styles.tsx +15 -0
  190. package/themes/original/src/components/SignupForm/index.tsx +237 -126
  191. package/themes/original/src/components/SingleOrderCard/index.tsx +275 -0
  192. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  193. package/themes/original/src/components/SingleProductCard/index.tsx +215 -90
  194. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
  195. package/themes/original/src/components/StripeElementsForm/index.tsx +16 -8
  196. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  197. package/themes/original/src/components/UpsellingProducts/index.tsx +86 -74
  198. package/themes/original/src/components/UserDetails/index.tsx +15 -81
  199. package/themes/original/src/components/UserFormDetails/index.tsx +98 -66
  200. package/themes/original/src/components/UserProfile/index.tsx +11 -2
  201. package/themes/original/src/components/UserProfileForm/index.tsx +33 -22
  202. package/themes/original/src/components/UserVerification/index.tsx +178 -192
  203. package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
  204. package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
  205. package/themes/original/src/components/Wallets/index.tsx +25 -12
  206. package/themes/original/src/components/shared/OBottomPopup.tsx +44 -13
  207. package/themes/original/src/components/shared/OButton.tsx +2 -0
  208. package/themes/original/src/components/shared/OInput.tsx +3 -2
  209. package/themes/original/src/components/shared/OModal.tsx +4 -2
  210. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  211. package/themes/original/src/types/index.tsx +187 -35
  212. package/themes/original/src/utils/index.tsx +96 -2
  213. package/themes/single-business/src/components/OrderTypeSelector/index.tsx +1 -1
  214. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -77,6 +77,7 @@ export const OrderContentComponent = (props: OrderContent) => {
77
77
  })
78
78
 
79
79
  const getIncludedTaxes = () => {
80
+ if (!order?.taxes) return 0
80
81
  if (order?.taxes?.length === 0) {
81
82
  return order.tax_type === 1 ? order?.summary?.tax ?? 0 : 0
82
83
  } else {
@@ -273,8 +274,8 @@ export const OrderContentComponent = (props: OrderContent) => {
273
274
  <View style={styles.linkWithIcons}>
274
275
  <OLink
275
276
  PressStyle={styles.linkWithIcons}
276
- url={`tel:${order?.customer?.cellphone}`}
277
- shorcut={order?.customer?.cellphone}
277
+ url={`tel:${!!order?.customer?.country_phone_code ? '+' + order?.customer?.country_phone_code : ''} ${order?.customer?.cellphone}`}
278
+ shorcut={`${!!order?.customer?.country_phone_code ? '+' + order?.customer?.country_phone_code : ''} ${order?.customer?.cellphone}`}
278
279
  TextStyle={styles.textLink}
279
280
  />
280
281
  </View>
@@ -322,6 +323,12 @@ export const OrderContentComponent = (props: OrderContent) => {
322
323
  {order?.customer?.zipcode}
323
324
  </OText>
324
325
  )}
326
+
327
+ {!!order?.on_behalf_of && (
328
+ <OText numberOfLines={1} mBottom={4} ellipsizeMode="tail">
329
+ {t('ON_BEHALF_OF', 'On behalf of')}{': '} {order?.on_behalf_of}
330
+ </OText>
331
+ )}
325
332
  {((order?.delivery_option !== undefined && order?.delivery_type === 1) || !!order?.comment) && (
326
333
  <View style={{ marginTop: 10 }}>
327
334
  {order?.delivery_option !== undefined && order?.delivery_type === 1 && (
@@ -385,7 +392,7 @@ export const OrderContentComponent = (props: OrderContent) => {
385
392
  order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 1)?.map((offer: any) => (
386
393
  <Table key={offer.id}>
387
394
  <OSRow>
388
- <OText numberOfLines={1} mBottom={4}>
395
+ <OText mBottom={4}>
389
396
  {offer.name}
390
397
  {offer.rate_type === 1 && (
391
398
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
@@ -431,7 +438,7 @@ export const OrderContentComponent = (props: OrderContent) => {
431
438
  order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0).map((tax: any) => (
432
439
  <Table key={tax.id}>
433
440
  <OSRow>
434
- <OText numberOfLines={1} mBottom={4}>
441
+ <OText mBottom={4}>
435
442
  {tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
436
443
  {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
437
444
  </OText>
@@ -444,7 +451,7 @@ export const OrderContentComponent = (props: OrderContent) => {
444
451
  order?.fees?.length > 0 && order?.fees?.filter((fee: any) => !(fee.fixed === 0 && fee.percentage === 0))?.map((fee: any) => (
445
452
  <Table key={fee.id}>
446
453
  <OSRow>
447
- <OText numberOfLines={1} mBottom={4}>
454
+ <OText mBottom={4}>
448
455
  {fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
449
456
  ({fee?.fixed > 0 && `${parsePrice(fee?.fixed)} + `}{fee.percentage}%){' '}
450
457
  </OText>
@@ -457,7 +464,7 @@ export const OrderContentComponent = (props: OrderContent) => {
457
464
  order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 3)?.map((offer: any) => (
458
465
  <Table key={offer.id}>
459
466
  <OSRow>
460
- <OText numberOfLines={1} mBottom={4}>
467
+ <OText mBottom={4}>
461
468
  {offer.name}
462
469
  {offer.rate_type === 1 && (
463
470
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
@@ -485,7 +492,7 @@ export const OrderContentComponent = (props: OrderContent) => {
485
492
  order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
486
493
  <Table key={offer.id}>
487
494
  <OSRow>
488
- <OText numberOfLines={1} mBottom={4}>
495
+ <OText mBottom={4}>
489
496
  {offer.name}
490
497
  {offer.rate_type === 1 && (
491
498
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
@@ -268,6 +268,12 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
268
268
  <OText size={13} weight='bold'>{`${t('ORDER_TYPE', 'Order Type')}: `}</OText>
269
269
  {orderTypes(order.delivery_type)}
270
270
  </OText>
271
+ {order?.delivery_option && (
272
+ <OText size={13}>
273
+ <OText size={13} weight='bold'>{`${t('DELIVERY_PREFERENCE', 'Delivery Preference')}: `}</OText>
274
+ {order?.delivery_option?.name}
275
+ </OText>
276
+ )}
271
277
  {order?.payment_events?.length > 0 && (
272
278
  <View>
273
279
  <OText size={13}>
@@ -617,7 +617,7 @@ const OrdersListManagerUI = (props: OrdersOptionParams) => {
617
617
  </RightSide>
618
618
  </Sides>
619
619
 
620
- <NewOrderNotification />
620
+ <NewOrderNotification isBusinessApp={isBusinessApp} />
621
621
  {(openSearchModal || openSLASettingModal) && (
622
622
  <OModal open={openSearchModal || openSLASettingModal} entireModal customClose>
623
623
  <ModalContainer
@@ -88,7 +88,8 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
88
88
  handleClickLogisticOrder,
89
89
  logisticOrders,
90
90
  loadLogisticOrders,
91
- isLogisticActivated
91
+ isLogisticActivated,
92
+ isAlsea
92
93
  } = props;
93
94
 
94
95
  const defaultSearchList = {
@@ -545,7 +546,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
545
546
  </ScrollView>
546
547
  </FiltersTab>
547
548
  <View style={{ flex: 1, minHeight: HEIGHT_SCREEN - 450 }}>
548
- {currentTabSelected !== 'logisticOrders' && (
549
+ {currentTabSelected !== 'logisticOrders' && !isAlsea && (
549
550
  <View
550
551
  style={{
551
552
  display: 'flex',
@@ -725,8 +726,11 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
725
726
  </ScrollView>
726
727
  </View>
727
728
  {/* </GestureRecognizer> */}
728
-
729
- <NewOrderNotification />
729
+
730
+ {isBusinessApp && (
731
+ <NewOrderNotification isBusinessApp={isBusinessApp} />
732
+ )}
733
+
730
734
  {(openSearchModal || openSLASettingModal) && (
731
735
  <OModal open={openSearchModal || openSLASettingModal} entireModal customClose>
732
736
  <ModalContainer
@@ -31,8 +31,8 @@ export const PreviousOrders = (props: any) => {
31
31
  const theme = useTheme();
32
32
  const [, setCurrentTime] = useState()
33
33
  const [allowColumns, setAllowColumns] = useState({
34
- timer: true,
35
- slaBar: true,
34
+ timer: configState?.configs?.order_deadlines_enabled?.value === '1',
35
+ slaBar: configState?.configs?.order_deadlines_enabled?.value === '1',
36
36
  })
37
37
 
38
38
  const [orientationState] = useDeviceOrientation();
@@ -104,8 +104,8 @@ export const PreviousOrders = (props: any) => {
104
104
  const offset = 300
105
105
  const cdtToutc = moment(order?.delivery_datetime).add(offset, 'minutes').format('YYYY-MM-DD HH:mm:ss')
106
106
  const _delivery = order?.delivery_datetime_utc
107
- ? parseDate(order?.delivery_datetime_utc)
108
- : parseDate(cdtToutc)
107
+ ? parseDate(order?.delivery_datetime_utc, { outputFormat: 'YYYY-MM-DD hh:mm A' })
108
+ : parseDate(cdtToutc, { outputFormat: 'YYYY-MM-DD hh:mm A' })
109
109
  const _eta = order?.eta_time
110
110
  const diffTimeAsSeconds = moment(_delivery, 'YYYY-MM-DD hh:mm A').add(_eta, 'minutes').diff(moment().utc(), 'seconds')
111
111
  return Math.ceil(diffTimeAsSeconds / 60)
@@ -178,9 +178,9 @@ export const PreviousOrders = (props: any) => {
178
178
  activeOpacity={1}
179
179
  >
180
180
  <Card key={order.id}>
181
- {allowColumns?.slaBar && (
182
- <Timestatus style={{ backgroundColor: getStatusClassName(getDelayMinutes(order)) === 'in_time' ? '#00D27A' : getStatusClassName(getDelayMinutes(order)) === 'at_risk' ? '#FFC700' : getStatusClassName(getDelayMinutes(order)) === 'delayed' ? '#E63757' : '' }} />
183
- )}
181
+ {allowColumns?.slaBar && (
182
+ <Timestatus style={{ backgroundColor: getStatusClassName(getDelayMinutes(order)) === 'in_time' ? '#00D27A' : getStatusClassName(getDelayMinutes(order)) === 'at_risk' ? '#FFC700' : getStatusClassName(getDelayMinutes(order)) === 'delayed' ? '#E63757' : '' }} />
183
+ )}
184
184
  {
185
185
  order.business?.logo && (
186
186
  <Logo style={styles.logo}>
@@ -153,7 +153,7 @@ export const ProductItemAccordion = (props: ProductItemAccordionParams) => {
153
153
  {(
154
154
  productInfo?.()?.ingredients?.length > 0 ||
155
155
  productInfo?.()?.options?.length > 0 ||
156
- product.comment
156
+ !!product.comment
157
157
  ) && !isClickableEvent && (
158
158
  <MaterialCommunityIcon name="chevron-down" size={12} />
159
159
  )}
@@ -278,7 +278,7 @@ export const ProductItemAccordion = (props: ProductItemAccordionParams) => {
278
278
  </ProductOptionsList>
279
279
  )}
280
280
 
281
- {product.comment && (
281
+ {!!product.comment && (
282
282
  <ProductComment>
283
283
  <OText
284
284
  size={12}
@@ -0,0 +1,53 @@
1
+ import React from 'react'
2
+ import { Dimensions, View } from 'react-native'
3
+ import { OButton, OIcon, OText } from '../shared'
4
+ import { useLanguage, useSession } from 'ordering-components/native'
5
+ import { useTheme } from 'styled-components/native'
6
+
7
+ export const ScheduleBlocked = (props : any) => {
8
+ const { nextSchedule } = props
9
+ const [, t] = useLanguage()
10
+ const [, {logout}] = useSession()
11
+ const theme = useTheme()
12
+ const deviceWidth = Dimensions.get('screen').width
13
+
14
+ const daysOfWeek = [
15
+ t('SUNDAY', 'Sunday'),
16
+ t('MONDAY', 'Monday'),
17
+ t('TUESDAY', 'Tuesday'),
18
+ t('WEDNESDAY', 'Wednesday'),
19
+ t('THURSDAY', 'Thurday'),
20
+ t('FRIDAY', 'Friday'),
21
+ t('SATURDAY', 'Saturday'),
22
+ ]
23
+
24
+ const scheduleFormatted = ({ hour, minute }: any) => {
25
+ const checkTime = (val: number) => val < 10 ? `0${val}` : val
26
+ return `${checkTime(hour)}:${checkTime(minute)}`
27
+ }
28
+
29
+ const goBack = () => {
30
+ logout()
31
+ }
32
+
33
+ return (
34
+ <View style={{ alignItems: 'center', padding: 40 }}>
35
+ <OText size={20}>{t('YOU_CANT_LOGIN', 'You can\'t login')}</OText>
36
+ <OIcon
37
+ src={theme.images?.general?.deliveryWaiting}
38
+ width={(deviceWidth - 80) * 0.9}
39
+ height={(deviceWidth - 80) * 0.8}
40
+ />
41
+ <OText>{t('OUTSIDE_ESTABLISHED_SCHEDULE', 'You are outside the established schedule')}</OText>
42
+ <View style={{ flexDirection: 'row', marginBottom: 20 }}>
43
+ <OText color={theme.colors.primary}>{t('NEXT_TIME', 'Next time')}: </OText>
44
+ <OText>{daysOfWeek[nextSchedule?.day]} {scheduleFormatted(nextSchedule?.schedule?.open)}</OText>
45
+ </View>
46
+ <OButton
47
+ text={t('GO_BACK', 'Go back')}
48
+ textStyle={{ color: theme.colors.white }}
49
+ onClick={goBack}
50
+ />
51
+ </View>
52
+ )
53
+ }
@@ -36,6 +36,7 @@ export const UserFormDetailsUI = (props: any) => {
36
36
  handleCancelEdit,
37
37
  toggleIsEdit,
38
38
  isCheckout,
39
+ isAlsea
39
40
  } = props;
40
41
 
41
42
  const theme = useTheme();
@@ -265,7 +266,9 @@ export const UserFormDetailsUI = (props: any) => {
265
266
  }).map(
266
267
  (field: any) =>
267
268
  showField &&
268
- showField(field.code) && (
269
+ showField(field.code) &&
270
+ !isAlsea
271
+ && (
269
272
  <React.Fragment key={field.id}>
270
273
  <OText style={styles.label}>
271
274
  {t(field?.code.toUpperCase(), field?.name)}
@@ -442,7 +445,7 @@ export const UserFormDetailsUI = (props: any) => {
442
445
  </OText>
443
446
  )}
444
447
 
445
- {!!showInputPhoneNumber && (
448
+ {!!showInputPhoneNumber && !isAlsea && (
446
449
  <WrapperPhone>
447
450
  <PhoneInputNumber
448
451
  data={phoneInputData}
@@ -1,5 +1,5 @@
1
1
  import React, { useEffect, useState } from 'react';
2
- import { View, StyleSheet, ScrollView, ActivityIndicator } from 'react-native';
2
+ import { View, StyleSheet, ScrollView, ActivityIndicator, Pressable } from 'react-native';
3
3
  import { useForm } from 'react-hook-form';
4
4
  import { launchImageLibrary } from 'react-native-image-picker';
5
5
  import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder';
@@ -22,6 +22,7 @@ import {
22
22
  import { LogoutButton } from '../LogoutButton';
23
23
  import { LanguageSelector } from '../LanguageSelector';
24
24
  import { UserFormDetailsUI } from '../UserFormDetails';
25
+ import { DriverSchedule } from '../DriverSchedule'
25
26
  import ToggleSwitch from 'toggle-switch-react-native';
26
27
  import { UDWrapper } from '../UserFormDetails/styles';
27
28
  import {
@@ -30,11 +31,12 @@ import {
30
31
  OText,
31
32
  OButton,
32
33
  OInput,
34
+ OModal,
33
35
  } from '../../components/shared';
34
36
  import { sortInputFields, getTraduction } from '../../utils';
35
37
  import { ProfileParams } from '../../types';
36
38
  import { NotFoundSource } from '../NotFoundSource';
37
-
39
+ import AntDesignIcon from 'react-native-vector-icons/AntDesign'
38
40
  const ProfileUI = (props: ProfileParams) => {
39
41
  const {
40
42
  navigation,
@@ -47,6 +49,7 @@ const ProfileUI = (props: ProfileParams) => {
47
49
  handleToggleAvalaibleStatusDriver,
48
50
  userState,
49
51
  isAvailableLoading,
52
+ isAlsea
50
53
  } = props;
51
54
 
52
55
  const [{ user }] = useSession();
@@ -66,6 +69,7 @@ const ProfileUI = (props: ProfileParams) => {
66
69
  const [phoneUpdate, setPhoneUpdate] = useState(false);
67
70
  const [userPhoneNumber, setUserPhoneNumber] = useState<any>(null);
68
71
  const [phoneToShow, setPhoneToShow] = useState('');
72
+ const [openModal, setOpenModal] = useState(false)
69
73
 
70
74
  useEffect(() => {
71
75
  if (phoneInputData.phone.cellphone) {
@@ -456,10 +460,10 @@ const ProfileUI = (props: ProfileParams) => {
456
460
  hideUpdateButton
457
461
  handleCancelEdit={handleCancelEdit}
458
462
  toggleIsEdit={toggleIsEdit}
463
+ isAlsea={isAlsea}
459
464
  />
460
465
  </View>
461
466
  )}
462
-
463
467
  {!validationFields.loading && !isEdit && (
464
468
  <EditButton>
465
469
  <OButton
@@ -474,12 +478,32 @@ const ProfileUI = (props: ProfileParams) => {
474
478
  />
475
479
  </EditButton>
476
480
  )}
477
-
481
+ {!!user?.schedule && (
482
+ <Pressable style={{ marginBottom: 10 }} onPress={() => setOpenModal(true)}>
483
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>
484
+ <OText size={16}>{t('SCHEDULE', 'Schedule')}</OText>
485
+ <AntDesignIcon size={18} name='right' />
486
+ </View>
487
+ <View style={{
488
+ borderBottomColor: theme.colors.tabBar,
489
+ borderBottomWidth: 1,
490
+ marginTop: 10
491
+ }} />
492
+ </Pressable>
493
+ )}
478
494
  <Actions>
479
495
  <LanguageSelector />
480
496
 
481
497
  <LogoutButton />
482
498
  </Actions>
499
+ <OModal
500
+ open={openModal}
501
+ onClose={() => setOpenModal(false)}
502
+ entireModal
503
+ hideIcons
504
+ >
505
+ <DriverSchedule schedule={user?.schedule} />
506
+ </OModal>
483
507
  </ScrollView>
484
508
  )}
485
509
  </>
@@ -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}
@@ -20,6 +20,9 @@ export interface LoginParams {
20
20
  passwordInputIcon?: any;
21
21
  allowedLevels?: any;
22
22
  useRootPoint?: any;
23
+ notificationState?: any;
24
+ handleReCaptcha?: any;
25
+ enableReCaptcha?: any;
23
26
  }
24
27
  export interface ProfileParams {
25
28
  navigation?: any;
@@ -38,6 +41,7 @@ export interface ProfileParams {
38
41
  validationFields?: any;
39
42
  showField?: any;
40
43
  isRequiredField?: any;
44
+ isAlsea?: boolean;
41
45
  }
42
46
 
43
47
  export interface AddressListParams {
@@ -289,7 +293,8 @@ export interface OrdersOptionParams {
289
293
  handleClickLogisticOrder: (status: number, orderId: number) => void,
290
294
  logisticOrders: {orders: Array<any>, loading: boolean, error: Array<string> | string},
291
295
  loadLogisticOrders: () => void;
292
- isLogisticActivated?: boolean
296
+ isLogisticActivated?: boolean;
297
+ isAlsea?: boolean;
293
298
  }
294
299
  export interface ActiveOrdersParams {
295
300
  orders?: any;
@@ -373,6 +378,7 @@ export interface OrderDetailsParams {
373
378
  handleClickLogisticOrder?: (status: number, orderId: number) => void;
374
379
  orderTitle?: any;
375
380
  forceUpdate?: number;
381
+ getPermissions?: any
376
382
  }
377
383
  export interface ProductItemAccordionParams {
378
384
  isCartPending?: boolean;
@@ -578,4 +584,4 @@ export interface ReviewCustomerParams {
578
584
 
579
585
  export interface NoNetworkParams {
580
586
  image?: any;
581
- }
587
+ }
@@ -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,
@@ -40,7 +40,7 @@ const BusinessMenu = (props:any): React.ReactElement => {
40
40
  const clearCartWhenTimeOut = () => {
41
41
  if (cart?.uuid) clearCart(cart?.uuid)
42
42
  }
43
- const timerId = useRef(false);
43
+ const timerId: any = useRef(false);
44
44
 
45
45
  const clearInactivityTimeout = () =>{
46
46
  clearTimeout(timerId.current);
@@ -93,6 +93,17 @@ const BusinessMenu = (props:any): React.ReactElement => {
93
93
  else showCartBottomSheet();
94
94
  }
95
95
 
96
+ const handleRedirect = () => {
97
+ navigation.navigate('DeliveryType', {
98
+ callback: () => {
99
+ navigation.navigate('Business');
100
+ },
101
+ goBack: () => {
102
+ navigation.goBack();
103
+ },
104
+ });
105
+ };
106
+
96
107
  return (
97
108
  <View style={{
98
109
  flex: 1,
@@ -109,31 +120,31 @@ const BusinessMenu = (props:any): React.ReactElement => {
109
120
  }}
110
121
  >
111
122
  <Container nopadding nestedScrollEnabled>
112
- <View style={{ paddingTop: 20 }}>
113
- <NavBar
114
- title={t('MENU_V21', 'Menu')}
115
- onActionLeft={goToBack}
116
- includeOrderTypeSelector
117
- rightComponent={cart && (
118
- <TouchableOpacity
119
- style={{ paddingHorizontal: 20, flexDirection: 'row', alignItems: 'center' }}
120
- onPress={onToggleCart}
123
+ {Platform.OS === 'android' && (<View style={{ paddingTop: 20 }} />)}
124
+ <NavBar
125
+ title={t('MENU_V21', 'Menu')}
126
+ onActionLeft={goToBack}
127
+ includeOrderTypeSelector
128
+ onClickTypes={handleRedirect}
129
+ rightComponent={cart && (
130
+ <TouchableOpacity
131
+ style={{ flexDirection: 'row', alignItems: 'center' }}
132
+ onPress={onToggleCart}
133
+ >
134
+ <OText
135
+ color={theme.colors.mediumGray}
121
136
  >
122
- <OText
123
- color={theme.colors.mediumGray}
124
- >
125
- {`${cart?.products?.length || 0} ${t('ITEMS', 'items')}`} {parsePrice(cart?.total || 0)} {' '}
126
- </OText>
127
-
128
- <MaterialIcon
129
- name={bottomSheetVisibility ? "cart-off" : "cart-outline"}
130
- color={theme.colors.primary}
131
- size={30}
132
- />
133
- </TouchableOpacity>
134
- )}
135
- />
136
- </View>
137
+ {`${cart?.products?.length || 0} ${t('ITEMS', 'items')}`} {parsePrice(cart?.total || 0)} {' '}
138
+ </OText>
139
+
140
+ <MaterialIcon
141
+ name={bottomSheetVisibility ? "cart-off" : "cart-outline"}
142
+ color={theme.colors.primary}
143
+ size={30}
144
+ />
145
+ </TouchableOpacity>
146
+ )}
147
+ />
137
148
 
138
149
  <BusinessProductsListing
139
150
  { ...businessProductsListingProps }
@@ -144,7 +155,7 @@ const BusinessMenu = (props:any): React.ReactElement => {
144
155
  </Container>
145
156
  </View>
146
157
 
147
- <View
158
+ {/* <View
148
159
  style={{
149
160
  flex: bottomSheetVisibility && orientationState?.orientation === PORTRAIT ? 0 : 0.8,
150
161
  display: bottomSheetVisibility ? 'flex' : 'none'
@@ -155,7 +166,7 @@ const BusinessMenu = (props:any): React.ReactElement => {
155
166
  resetInactivityTimeout={resetInactivityTimeout}
156
167
  clearInactivityTimeout={clearInactivityTimeout}
157
168
  />
158
- </View>
169
+ </View> */}
159
170
  </View>
160
171
  );
161
172
  };