ordering-ui-react-native 0.17.2 → 0.17.3-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 (215) hide show
  1. package/package.json +5 -5
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/ActiveOrders/styles.tsx +8 -14
  4. package/src/components/BusinessInformation/index.tsx +11 -4
  5. package/src/components/BusinessInformation/styles.tsx +2 -2
  6. package/src/components/BusinessesListing/index.tsx +1 -1
  7. package/src/components/OrderCreating/index.tsx +1 -21
  8. package/src/components/OrdersOption/index.tsx +54 -56
  9. package/src/components/PaymentOptionsWebView/index.tsx +119 -120
  10. package/src/components/SingleProductReview/index.tsx +7 -4
  11. package/src/components/StripeMethodForm/index.tsx +1 -1
  12. package/src/components/VerifyPhone/styles.tsx +1 -2
  13. package/src/components/shared/OToast.tsx +4 -4
  14. package/src/utils/index.tsx +7 -1
  15. package/themes/business/index.tsx +2 -0
  16. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +265 -240
  17. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
  18. package/themes/business/src/components/BusinessController/index.tsx +0 -1
  19. package/themes/business/src/components/Chat/index.tsx +118 -107
  20. package/themes/business/src/components/DriverMap/index.tsx +22 -9
  21. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  22. package/themes/business/src/components/LoginForm/Otp/index.tsx +120 -0
  23. package/themes/business/src/components/LoginForm/Otp/styles.tsx +7 -0
  24. package/themes/business/src/components/LoginForm/index.tsx +238 -80
  25. package/themes/business/src/components/LoginForm/styles.tsx +10 -0
  26. package/themes/business/src/components/MapView/index.tsx +18 -7
  27. package/themes/business/src/components/NewOrderNotification/index.tsx +34 -44
  28. package/themes/business/src/components/OrderDetails/Delivery.tsx +4 -3
  29. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +96 -50
  30. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +59 -62
  31. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
  32. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  33. package/themes/business/src/components/OrderMessage/index.tsx +18 -17
  34. package/themes/business/src/components/OrderSummary/index.tsx +113 -121
  35. package/themes/business/src/components/OrdersOption/index.tsx +32 -75
  36. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +250 -0
  37. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  38. package/themes/business/src/components/PreviousOrders/index.tsx +445 -243
  39. package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
  40. package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
  41. package/themes/business/src/components/ReviewCustomer/index.tsx +41 -24
  42. package/themes/business/src/components/StoresList/index.tsx +2 -2
  43. package/themes/business/src/components/shared/OLink.tsx +33 -13
  44. package/themes/business/src/components/shared/OModal.tsx +16 -9
  45. package/themes/business/src/components/shared/OText.tsx +8 -2
  46. package/themes/business/src/types/index.tsx +33 -2
  47. package/themes/business/src/utils/index.tsx +51 -0
  48. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  49. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  50. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  51. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -1
  52. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  53. package/themes/kiosk/src/components/LoginForm/Otp/index.tsx +92 -0
  54. package/themes/kiosk/src/components/LoginForm/Otp/styles.tsx +7 -0
  55. package/themes/kiosk/src/components/LoginForm/index.tsx +473 -151
  56. package/themes/kiosk/src/components/LoginForm/styles.tsx +14 -1
  57. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  58. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  59. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  60. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +3 -2
  61. package/themes/kiosk/src/components/PhoneInputNumber/styles.tsx +1 -3
  62. package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
  63. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  64. package/themes/kiosk/src/components/shared/OModal.tsx +14 -11
  65. package/themes/kiosk/src/layouts/Container.tsx +7 -1
  66. package/themes/kiosk/src/types/index.d.ts +13 -0
  67. package/themes/kiosk/src/utils/index.tsx +15 -0
  68. package/themes/original/index.tsx +8 -0
  69. package/themes/original/src/components/AddressDetails/index.tsx +29 -11
  70. package/themes/original/src/components/AddressForm/index.tsx +41 -16
  71. package/themes/original/src/components/AddressList/index.tsx +26 -21
  72. package/themes/original/src/components/AddressList/styles.tsx +4 -2
  73. package/themes/original/src/components/AnalyticsSegment/index.tsx +189 -9
  74. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  75. package/themes/original/src/components/BusinessBasicInformation/index.tsx +125 -82
  76. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +9 -4
  77. package/themes/original/src/components/BusinessController/index.tsx +145 -68
  78. package/themes/original/src/components/BusinessController/styles.tsx +22 -9
  79. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  80. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  81. package/themes/original/src/components/BusinessInformation/index.tsx +10 -31
  82. package/themes/original/src/components/BusinessItemAccordion/index.tsx +24 -23
  83. package/themes/original/src/components/BusinessListingSearch/index.tsx +52 -24
  84. package/themes/original/src/components/BusinessPreorder/index.tsx +97 -16
  85. package/themes/original/src/components/BusinessProductsList/index.tsx +20 -11
  86. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  87. package/themes/original/src/components/BusinessProductsListing/index.tsx +617 -490
  88. package/themes/original/src/components/BusinessProductsListing/styles.tsx +7 -13
  89. package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
  90. package/themes/original/src/components/BusinessTypeFilter/index.tsx +3 -3
  91. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  92. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +98 -78
  93. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -9
  94. package/themes/original/src/components/BusinessesListing/index.tsx +5 -3
  95. package/themes/original/src/components/Cart/index.tsx +88 -43
  96. package/themes/original/src/components/CartContent/index.tsx +102 -3
  97. package/themes/original/src/components/CartContent/styles.tsx +15 -1
  98. package/themes/original/src/components/Checkout/index.tsx +311 -178
  99. package/themes/original/src/components/Checkout/styles.tsx +4 -2
  100. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  101. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  102. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  103. package/themes/original/src/components/DriverTips/index.tsx +52 -37
  104. package/themes/original/src/components/DriverTips/styles.tsx +2 -1
  105. package/themes/original/src/components/Favorite/index.tsx +7 -4
  106. package/themes/original/src/components/Favorite/styles.tsx +1 -1
  107. package/themes/original/src/components/FavoriteList/index.tsx +70 -80
  108. package/themes/original/src/components/FloatingButton/index.tsx +1 -2
  109. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  110. package/themes/original/src/components/GPSButton/styles.ts +3 -3
  111. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +96 -0
  112. package/themes/original/src/components/GiftCard/GiftCardUI/styles.tsx +5 -0
  113. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +100 -0
  114. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +8 -0
  115. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +178 -0
  116. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +8 -0
  117. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +165 -0
  118. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +9 -0
  119. package/themes/original/src/components/Help/index.tsx +8 -8
  120. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +11 -22
  121. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +6 -0
  122. package/themes/original/src/components/HelpGuide/index.tsx +12 -16
  123. package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
  124. package/themes/original/src/components/HelpOrder/index.tsx +12 -25
  125. package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
  126. package/themes/original/src/components/Home/index.tsx +13 -4
  127. package/themes/original/src/components/LanguageSelector/index.tsx +19 -14
  128. package/themes/original/src/components/LastOrder/index.tsx +1 -34
  129. package/themes/original/src/components/LoginForm/Otp/index.tsx +89 -73
  130. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  131. package/themes/original/src/components/LoginForm/index.tsx +43 -19
  132. package/themes/original/src/components/LottieAnimation/index.tsx +78 -0
  133. package/themes/original/src/components/MessageListing/index.tsx +16 -42
  134. package/themes/original/src/components/Messages/index.tsx +32 -10
  135. package/themes/original/src/components/MomentOption/index.tsx +195 -88
  136. package/themes/original/src/components/MultiCart/index.tsx +50 -0
  137. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +117 -96
  138. package/themes/original/src/components/MultiCheckout/index.tsx +248 -83
  139. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
  140. package/themes/original/src/components/MultiOrdersDetails/index.tsx +67 -20
  141. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
  142. package/themes/original/src/components/MyOrders/index.tsx +66 -17
  143. package/themes/original/src/components/NavBar/index.tsx +6 -11
  144. package/themes/original/src/components/Notifications/index.tsx +144 -0
  145. package/themes/original/src/components/Notifications/styles.tsx +20 -0
  146. package/themes/original/src/components/OrderDetails/OrderEta.tsx +59 -0
  147. package/themes/original/src/components/OrderDetails/index.tsx +262 -347
  148. package/themes/original/src/components/OrderDetails/styles.tsx +10 -1
  149. package/themes/original/src/components/OrderItAgain/index.tsx +47 -43
  150. package/themes/original/src/components/OrderProgress/index.tsx +74 -112
  151. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  152. package/themes/original/src/components/OrderSummary/index.tsx +68 -29
  153. package/themes/original/src/components/OrderTypeSelector/index.tsx +4 -3
  154. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +28 -19
  155. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +3 -0
  156. package/themes/original/src/components/OrdersOption/index.tsx +76 -83
  157. package/themes/original/src/components/PageBanner/index.tsx +171 -0
  158. package/themes/original/src/components/PageBanner/styles.tsx +11 -0
  159. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  160. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  161. package/themes/original/src/components/PaymentOptions/index.tsx +3 -3
  162. package/themes/original/src/components/PhoneInputNumber/index.tsx +3 -3
  163. package/themes/original/src/components/PlaceSpot/index.tsx +12 -6
  164. package/themes/original/src/components/PreviousOrders/index.tsx +3 -2
  165. package/themes/original/src/components/ProductForm/index.tsx +240 -261
  166. package/themes/original/src/components/ProductForm/styles.tsx +4 -7
  167. package/themes/original/src/components/ProductItemAccordion/index.tsx +200 -128
  168. package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -10
  169. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +1 -2
  170. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  171. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -49
  172. package/themes/original/src/components/ProfessionalProfile/index.tsx +54 -14
  173. package/themes/original/src/components/Promotions/index.tsx +234 -220
  174. package/themes/original/src/components/Promotions/styles.tsx +10 -3
  175. package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
  176. package/themes/original/src/components/ReviewOrder/index.tsx +43 -11
  177. package/themes/original/src/components/ReviewOrder/styles.tsx +7 -0
  178. package/themes/original/src/components/ReviewProducts/index.tsx +8 -5
  179. package/themes/original/src/components/ReviewTrigger/index.tsx +27 -9
  180. package/themes/original/src/components/ReviewTrigger/styles.tsx +8 -1
  181. package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
  182. package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
  183. package/themes/original/src/components/ServiceForm/index.tsx +377 -270
  184. package/themes/original/src/components/Sessions/index.tsx +11 -8
  185. package/themes/original/src/components/Sessions/styles.tsx +5 -0
  186. package/themes/original/src/components/SignupForm/index.tsx +79 -66
  187. package/themes/original/src/components/SingleOrderCard/index.tsx +126 -57
  188. package/themes/original/src/components/SingleOrderCard/styles.tsx +10 -8
  189. package/themes/original/src/components/SingleProductCard/index.tsx +111 -56
  190. package/themes/original/src/components/SingleProductCard/styles.tsx +27 -13
  191. package/themes/original/src/components/SingleProductReview/index.tsx +38 -5
  192. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  193. package/themes/original/src/components/StripeCardsList/index.tsx +1 -1
  194. package/themes/original/src/components/StripeElementsForm/index.tsx +4 -1
  195. package/themes/original/src/components/UpsellingProducts/index.tsx +238 -218
  196. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  197. package/themes/original/src/components/UserDetails/index.tsx +8 -4
  198. package/themes/original/src/components/UserFormDetails/index.tsx +53 -54
  199. package/themes/original/src/components/UserProfile/index.tsx +58 -35
  200. package/themes/original/src/components/UserProfile/styles.ts +17 -0
  201. package/themes/original/src/components/UserProfileForm/index.tsx +21 -28
  202. package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
  203. package/themes/original/src/components/Wallets/index.tsx +31 -17
  204. package/themes/original/src/components/Wallets/styles.tsx +2 -0
  205. package/themes/original/src/components/shared/CardAnimation.tsx +47 -0
  206. package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
  207. package/themes/original/src/components/shared/OBottomPopup.tsx +1 -1
  208. package/themes/original/src/components/shared/OButton.tsx +6 -2
  209. package/themes/original/src/components/shared/OIcon.tsx +8 -1
  210. package/themes/original/src/components/shared/OInput.tsx +10 -1
  211. package/themes/original/src/components/shared/OModal.tsx +3 -3
  212. package/themes/original/src/layouts/Container.tsx +13 -9
  213. package/themes/original/src/types/index.tsx +46 -8
  214. package/themes/original/src/utils/index.tsx +364 -58
  215. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -12,27 +12,28 @@ import {
12
12
  } from 'react-native';
