ordering-ui-react-native 0.16.68 → 0.16.69-release

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/package.json +6 -5
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/ActiveOrders/index.tsx +61 -63
  4. package/src/components/ActiveOrders/styles.tsx +8 -14
  5. package/src/components/BusinessInformation/index.tsx +19 -4
  6. package/src/components/BusinessInformation/styles.tsx +2 -2
  7. package/src/components/BusinessProductsList/index.tsx +10 -10
  8. package/src/components/BusinessesListing/index.tsx +1 -1
  9. package/src/components/Checkout/index.tsx +2 -1
  10. package/src/components/LanguageSelector/index.tsx +21 -16
  11. package/src/components/Messages/index.tsx +2 -2
  12. package/src/components/OrdersOption/index.tsx +54 -56
  13. package/src/components/PaymentOptions/index.tsx +298 -345
  14. package/src/components/PaymentOptionsWebView/index.tsx +119 -120
  15. package/src/components/SingleProductReview/index.tsx +7 -4
  16. package/src/components/StripeElementsForm/index.tsx +25 -16
  17. package/src/components/VerifyPhone/styles.tsx +1 -2
  18. package/src/components/shared/OToast.tsx +4 -4
  19. package/src/types/@fatnlazycat/react-native-recaptcha-v3/index.d.ts +1 -0
  20. package/src/utils/index.tsx +2 -1
  21. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +260 -238
  22. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
  23. package/themes/business/src/components/BusinessController/index.tsx +2 -2
  24. package/themes/business/src/components/Chat/index.tsx +31 -31
  25. package/themes/business/src/components/DriverMap/index.tsx +7 -5
  26. package/themes/business/src/components/LoginForm/index.tsx +111 -74
  27. package/themes/business/src/components/MapView/index.tsx +14 -3
  28. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  29. package/themes/business/src/components/NewOrderNotification/index.tsx +31 -41
  30. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +70 -43
  31. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +3 -3
  32. package/themes/business/src/components/OrdersOption/index.tsx +63 -73
  33. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  34. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  35. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  36. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  37. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  38. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  39. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  40. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  41. package/themes/business/src/components/PreviousMessages/index.tsx +17 -18
  42. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +250 -0
  43. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  44. package/themes/business/src/components/PreviousOrders/index.tsx +440 -245
  45. package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
  46. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  47. package/themes/business/src/components/ReviewCustomer/index.tsx +39 -15
  48. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  49. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  50. package/themes/business/src/components/shared/OLink.tsx +33 -13
  51. package/themes/business/src/components/shared/OText.tsx +8 -2
  52. package/themes/business/src/types/index.tsx +14 -3
  53. package/themes/business/src/utils/index.tsx +10 -0
  54. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  55. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  56. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  57. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -1
  58. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  59. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  60. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  61. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  62. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  63. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  64. package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
  65. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  66. package/themes/kiosk/src/types/index.d.ts +2 -0
  67. package/themes/original/index.tsx +6 -0
  68. package/themes/original/src/components/AddressDetails/index.tsx +10 -8
  69. package/themes/original/src/components/AddressForm/index.tsx +153 -137
  70. package/themes/original/src/components/AddressList/index.tsx +18 -18
  71. package/themes/original/src/components/AddressList/styles.tsx +4 -2
  72. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  73. package/themes/original/src/components/BusinessBasicInformation/index.tsx +49 -33
  74. package/themes/original/src/components/BusinessController/index.tsx +101 -70
  75. package/themes/original/src/components/BusinessController/styles.tsx +14 -9
  76. package/themes/original/src/components/BusinessInformation/index.tsx +10 -31
  77. package/themes/original/src/components/BusinessItemAccordion/index.tsx +12 -6
  78. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  79. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  80. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  81. package/themes/original/src/components/BusinessListingSearch/index.tsx +87 -142
  82. package/themes/original/src/components/BusinessListingSearch/styles.tsx +10 -12
  83. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  84. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  85. package/themes/original/src/components/BusinessProductsList/index.tsx +41 -62
  86. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  87. package/themes/original/src/components/BusinessProductsListing/index.tsx +561 -479
  88. package/themes/original/src/components/BusinessProductsListing/styles.tsx +13 -12
  89. package/themes/original/src/components/BusinessTypeFilter/index.tsx +3 -2
  90. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  91. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +93 -98
  92. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -9
  93. package/themes/original/src/components/BusinessesListing/index.tsx +8 -8
  94. package/themes/original/src/components/Cart/index.tsx +63 -38
  95. package/themes/original/src/components/CartContent/index.tsx +80 -18
  96. package/themes/original/src/components/CartContent/styles.tsx +11 -1
  97. package/themes/original/src/components/Checkout/index.tsx +110 -114
  98. package/themes/original/src/components/Checkout/styles.tsx +4 -3
  99. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  100. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  101. package/themes/original/src/components/DriverTips/index.tsx +47 -37
  102. package/themes/original/src/components/DriverTips/styles.tsx +2 -1
  103. package/themes/original/src/components/Favorite/index.tsx +7 -4
  104. package/themes/original/src/components/Favorite/styles.tsx +1 -1
  105. package/themes/original/src/components/FavoriteList/index.tsx +69 -45
  106. package/themes/original/src/components/FloatingButton/index.tsx +1 -2
  107. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  108. package/themes/original/src/components/GPSButton/index.tsx +20 -19
  109. package/themes/original/src/components/GPSButton/styles.ts +3 -3
  110. package/themes/original/src/components/GoogleMap/index.tsx +10 -1
  111. package/themes/original/src/components/Help/index.tsx +7 -7
  112. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +14 -20
  113. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +6 -0
  114. package/themes/original/src/components/HelpGuide/index.tsx +12 -11
  115. package/themes/original/src/components/HelpGuide/styles.tsx +5 -0
  116. package/themes/original/src/components/HelpOrder/index.tsx +12 -20
  117. package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
  118. package/themes/original/src/components/LanguageSelector/index.tsx +19 -14
  119. package/themes/original/src/components/LoginForm/Otp/index.tsx +89 -73
  120. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  121. package/themes/original/src/components/LoginForm/index.tsx +98 -41
  122. package/themes/original/src/components/LottieAnimation/index.tsx +78 -0
  123. package/themes/original/src/components/MessageListing/index.tsx +7 -7
  124. package/themes/original/src/components/Messages/index.tsx +35 -20
  125. package/themes/original/src/components/MomentOption/index.tsx +17 -11
  126. package/themes/original/src/components/MultiCart/index.tsx +50 -0
  127. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +92 -93
  128. package/themes/original/src/components/MultiCheckout/index.tsx +158 -77
  129. package/themes/original/src/components/MultiOrdersDetails/index.tsx +60 -33
  130. package/themes/original/src/components/MyOrders/index.tsx +86 -20
  131. package/themes/original/src/components/NavBar/index.tsx +7 -6
  132. package/themes/original/src/components/NetworkError/index.tsx +5 -3
  133. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  134. package/themes/original/src/components/Notifications/index.tsx +144 -0
  135. package/themes/original/src/components/Notifications/styles.tsx +20 -0
  136. package/themes/original/src/components/OrderDetails/index.tsx +114 -15
  137. package/themes/original/src/components/OrderDetails/styles.tsx +15 -2
  138. package/themes/original/src/components/OrderItAgain/index.tsx +46 -43
  139. package/themes/original/src/components/OrderProgress/index.tsx +77 -66
  140. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  141. package/themes/original/src/components/OrderSummary/index.tsx +3 -36
  142. package/themes/original/src/components/OrderTypeSelector/index.tsx +13 -6
  143. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +94 -98
  144. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +3 -0
  145. package/themes/original/src/components/OrdersOption/index.tsx +97 -55
  146. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  147. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  148. package/themes/original/src/components/PaymentOptions/index.tsx +1 -2
  149. package/themes/original/src/components/PhoneInputNumber/index.tsx +1 -1
  150. package/themes/original/src/components/PlaceSpot/index.tsx +249 -47
  151. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  152. package/themes/original/src/components/PreviousOrders/index.tsx +3 -2
  153. package/themes/original/src/components/ProductForm/index.tsx +212 -253
  154. package/themes/original/src/components/ProductForm/styles.tsx +5 -8
  155. package/themes/original/src/components/ProductItemAccordion/index.tsx +199 -128
  156. package/themes/original/src/components/ProductOptionSubOption/index.tsx +17 -9
  157. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +1 -2
  158. package/themes/original/src/components/ProfessionalFilter/index.tsx +2 -1
  159. package/themes/original/src/components/ProfessionalProfile/index.tsx +19 -8
  160. package/themes/original/src/components/Promotions/index.tsx +234 -220
  161. package/themes/original/src/components/Promotions/styles.tsx +7 -2
  162. package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
  163. package/themes/original/src/components/ReviewOrder/index.tsx +43 -11
  164. package/themes/original/src/components/ReviewOrder/styles.tsx +7 -0
  165. package/themes/original/src/components/ReviewProducts/index.tsx +8 -5
  166. package/themes/original/src/components/ReviewTrigger/index.tsx +27 -9
  167. package/themes/original/src/components/ReviewTrigger/styles.tsx +8 -1
  168. package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
  169. package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
  170. package/themes/original/src/components/ServiceForm/index.tsx +328 -264
  171. package/themes/original/src/components/SignupForm/index.tsx +134 -89
  172. package/themes/original/src/components/SingleOrderCard/index.tsx +129 -54
  173. package/themes/original/src/components/SingleOrderCard/styles.tsx +10 -8
  174. package/themes/original/src/components/SingleProductCard/index.tsx +85 -82
  175. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -9
  176. package/themes/original/src/components/SingleProductReview/index.tsx +38 -5
  177. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  178. package/themes/original/src/components/StripeCardsList/index.tsx +1 -1
  179. package/themes/original/src/components/StripeElementsForm/index.tsx +13 -2
  180. package/themes/original/src/components/UpsellingProducts/index.tsx +244 -215
  181. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  182. package/themes/original/src/components/UserDetails/index.tsx +5 -3
  183. package/themes/original/src/components/UserFormDetails/index.tsx +6 -48
  184. package/themes/original/src/components/UserProfile/index.tsx +58 -35
  185. package/themes/original/src/components/UserProfile/styles.ts +17 -0
  186. package/themes/original/src/components/UserProfileForm/index.tsx +19 -28
  187. package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
  188. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  189. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  190. package/themes/original/src/components/Wallets/index.tsx +176 -164
  191. package/themes/original/src/components/Wallets/styles.tsx +12 -8
  192. package/themes/original/src/components/shared/CardAnimation.tsx +47 -0
  193. package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
  194. package/themes/original/src/components/shared/OBottomPopup.tsx +6 -4
  195. package/themes/original/src/components/shared/OButton.tsx +9 -4
  196. package/themes/original/src/components/shared/OIcon.tsx +8 -1
  197. package/themes/original/src/components/shared/OInput.tsx +10 -1
  198. package/themes/original/src/layouts/Container.tsx +13 -9
  199. package/themes/original/src/types/index.tsx +44 -6
  200. package/themes/original/src/utils/index.tsx +103 -58
  201. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -1,5 +1,5 @@