13
13
  import { PreviousBusinessOrderedParams } from '../../../types';
14
14
 
15
- const BusinessControllerList = ({ businesses, onBusinessClick, navigation, orderState, style }: any) => {
15
+ const BusinessControllerList = ({ businesses, onBusinessClick, navigation, orderState, handleCustomUpdate, style }: any) => {
16
16
  return (
17
17
  <>
18
18
  {businesses?.result?.map((business: any, i: number) => (
19
- <BusinessController
20
- key={`${business.id}_` + i}
21
- business={business}
22
- isBusinessOpen={business.open}
23
- handleCustomClick={() => onBusinessClick(business)}
24
- orderType={orderState?.options?.type}
25
- navigation={navigation}
26
- businessHeader={business?.header}
27
- businessFeatured={business?.featured}
28
- businessLogo={business?.logo}
29
- businessReviews={business?.reviews}
30
- businessDeliveryPrice={business?.delivery_price}
31
- businessDeliveryTime={business?.delivery_time}
32
- businessPickupTime={business?.pickup_time}
33
- businessDistance={business?.distance}
34
- style={style}
35
- />
19
+ <View style={style} key={`${business.id}_` + i}>
20
+ <BusinessController
21
+ business={business}
22
+ isBusinessOpen={business.open}
23
+ handleCustomClick={() => onBusinessClick(business)}
24
+ orderType={orderState?.options?.type}
25
+ navigation={navigation}
26
+ businessHeader={business?.header}
27
+ businessFeatured={business?.featured}
28
+ businessLogo={business?.logo}
29
+ businessReviews={business?.reviews}
30
+ businessDeliveryPrice={business?.delivery_price}
31
+ businessDeliveryTime={business?.delivery_time}
32
+ businessPickupTime={business?.pickup_time}
33
+ businessDistance={business?.distance}
34
+ handleCustomUpdate={handleCustomUpdate}
35
+ />
36
+ </View>
36
37
  ))}
37
38
  </>
38
39
  )
@@ -92,6 +93,7 @@ export const PreviousBusinessOrdered = (props: PreviousBusinessOrderedParams) =>
92
93
  businesses,
93
94
  onNavigationRedirect,
94
95
  isBusinessesSearchList,
96
+ handleUpdateBusinesses,
95
97
  } = props
96
98
 
97
99
  const [orderState] = useOrder()
@@ -107,7 +109,12 @@ export const PreviousBusinessOrdered = (props: PreviousBusinessOrderedParams) =>
107
109
  });