1
- import React, { useEffect } from 'react'
2
- import { BusinessList as BusinessListController, useOrder } from 'ordering-components/native'
1
+ import React from 'react'
2
+ import { useOrder } from 'ordering-components/native'
3
3
  import { BusinessController } from '../../BusinessController'
4
4
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
5
5
 
@@ -12,43 +12,12 @@ import {
12
12
  } from 'react-native';
13
13
  import { PreviousBusinessOrderedParams } from '../../../types';
14
14
 
15
- export const PreviousBusinessOrderedUI = (props: PreviousBusinessOrderedParams) => {
16
- const {
17
- navigation,
18
- businessesList,
19
- setBusinessLoading,
20
- businessId,
21
- onNavigationRedirect,
22
- isBusinessesSearchList,
23
- businessLoading
24
- } = props
25
-
26
- const [orderState] = useOrder()
27
- const windowWidth = Dimensions.get('window').width;
28
-
29
- const onBusinessClick = (business: any) => {
30
- onNavigationRedirect('Business', { store: business.slug })
31
- }
32
- useEffect(() => {
33
- if (businessesList?.loading && businessesList?.businesses?.length === 0) {
34
- setBusinessLoading(true)
35
- } else {
36
- setBusinessLoading(false)
37
- }
38
- }, [businessesList?.loading])
39
-
40
- const styles = StyleSheet.create({
41
- container: {
42
- marginBottom: 0,
43
- },
44
- });
45
-
46
- const BusinessControllerList = ({ style }: any) => {
47
- return (
48
- <>
49
- {businessesList.businesses?.filter((business: any) => businessId?.includes(business?.id))?.map((business: any, i: number) => (
15
+ const BusinessControllerList = ({ businesses, onBusinessClick, navigation, orderState, handleCustomUpdate, style }: any) => {
16
+ return (
17
+ <>
18
+ {businesses?.result?.map((business: any, i: number) => (
19
+ <View style={style} key={`${business.id}_` + i}>
50
20
  <BusinessController
51
- key={`${business.id}_` + i}
52
21
  business={business}
53
22
  isBusinessOpen={business.open}
54
23
  handleCustomClick={() => onBusinessClick(business)}
@@ -62,76 +31,115 @@ export const PreviousBusinessOrderedUI = (props: PreviousBusinessOrderedParams)
62
31
  businessDeliveryTime={business?.delivery_time}
63
32
  businessPickupTime={business?.pickup_time}
64
33
  businessDistance={business?.distance}
65
- style={style}
34
+ handleCustomUpdate={handleCustomUpdate}
66
35
  />
67
- ))}
68
- </>
69
- )
70
- }
36
+ </View>
37
+ ))}
38
+ </>
39
+ )
40
+ }
71
41
 
72
- const BusinessSkeletons = () => {
73
- return (
74
- <>
75
- {[...Array(4).keys()].map((item, i) => (
76
- <Placeholder
77
- Animation={Fade}
78
- key={i}
79
- style={{ marginBottom: 20 }}>
80
- <View style={{ width: '100%' }}>
81
- <PlaceholderLine
82
- height={200}
83
- style={{ marginBottom: 20, borderRadius: 25 }}
84
- />
85
- <View style={{ paddingHorizontal: 10 }}>
86
- <View
87
- style={{
88
- flexDirection: 'row',
89
- justifyContent: 'space-between',
90
- }}>
91
- <PlaceholderLine
92
- height={25}
93
- width={40}
94
- style={{ marginBottom: 10 }}
95
- />
96
- <PlaceholderLine
97
- height={25}
98
- width={20}
99
- style={{ marginBottom: 10 }}
100
- />
101
- </View>
42
+ const BusinessSkeletons = () => {
43
+ return (
44
+ <>
45
+ {[...Array(4).keys()].map((item, i) => (
46
+ <Placeholder
47
+ Animation={Fade}
48
+ key={i}
49
+ style={{ marginBottom: 20 }}>
50
+ <View style={{ width: '100%' }}>
51
+ <PlaceholderLine
52
+ height={200}
53
+ style={{ marginBottom: 20, borderRadius: 25 }}
54
+ />
55
+ <View style={{ paddingHorizontal: 10 }}>
56
+ <View
57
+ style={{
58
+ flexDirection: 'row',
59
+ justifyContent: 'space-between',
60
+ }}>
102
61
  <PlaceholderLine
103
- height={20}
104
- width={30}
62
+ height={25}
63
+ width={40}
105
64
  style={{ marginBottom: 10 }}
106
65
  />
107
66
  <PlaceholderLine
108
- height={20}
109
- width={80}
67
+ height={25}
68
+ width={20}
110
69
  style={{ marginBottom: 10 }}
111
70
  />
112
71
  </View>
72
+ <PlaceholderLine
73
+ height={20}
74
+ width={30}
75
+ style={{ marginBottom: 10 }}
76
+ />
77
+ <PlaceholderLine
78
+ height={20}
79
+ width={80}
80
+ style={{ marginBottom: 10 }}
81
+ />
113
82
  </View>
114
- </Placeholder>
115
- ))}
116
- </>
117
- )
83
+ </View>
84
+ </Placeholder>
85
+ ))}
86
+ </>
87
+ )
88
+ }
89
+
90
+ export const PreviousBusinessOrdered = (props: PreviousBusinessOrderedParams) => {
91
+ const {
92
+ navigation,
93
+ businesses,
94
+ onNavigationRedirect,
95
+ isBusinessesSearchList,
96
+ handleUpdateBusinesses,
97
+ } = props
98
+
99
+ const [orderState] = useOrder()
100
+ const windowWidth = Dimensions.get('window').width;
101
+ const onBusinessClick = (business: any) => {
102
+ onNavigationRedirect('Business', { store: business.slug, logo: business.logo, header: business.header })
118
103
  }
119
104
 
105
+ const styles = StyleSheet.create({
106
+ container: {
107
+ marginBottom: 0,
108
+ },
109
+ });
110
+
120
111
  return (
121
- <ScrollView horizontal={isBusinessesSearchList} style={styles.container} showsVerticalScrollIndicator={false}>
112
+ <ScrollView
113
+ horizontal={isBusinessesSearchList}
114
+ style={styles.container}
115
+ showsVerticalScrollIndicator={false}
116
+ showsHorizontalScrollIndicator={false}
117
+ >
122
118
  {isBusinessesSearchList ? (
123
119
  <>
124
- {!businessLoading && (
120
+ {!businesses?.loading && (
125
121
  <BusinessControllerList
126
- style={{ width: windowWidth - 80, marginRight: 20 }}
122
+ style={{ width: windowWidth - 120, marginRight: 20 }}
123
+ onBusinessClick={onBusinessClick}
124
+ orderState={orderState}
125
+ navigation={navigation}
126
+ businesses={businesses}
127
+ handleCustomUpdate={handleUpdateBusinesses}
127
128
  />
128
129
  )}
129
130
  </>
130
131
  ) : (
131
132
  <ListWrapper>
132
- <BusinessControllerList />
133
- {businessesList.loading && (
133
+ {businesses?.loading ? (
134
134
  <BusinessSkeletons />
135
+ ) : (
136
+ <BusinessControllerList
137
+ onBusinessClick={onBusinessClick}
138
+ orderState={orderState}
139
+ navigation={navigation}
140
+ businesses={businesses}
141
+ handleCustomUpdate={handleUpdateBusinesses}
142
+ />
135
143
  )}
136
144
  </ListWrapper>
137
145
  )}
@@ -139,15 +147,3 @@ export const PreviousBusinessOrderedUI = (props: PreviousBusinessOrderedParams)
139
147
  </ScrollView>
140
148
  )
141
149
  }
142
-
143
- export const PreviousBusinessOrdered = (props: PreviousBusinessOrderedParams) => {
144
- const previousBusinessOrderedController = {
145
- ...props,
146
- UIComponent: PreviousBusinessOrderedUI,
147
- paginationSettings: { initialPage: 1, pageSize: 50, controlType: 'infinity' }
148
- }
149
-
150
- return (
151
- <BusinessListController {...previousBusinessOrderedController} />
152
- )
153
- }
@@ -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
  </>
@@ -47,6 +47,10 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
47
47
  businessesSearchList,
48
48
  hideOrders,
49
49
  BusinessControllerSkeletons,
50
+ businesses,
51
+ businessPaginationProps,
52
+ handleUpdateProducts,
53
+ handleUpdateBusinesses
50
54
  } = props
51
55
 
52
56
  const theme = useTheme();
@@ -56,12 +60,45 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
56
60
  const [, { showToast }] = useToast()
57
61
  const { loading, error, orders: values } = orderList
58
62
  const [businessLoading, setBusinessLoading] = useState(true)
63
+ const [orders, setOrders] = useState([])
59
64
 
60
65
  const imageFails = activeOrders
61
66
  ? theme.images.general.emptyActiveOrders
62
67
  : theme.images.general.emptyPastOrders
63
68
 
64
- const orders = customArray || values || []
69
+ const _orders = customArray || values || []
70
+ const uniqueOrders: any = []
71
+
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])
65
102
 
66
103
  const getOrderStatus = (s: string) => {
67
104
  const status = parseInt(s)
@@ -141,7 +178,9 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
141
178
 
142
179
  useFocusEffect(
143
180
  React.useCallback(() => {
144
- loadOrders(false, false, false, true)
181
+ if (!businessesSearchList) {
182
+ loadOrders(false, false, false, true)
183
+ }
145
184
  }, [navigation])
146
185
  )
147
186
 
@@ -155,14 +194,14 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
155
194
  useEffect(() => {
156
195
  if (loading) return
157
196
 
158
- const updateOrders = orders.filter((order: any) => orderStatus.includes(order.status))
197
+ const updateOrders = _orders.filter((order: any) => orderStatus.includes(order.status))
159
198
 
160
199
  if (activeOrders) {
161
200
  setOrdersLength && setOrdersLength({ ...ordersLength, activeOrdersLength: updateOrders?.length })
162
201
  } else if (!preOrders) {
163
202
  setOrdersLength && setOrdersLength({ ...ordersLength, previousOrdersLength: updateOrders?.length })
164
203
  }
165
- }, [orders, activeOrders, preOrders])
204
+ }, [_orders, activeOrders, preOrders])
166
205
 
167
206
  useEffect(() => {
168
207
  if (refreshOrders) {
@@ -189,15 +228,18 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
189
228
  )}
190
229
  {(ordersLength?.activeOrdersLength > 0 || ordersLength?.previousOrdersLength > 0) && (
191
230
  <>
192
- <OptionTitle titleContent={!!titleContent} isBusinessesSearchList={!!businessesSearchList}>
193
- <OText size={16} lineHeight={24} weight={'500'} color={theme.colors.textNormal} mBottom={10} >
194
- {titleContent || (activeOrders
195
- ? t('ACTIVE', 'Active')
196
- : preOrders
197
- ? t('PREORDERS', 'Preorders')
198
- : t('PAST', 'Past'))}
199
- </OText>
200
- </OptionTitle>
231
+ {((titleContent && ((isBusiness && businessOrderIds?.length > 0) || isProducts)) || !titleContent) && (
232
+ <OptionTitle titleContent={!!titleContent} isBusinessesSearchList={!!businessesSearchList}>
233
+ <OText size={16} lineHeight={24} weight={'500'} color={theme.colors.textNormal} mBottom={10} >
234
+ {titleContent || (activeOrders
235
+ ? t('ACTIVE', 'Active')
236
+ : preOrders
237
+ ? t('PREORDERS', 'Preorders')
238
+ : t('PAST', 'Past'))}
239
+ </OText>
240
+ </OptionTitle>
241
+ )}
242
+
201
243
  {!(ordersLength?.activeOrdersLength === 0 && ordersLength?.previousOrdersLength === 0) &&
202
244
  !loading &&
203
245
  orders.filter((order: any) => orderStatus.includes(order.status)).length === 0 &&
@@ -210,34 +252,33 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
210
252
  )}
211
253
  </>
212
254
  )}
213
- {isBusiness && !!businessesSearchList && businessLoading && (
255
+ {isBusiness && !!businessesSearchList && businesses?.loading && (
214
256
  <ScrollView horizontal>
215
- <BusinessControllerSkeletons />
257
+ <BusinessControllerSkeletons paginationProps={businessPaginationProps} />
216
258
  </ScrollView>
217
259
  )}
218
- {isBusiness && businessOrderIds?.length > 0 && (
260
+ {isBusiness && (
219
261
  <PreviousBusinessOrdered
220
- businessId={businessOrderIds}
221
- businessLoading={businessLoading}
222
- setBusinessLoading={setBusinessLoading}
223
262
  onNavigationRedirect={onNavigationRedirect}
224
- isLoadingOrders={loading}
225
263
  isBusinessesSearchList={!!businessesSearchList}
264
+ businesses={businesses}
265
+ handleUpdateBusinesses={handleUpdateBusinesses}
226
266
  />
227
267
  )}
228
268
 
229
- {isProducts && (
269
+ {isProducts && !loading && (
230
270
  <PreviousProductsOrdered
231
271
  products={products}
232
272
  onProductClick={onProductClick}
273
+ handleUpdateProducts={handleUpdateProducts}
233
274
  isBusinessesSearchList={!!businessesSearchList}
234
275
  />
235
276
  )}
236
277
  {(loading && isProducts) && (
237
278
  <>
238
- {[...Array(4).keys()].map(
279
+ {[...Array(!!businessesSearchList ? 1 : 4).keys()].map(
239
280
  (item, i) => (
240
- <Placeholder key={i} style={{ padding: 5, paddingLeft: 40 }} Animation={Fade}>
281
+ <Placeholder key={i} style={{ padding: 5, paddingLeft: !!businessesSearchList ? 0 : 40, marginBottom: !!businessesSearchList ? 38 : 0 }} Animation={Fade}>
241
282
  <View style={{ flexDirection: 'row' }}>
242
283
  <PlaceholderLine
243
284
  width={24}
@@ -254,38 +295,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
254
295
  )}
255
296
  </>
256
297
  )}
257
- {loading && !hideOrders && (
258
- <>
259
- {!activeOrders ? (
260
- <Placeholder style={{ marginTop: 30 }} Animation={Fade}>
261
- <View style={{ width: '100%', flexDirection: 'row' }}>
262
- <PlaceholderLine width={20} height={70} style={{ marginRight: 20, marginBottom: 35 }} />
263
- <Placeholder>
264
- <PlaceholderLine width={30} style={{ marginTop: 5 }} />
265
- <PlaceholderLine width={50} />
266
- <PlaceholderLine width={70} />
267
- </Placeholder>
268
- </View>
269
- </Placeholder>
270
- ) : (
271
- <View style={{ marginTop: 30 }}>
272
- {[...Array(5)].map((item, i) => (
273
- <Placeholder key={i} Animation={Fade}>
274
- <View style={{ width: '100%', flexDirection: 'row' }}>
275
- <PlaceholderLine width={20} height={70} style={{ marginRight: 20, marginBottom: 20 }} />
276
- <Placeholder>
277
- <PlaceholderLine width={30} style={{ marginTop: 5 }} />
278
- <PlaceholderLine width={50} />
279
- <PlaceholderLine width={20} />
280
- </Placeholder>
281
- </View>
282
- </Placeholder>
283
- ))}
284
- </View>
285
- )}
286
- </>
287
- )}
288
- {!loading && !error && orders.length > 0 && !hideOrders && (
298
+ {!error && orders.length > 0 && !hideOrders && (
289
299
  preOrders ? (
290
300
  <ActiveOrders
291
301
  orders={orders.filter((order: any) => orderStatus.includes(order.status))}
@@ -317,9 +327,41 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
317
327
  onNavigationRedirect={onNavigationRedirect}
318
328
  handleReorder={handleReorder}
319
329
  handleUpdateOrderList={handleUpdateOrderList}
330
+ loading={loading}
320
331
  />
321
332
  )
322
333
  )}
334
+ {loading && !hideOrders && (
335
+ <>
336
+ {!activeOrders ? (
337
+ <Placeholder style={{ marginTop: 30 }} Animation={Fade}>
338
+ <View style={{ width: '100%', flexDirection: 'row' }}>
339
+ <PlaceholderLine width={20} height={70} style={{ marginRight: 20, marginBottom: 35 }} />
340
+ <Placeholder>
341
+ <PlaceholderLine width={30} style={{ marginTop: 5 }} />
342
+ <PlaceholderLine width={50} />
343
+ <PlaceholderLine width={70} />
344
+ </Placeholder>
345
+ </View>
346
+ </Placeholder>
347
+ ) : (
348
+ <View style={{ marginTop: 30 }}>
349
+ {[...Array(5)].map((item, i) => (
350
+ <Placeholder key={i} Animation={Fade}>
351
+ <View style={{ width: '100%', flexDirection: 'row' }}>
352
+ <PlaceholderLine width={20} height={70} style={{ marginRight: 20, marginBottom: 20 }} />
353
+ <Placeholder>
354
+ <PlaceholderLine width={30} style={{ marginTop: 5 }} />
355
+ <PlaceholderLine width={50} />
356
+ <PlaceholderLine width={20} />
357
+ </Placeholder>
358
+ </View>
359
+ </Placeholder>
360
+ ))}
361
+ </View>
362
+ )}
363
+ </>
364
+ )}
323
365
  </>
324
366
  )
325
367
  }
@@ -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`
@@ -45,7 +45,7 @@ const PaymentOptionWalletUI = (props: any) => {
45
45
  new Array(walletsState.result?.length).fill(false)
46
46
  );
47
47
 
48
- const creditBalance: any = (wallet: any) => ` = ${parsePrice(wallet.balance / wallet.redemption_rate, { isTruncable: true })}`
48
+ const creditBalance: any = (wallet: any) => ` = ${parsePrice(wallet.balance / wallet.redemption_rate)}`
49
49
 
50
50
  const walletName: any = {
51
51
  cash: {
@@ -87,65 +87,65 @@ const PaymentOptionWalletUI = (props: any) => {
87
87
  {!walletsState.loading &&
88
88
  !walletsState.error &&
89
89
  walletsState.result?.length > 0 &&
90
- (
91
- <>
92
- {walletsState.result?.map((wallet: any, idx: any) => wallet.valid && wallet.balance >= 0 && walletName[wallet.type]?.isActive && (
93
- <Container
94
- key={wallet.id}
95
- isBottomBorder={idx === walletsState.result?.filter((wallet: any) => wallet.valid)?.length - 1}
96
- onPress={() => handleOnChange(idx, wallet)}
97
- disabled={(cart?.balance === 0 && !checkedState[idx]) || wallet.balance === 0}
98
- >
99
- <SectionLeft>
100
- {checkedState[idx] ? (
101
- <MaterialCommunityIcons
102
- name="checkbox-marked"
103
- size={25}
104
- color={theme.colors.primary}
105
- />
106
- ) : (
107
- <MaterialCommunityIcons
108
- name="checkbox-blank-outline"
109
- size={25}
110
- color={theme.colors.disabled}
111
- />
112
- )}
113
- <View style={{ alignItems: 'baseline', marginLeft: 5 }}>
114
- <View>
115
- <OText
116
- style={((cart?.balance === 0 && !checkedState[idx]) || wallet.balance === 0) ? {
117
- color: theme.colors.disabled
118
- } : {}}
119
- >
120
- {walletName[wallet.type]?.name}
121
- </OText>
122
- </View>
90
+ (
91
+ <>
92
+ {walletsState.result?.map((wallet: any, idx: any) => wallet.valid && wallet.balance >= 0 && walletName[wallet.type]?.isActive && (
93
+ <Container
94
+ key={wallet.id}
95
+ isBottomBorder={idx === walletsState.result?.filter((wallet: any) => wallet.valid)?.length - 1}
96
+ onPress={() => handleOnChange(idx, wallet)}
97
+ disabled={(cart?.balance === 0 && !checkedState[idx]) || wallet.balance === 0}
98
+ >
99
+ <SectionLeft>
100
+ {checkedState[idx] ? (
101
+ <MaterialCommunityIcons
102
+ name="checkbox-marked"
103
+ size={25}
104
+ color={theme.colors.primary}
105
+ />
106
+ ) : (
107
+ <MaterialCommunityIcons
108
+ name="checkbox-blank-outline"
109
+ size={25}
110
+ color={theme.colors.disabled}
111
+ />
112
+ )}
113
+ <View style={{ alignItems: 'baseline', marginLeft: 5 }}>
114
+ <View>
115
+ <OText
116
+ style={((cart?.balance === 0 && !checkedState[idx]) || wallet.balance === 0) ?{
117
+ color: theme.colors.disabled
118
+ } : {}}
119
+ >
120
+ {walletName[wallet.type]?.name}
121
+ </OText>
123
122
  </View>
124
- </SectionLeft>
125
-
126
- <View style={{ maxWidth: '35%', alignItems: 'flex-end' }}>
127
- {wallet.type === 'cash' && (
128
- <OText>
129
- {parsePrice(wallet?.balance, { isTruncable: true })}
123
+ </View>
124
+ </SectionLeft>
125
+
126
+ <View style={{maxWidth: '35%', alignItems: 'flex-end' }}>
127
+ {wallet.type === 'cash' && (
128
+ <OText>
129
+ {parsePrice(wallet?.balance)}
130
+ </OText>
131
+ )}
132
+ {wallet.type === 'credit_point' && (
133
+ <OText>
134
+ <OText color={theme.colors.primary} weight='bold'>
135
+ {`${wallet?.balance} ${t('POINTS', 'Points')}`}
130
136
  </OText>
131
- )}
132
- {wallet.type === 'credit_point' && (
133
137
  <OText>
134
- <OText color={theme.colors.primary} weight='bold'>
135
- {`${wallet?.balance} ${t('POINTS', 'Points')}`}
136
- </OText>
137
- <OText>
138
- {wallet?.balance > 0
139
- ? creditBalance(wallet)
140
- : null}
141
- </OText>
138
+ {wallet?.balance > 0
139
+ ? creditBalance(wallet)
140
+ : null}
142
141
  </OText>
143
- )}
144
- </View>
145
- </Container>
146
- ))}
147
- </>
148
- )}
142
+ </OText>
143
+ )}
144
+ </View>
145
+ </Container>
146
+ ))}
147
+ </>
148
+ )}
149
149
 
150
150
  {walletsState?.loading && (
151
151
  <View>
@@ -160,7 +160,6 @@ const PaymentOptionsUI = (props: any) => {
160
160
  <TouchableOpacity
161
161
  onPress={() => handlePaymentMethodClick(item)}
162
162
  >
163
- {console.log(item?.gateway)}
164
163
  <PMItem
165
164
  key={item.id}
166
165
  isDisabled={isDisabled}
@@ -187,7 +186,7 @@ const PaymentOptionsUI = (props: any) => {
187
186
  )
188
187
  }
189
188
 
190
- const excludeIds: any = [32]; //exclude paypal & connect & redirect
189
+ const excludeIds: any = [32, 66]; //exclude paypal & connect & redirect
191
190
 
192
191
  return (
193
192
  <PMContainer>
@@ -124,7 +124,7 @@ export const PhoneInputNumber = (props: PhoneInputParams) => {
124
124
  flagButtonStyle={flagStyle}
125
125
  countryPickerButtonStyle={{ ...style.countryBtn, ...boxStyle ? boxStyle : {} }}
126
126
  placeholder={t('PHONE_NUMBER', 'Phone Number')}
127
- textInputProps={{ autoCompleteType: 'tel', ref: forwardRef, ...textInputProps }}
127
+ textInputProps={{ keyboardType: 'number-pad', autoCompleteType: 'tel', textContentType: 'telephoneNumber', dataDetectorTypes: 'phoneNumber', ref: forwardRef, ...textInputProps }}
128
128
  containerStyle={{ width: '100%' }}
129
129
  renderDropdownImage={noDropIcon ? <View /> : <OIcon src={theme.images.general.arrow_down} width={13} color={'#B1BCCC'}></OIcon>}
130
130
  />