108
110
 
109
111
  return (
110
- <ScrollView horizontal={isBusinessesSearchList} style={styles.container} showsVerticalScrollIndicator={false}>
112
+ <ScrollView
113
+ horizontal={isBusinessesSearchList}
114
+ style={styles.container}
115
+ showsVerticalScrollIndicator={false}
116
+ showsHorizontalScrollIndicator={false}
117
+ >
111
118
  {isBusinessesSearchList ? (
112
119
  <>
113
120
  {!businesses?.loading && (
@@ -117,6 +124,7 @@ export const PreviousBusinessOrdered = (props: PreviousBusinessOrderedParams) =>
117
124
  orderState={orderState}
118
125
  navigation={navigation}
119
126
  businesses={businesses}
127
+ handleCustomUpdate={handleUpdateBusinesses}
120
128
  />
121
129
  )}
122
130
  </>
@@ -130,6 +138,7 @@ export const PreviousBusinessOrdered = (props: PreviousBusinessOrderedParams) =>
130
138
  orderState={orderState}
131
139
  navigation={navigation}
132
140
  businesses={businesses}
141
+ handleCustomUpdate={handleUpdateBusinesses}
133
142
  />
134
143
  )}
135
144
  </ListWrapper>
@@ -11,6 +11,7 @@ export const PreviousProductsOrdered = (props: PreviousProductsOrderedParams) =>
11
11
  const {
12
12
  products,
13
13
  onProductClick,
14
+ handleUpdateProducts,
14
15
  isBusinessesSearchList
15
16
  } = props
16
17
 
@@ -28,12 +29,14 @@ export const PreviousProductsOrdered = (props: PreviousProductsOrderedParams) =>
28
29
  {products?.map((product: any) => (
29
30
  <SingleProductCard
30
31
  key={product?.id}
32
+ isProductId
31
33
  isSoldOut={(product.inventoried && !product.quantity)}
32
34
  product={product}
33
35
  businessId={product?.business?.id}
34
36
  onProductClick={onProductClick}
35
37
  style={style}
36
38
  productAddedToCartLength={0}
39
+ handleUpdateProducts={handleUpdateProducts}
37
40
  />
38
41
  ))}
39
42
  </>
@@ -3,7 +3,6 @@ import { OrderList, useLanguage, useOrder, ToastType, useToast } from 'ordering-
3
3
  import { useTheme } from 'styled-components/native';
4
4
  import { useFocusEffect } from '@react-navigation/native'
5
5
  import { OText, OButton } from '../shared'
6
- import { NotFoundSource } from '../NotFoundSource'
7
6
  import { ActiveOrders } from '../ActiveOrders'
8
7
  import { PreviousOrders } from '../PreviousOrders'
9
8
  import { PreviousBusinessOrdered } from './PreviousBusinessOrdered'
@@ -18,6 +17,7 @@ import {
18
17
  } from "rn-placeholder";
19
18
 
20
19
  import { View, ScrollView } from 'react-native'
20
+ import { getOrderStatus } from '../../utils'
21
21
 
22
22
  const OrdersOptionUI = (props: OrdersOptionParams) => {
23
23
  const {
@@ -48,7 +48,9 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
48
48
  hideOrders,
49
49
  BusinessControllerSkeletons,
50
50
  businesses,
51
- businessPaginationProps
51
+ businessPaginationProps,
52
+ handleUpdateProducts,
53
+ handleUpdateBusinesses
52
54
  } = props
53
55
 
54
56
  const theme = useTheme();
@@ -58,46 +60,45 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
58
60
  const [, { showToast }] = useToast()
59
61
  const { loading, error, orders: values } = orderList
60
62
  const [businessLoading, setBusinessLoading] = useState(true)
63
+ const [orders, setOrders] = useState([])
61
64
 
62
65
  const imageFails = activeOrders
63
66
  ? theme.images.general.emptyActiveOrders
64
67
  : theme.images.general.emptyPastOrders
65
68
 
66
- const orders = customArray || values || []
69
+ const _orders = customArray || values || []
70
+ const uniqueOrders: any = []
67
71
 
68
- const getOrderStatus = (s: string) => {
69
- const status = parseInt(s)
70
- const orderStatus = [
71
- { key: 0, value: t('PENDING', 'Pending') },
72
- { key: 1, value: t('COMPLETED', 'Completed') },
73
- { key: 2, value: t('REJECTED', 'Rejected') },
74
- { key: 3, value: t('DRIVER_IN_BUSINESS', 'Driver in business') },
75
- { key: 4, value: t('PREPARATION_COMPLETED', 'Preparation Completed') },
76
- { key: 5, value: t('REJECTED_BY_BUSINESS', 'Rejected by business') },
77
- { key: 6, value: t('REJECTED_BY_DRIVER', 'Rejected by Driver') },
78
- { key: 7, value: t('ACCEPTED_BY_BUSINESS', 'Accepted by business') },
79
- { key: 8, value: t('ACCEPTED_BY_DRIVER', 'Accepted by driver') },
80
- { key: 9, value: t('PICK_UP_COMPLETED_BY_DRIVER', 'Pick up completed by driver') },
81
- { key: 10, value: t('PICK_UP_FAILED_BY_DRIVER', 'Pick up Failed by driver') },
82
- { key: 11, value: t('DELIVERY_COMPLETED_BY_DRIVER', 'Delivery completed by driver') },
83
- { key: 12, value: t('DELIVERY_FAILED_BY_DRIVER', 'Delivery Failed by driver') },
84
- { key: 13, value: t('PREORDER', 'PreOrder') },
85
- { key: 14, value: t('ORDER_NOT_READY', 'Order not ready') },
86
- { key: 15, value: t('ORDER_PICKEDUP_COMPLETED_BY_CUSTOMER', 'Order picked up completed by customer') },
87
- { key: 16, value: t('CANCELLED_BY_CUSTOMER', 'Cancelled by customer') },
88
- { key: 17, value: t('ORDER_NOT_PICKEDUP_BY_CUSTOMER', 'Order not picked up by customer') },
89
- { key: 18, value: t('DRIVER_ALMOST_ARRIVED_TO_BUSINESS', 'Driver almost arrived to business') },
90
- { key: 19, value: t('DRIVER_ALMOST_ARRIVED_TO_CUSTOMER', 'Driver almost arrived to customer') },
91
- { key: 20, value: t('ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS', 'Customer almost arrived to business') },
92
- { key: 21, value: t('ORDER_CUSTOMER_ARRIVED_BUSINESS', 'Customer arrived to business') },
93
- { key: 22, value: t('ORDER_LOOKING_FOR_DRIVER', 'Looking for driver') },
94
- { key: 23, value: t('ORDER_DRIVER_ON_WAY', 'Driver on way') }
95
- ]
96
-
97
- const objectStatus = orderStatus.find((o) => o.key === status)
98
-
99
- return objectStatus && objectStatus
100
- }
72
+ useEffect(() => {
73
+ if (loading || error) return
74
+ const ordersReduced = _orders.map((order: any) => order?.cart_group_id
75
+ ? _orders
76
+ .filter((_order: any) => _order?.cart_group_id === order?.cart_group_id)
77
+ .map((_o: any, _: any, _ordersList: any) => {
78
+ const obj = {
79
+ ..._o,
80
+ id: _ordersList.map(o => o.id),
81
+ review: _o.review,
82
+ user_review: _o.user_review,
83
+ total: _ordersList.reduce((acc: any, o: any) => acc + o.summary.total, 0),
84
+ business: _ordersList.map((o: any) => o.business),
85
+ business_id: _ordersList.map((o: any) => o.business_id),
86
+ products: _ordersList.map((o: any) => o.products)
87
+ }
88
+ return obj
89
+ }).find((o: any) => o)
90
+ : order)
91
+ const orders = ordersReduced?.filter((order: any) => {
92
+ if (!order?.cart_group_id) return true
93
+ const isDuplicate = uniqueOrders.includes(order?.cart_group_id)
94
+ if (!isDuplicate) {
95
+ uniqueOrders.push(order?.cart_group_id)
96
+ return true
97
+ }
98
+ return false
99
+ })
100
+ setOrders(orders)
101
+ }, [_orders?.length])
101
102
 
102
103
  const onProductClick = (product: any) => {
103
104
  if (product?.product_id && product?.category_id && product?.businessId &&
@@ -159,14 +160,14 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
159
160
  useEffect(() => {
160
161
  if (loading) return
161
162
 
162
- const updateOrders = orders.filter((order: any) => orderStatus.includes(order.status))
163
+ const updateOrders = _orders.filter((order: any) => orderStatus.includes(order.status))
163
164
 
164
165
  if (activeOrders) {
165
166
  setOrdersLength && setOrdersLength({ ...ordersLength, activeOrdersLength: updateOrders?.length })
166
167
  } else if (!preOrders) {
167
168
  setOrdersLength && setOrdersLength({ ...ordersLength, previousOrdersLength: updateOrders?.length })
168
169
  }
169
- }, [orders, activeOrders, preOrders])
170
+ }, [_orders, activeOrders, preOrders])
170
171
 
171
172
  useEffect(() => {
172
173
  if (refreshOrders) {
@@ -191,7 +192,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
191
192
 
192
193
  </NoOrdersWrapper>
193
194
  )}
194
- {(ordersLength?.activeOrdersLength > 0 || ordersLength?.previousOrdersLength > 0) && (
195
+ {((ordersLength?.activeOrdersLength > 0 && activeOrders) || (ordersLength?.previousOrdersLength > 0 && !activeOrders)) && (
195
196
  <>
196
197
  {((titleContent && ((isBusiness && businessOrderIds?.length > 0) || isProducts)) || !titleContent) && (
197
198
  <OptionTitle titleContent={!!titleContent} isBusinessesSearchList={!!businessesSearchList}>
@@ -204,20 +205,9 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
204
205
  </OText>
205
206
  </OptionTitle>
206
207
  )}
207
-
208
- {!(ordersLength?.activeOrdersLength === 0 && ordersLength?.previousOrdersLength === 0) &&
209
- !loading &&
210
- orders.filter((order: any) => orderStatus.includes(order.status)).length === 0 &&
211
- (
212
- <NotFoundSource
213
- content={t('NO_RESULTS_FOUND', 'Sorry, no results found')}
214
- image={imageFails}
215
- conditioned
216
- />
217
- )}
218
208
  </>
219
209
  )}
220
- {isBusiness && !!businessesSearchList && businesses?.loading && (
210
+ {isBusiness && !!businessesSearchList && businesses?.loading && (
221
211
  <ScrollView horizontal>
222
212
  <BusinessControllerSkeletons paginationProps={businessPaginationProps} />
223
213
  </ScrollView>
@@ -227,6 +217,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
227
217
  onNavigationRedirect={onNavigationRedirect}
228
218
  isBusinessesSearchList={!!businessesSearchList}
229
219
  businesses={businesses}
220
+ handleUpdateBusinesses={handleUpdateBusinesses}
230
221
  />
231
222
  )}
232
223
 
@@ -234,6 +225,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
234
225
  <PreviousProductsOrdered
235
226
  products={products}
236
227
  onProductClick={onProductClick}
228
+ handleUpdateProducts={handleUpdateProducts}
237
229
  isBusinessesSearchList={!!businessesSearchList}
238
230
  />
239
231
  )}
@@ -258,38 +250,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
258
250
  )}
259
251
  </>
260
252
  )}
261
- {loading && !hideOrders && (
262
- <>
263
- {!activeOrders ? (
264
- <Placeholder style={{ marginTop: 30 }} Animation={Fade}>
265
- <View style={{ width: '100%', flexDirection: 'row' }}>
266
- <PlaceholderLine width={20} height={70} style={{ marginRight: 20, marginBottom: 35 }} />
267
- <Placeholder>
268
- <PlaceholderLine width={30} style={{ marginTop: 5 }} />
269
- <PlaceholderLine width={50} />
270
- <PlaceholderLine width={70} />
271
- </Placeholder>
272
- </View>
273
- </Placeholder>
274
- ) : (
275
- <View style={{ marginTop: 30 }}>
276
- {[...Array(5)].map((item, i) => (
277
- <Placeholder key={i} Animation={Fade}>
278
- <View style={{ width: '100%', flexDirection: 'row' }}>
279
- <PlaceholderLine width={20} height={70} style={{ marginRight: 20, marginBottom: 20 }} />
280
- <Placeholder>
281
- <PlaceholderLine width={30} style={{ marginTop: 5 }} />
282
- <PlaceholderLine width={50} />
283
- <PlaceholderLine width={20} />
284
- </Placeholder>
285
- </View>
286
- </Placeholder>
287
- ))}
288
- </View>
289
- )}
290
- </>
291
- )}
292
- {!loading && !error && orders.length > 0 && !hideOrders && (
253
+ {!error && orders.length > 0 && !hideOrders && (
293
254
  preOrders ? (
294
255
  <ActiveOrders
295
256
  orders={orders.filter((order: any) => orderStatus.includes(order.status))}
@@ -321,9 +282,41 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
321
282
  onNavigationRedirect={onNavigationRedirect}
322
283
  handleReorder={handleReorder}
323
284
  handleUpdateOrderList={handleUpdateOrderList}
285
+ loading={loading}
324
286
  />
325
287
  )
326
288
  )}
289
+ {loading && !hideOrders && (
290
+ <>
291
+ {!activeOrders ? (
292
+ <Placeholder style={{ marginTop: 30 }} Animation={Fade}>
293
+ <View style={{ width: '100%', flexDirection: 'row' }}>
294
+ <PlaceholderLine width={20} height={70} style={{ marginRight: 20, marginBottom: 35 }} />
295
+ <Placeholder>
296
+ <PlaceholderLine width={30} style={{ marginTop: 5 }} />
297
+ <PlaceholderLine width={50} />
298
+ <PlaceholderLine width={70} />
299
+ </Placeholder>
300
+ </View>
301
+ </Placeholder>
302
+ ) : (
303
+ <View style={{ marginTop: 30 }}>
304
+ {[...Array(5)].map((item, i) => (
305
+ <Placeholder key={i} Animation={Fade}>
306
+ <View style={{ width: '100%', flexDirection: 'row' }}>
307
+ <PlaceholderLine width={20} height={70} style={{ marginRight: 20, marginBottom: 20 }} />
308
+ <Placeholder>
309
+ <PlaceholderLine width={30} style={{ marginTop: 5 }} />
310
+ <PlaceholderLine width={50} />
311
+ <PlaceholderLine width={20} />
312
+ </Placeholder>
313
+ </View>
314
+ </Placeholder>
315
+ ))}
316
+ </View>
317
+ )}
318
+ </>
319
+ )}
327
320
  </>
328
321
  )
329
322
  }
@@ -0,0 +1,171 @@
1
+ import React, { useEffect, useState, useRef } from 'react'
2
+ import { useUtils, useEvent, PageBanner as PageBannerController } from 'ordering-components/native'
3
+ import { View, StyleSheet, Dimensions, TouchableOpacity } from 'react-native'
4
+ import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
5
+ import Carousel from 'react-native-snap-carousel'
6
+ import FastImage from 'react-native-fast-image';
7
+ import IconAntDesign from 'react-native-vector-icons/AntDesign';
8
+ import { useTheme } from 'styled-components/native';
9
+ import { PageBannerWrapper } from './styles'
10
+
11
+ const PageBannerUI = (props: any) => {
12
+ const {
13
+ pageBannerState,
14
+ navigation
15
+ } = props
16
+
17
+ const theme = useTheme();
18
+ const [{ optimizeImage }] = useUtils();
19
+ const [events] = useEvent()
20
+ const carouselRef = useRef<any>(null)
21
+ const [currentIndex, setCurrentIndex] = useState(0)
22
+ const [viewedBanner, setViewedBanner] = useState<any>(null)
23
+
24
+ const windowWidth = Dimensions.get('window').width;
25
+
26
+ const styles = StyleSheet.create({
27
+ mainSwiper: {
28
+ height: 300,
29
+ },
30
+ swiperButton: {
31
+ position: 'absolute',
32
+ zIndex: 100,
33
+ alignItems: 'center',
34
+ justifyContent: 'center',
35
+ width: 32,
36
+ height: 32,
37
+ borderRadius: 16,
38
+ backgroundColor: 'rgba(208,208,208,0.5)'
39
+ },
40
+ sliderWrapper: {
41
+ width: '100%',
42
+ height: 300
43
+ }
44
+ })
45
+
46
+ const onRedirect = (route: string, params?: any) => {
47
+ navigation.push(route, params)
48
+ }
49
+
50
+ const handleGoToPage = (item: any) => {
51
+ const action = item.action
52
+ if (!action?.url) return
53
+ let slug
54
+ if (action.type === 'business') {
55
+ slug = action.url.split('store/')[1]
56
+ onRedirect('Business', {
57
+ store: slug
58
+ })
59
+ }
60
+ if (action.type === 'product') {
61
+ slug = action.url.split('store/')[1]?.split('?')[0]
62
+ onRedirect('ProductDetails', {
63
+ businessSlug: slug,
64
+ businessId: action.business_id,
65
+ categoryId: action.category_id,
66
+ productId: action.product_id
67
+ })
68
+ }
69
+ const clickedBanner = pageBannerState.result.find(banner => banner.id === item?.banner_id)
70
+ events.emit('promotion_clicked', clickedBanner)
71
+ }
72
+
73
+ const renderItem = ({ item, index }) => {
74
+ return (
75
+ <TouchableOpacity
76
+ onPress={() => handleGoToPage(item)}
77
+ >
78
+ <View style={styles.sliderWrapper}>
79
+ <FastImage
80
+ style={{ height: '100%', width: '100%' }}
81
+ resizeMode='cover'
82
+ source={{ uri: optimizeImage(item.url, 'h_300,c_limit') }}
83
+ />
84
+ </View>
85
+ </TouchableOpacity>
86
+ )
87
+ }
88
+
89
+ const updateIndex = () => {
90
+ setCurrentIndex(carouselRef?.current?.currentIndex)
91
+ }
92
+
93
+ useEffect(() => {
94
+ if (pageBannerState.loading) return
95
+ if (pageBannerState.banner?.items && pageBannerState.banner?.items.length > 0) {
96
+ const bannerId = pageBannerState.banner.items[currentIndex]?.banner_id
97
+ if (pageBannerState.result && bannerId) {
98
+ const _viewedBanner = pageBannerState.result.find(banner => banner.id === bannerId)
99
+ if (_viewedBanner?.id !== viewedBanner?.id) {
100
+ setViewedBanner(_viewedBanner)
101
+ events.emit('promotion_viewed', _viewedBanner)
102
+ }
103
+ }
104
+ }
105
+ }, [pageBannerState.loading, currentIndex, viewedBanner])
106
+
107
+ return (
108
+ <>
109
+ {pageBannerState.loading ? (
110
+ <PageBannerWrapper>
111
+ <Placeholder
112
+ Animation={Fade}
113
+ >
114
+ <PlaceholderLine
115
+ height={300}
116
+ style={{ marginBottom: 20, borderRadius: 8 }}
117
+ />
118
+ </Placeholder>
119
+ </PageBannerWrapper>
120
+ ) : (
121
+ <>
122
+ {pageBannerState.banner?.items && pageBannerState.banner?.items.length > 0 && (
123
+ <PageBannerWrapper>
124
+ <TouchableOpacity
125
+ style={[styles.swiperButton, { left: 25 }]}
126
+ onPress={() => carouselRef.current.snapToPrev()}
127
+ >
128
+ <IconAntDesign
129
+ name="caretleft"
130
+ color={theme.colors.white}
131
+ size={13}
132
+ />
133
+ </TouchableOpacity>
134
+ <TouchableOpacity
135
+ style={[styles.swiperButton, { right: 25 }]}
136
+ onPress={() => carouselRef.current.snapToNext()}
137
+ >
138
+ <IconAntDesign
139
+ name="caretright"
140
+ color={theme.colors.white}
141
+ size={13}
142
+ />
143
+ </TouchableOpacity>
144
+ <Carousel
145
+ ref={carouselRef}
146
+ loop={pageBannerState.banner?.items.length > 1}
147
+ data={pageBannerState.banner?.items}
148
+ renderItem={renderItem}
149
+ sliderWidth={windowWidth - 80}
150
+ itemWidth={windowWidth - 80}
151
+ inactiveSlideScale={1}
152
+ pagingEnabled
153
+ removeClippedSubviews={false}
154
+ inactiveSlideOpacity={1}
155
+ onSnapToItem={updateIndex}
156
+ />
157
+ </PageBannerWrapper>
158
+ )}
159
+ </>
160
+ )}
161
+ </>
162
+ )
163
+ }
164
+
165
+ export const PageBanner = (props: any) => {
166
+ const pageBannerProps = {
167
+ ...props,
168
+ UIComponent: PageBannerUI
169
+ }
170
+ return <PageBannerController {...pageBannerProps} />
171
+ }
@@ -0,0 +1,11 @@
1
+ import styled from 'styled-components/native'
2
+
3
+ export const PageBannerWrapper = styled.View`
4
+ margin-horizontal: 40px;
5
+ border-radius: 8px;
6
+ overflow: hidden;
7
+ margin-vertical: 30px;
8
+ position: relative;
9
+ flex-direction: row;
10
+ align-items: center;
11
+ `
@@ -39,7 +39,7 @@ export const OSItem = styled.View`
39
39
  flex-direction: row;
40
40
  justify-content: space-between;
41
41
  align-items: center;
42
- padding: 20px 0px;
42
+ padding: 10px 0px;
43
43
  `;
44
44
 
45
45
  export const OSItemContent = styled.TouchableOpacity`