ordering-ui-react-native 0.15.59 → 0.15.61-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 (207) hide show
  1. package/package.json +6 -3
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/AddressForm/index.tsx +18 -2
  4. package/src/components/BusinessController/index.tsx +16 -8
  5. package/src/components/BusinessInformation/index.tsx +14 -0
  6. package/src/components/BusinessTypeFilter/index.tsx +1 -2
  7. package/src/components/BusinessesListing/index.tsx +1 -1
  8. package/src/components/Checkout/index.tsx +23 -2
  9. package/src/components/DriverTips/index.tsx +11 -6
  10. package/src/components/LanguageSelector/index.tsx +7 -2
  11. package/src/components/LoginForm/index.tsx +120 -30
  12. package/src/components/LoginForm/styles.tsx +6 -0
  13. package/src/components/OrderDetails/index.tsx +7 -21
  14. package/src/components/PaymentOptions/index.tsx +67 -50
  15. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  16. package/src/components/ReviewDriver/index.tsx +1 -1
  17. package/src/components/ReviewOrder/index.tsx +2 -1
  18. package/src/components/ReviewProducts/index.tsx +11 -0
  19. package/src/components/SignupForm/index.tsx +145 -61
  20. package/src/components/SingleProductCard/index.tsx +16 -4
  21. package/src/components/SingleProductReview/index.tsx +1 -1
  22. package/src/components/StripeMethodForm/index.tsx +1 -2
  23. package/src/components/UpsellingProducts/index.tsx +1 -1
  24. package/src/components/UserProfileForm/index.tsx +63 -6
  25. package/src/components/UserProfileForm/styles.tsx +8 -0
  26. package/src/components/VerifyPhone/styles.tsx +1 -2
  27. package/src/components/shared/OModal.tsx +1 -1
  28. package/src/hooks/useCountdownTimer.tsx +26 -0
  29. package/src/navigators/CheckoutNavigator.tsx +6 -0
  30. package/src/navigators/HomeNavigator.tsx +12 -0
  31. package/src/pages/BusinessesListing.tsx +7 -6
  32. package/src/pages/MultiCheckout.tsx +31 -0
  33. package/src/pages/MultiOrdersDetails.tsx +27 -0
  34. package/src/pages/OrderDetails.tsx +1 -1
  35. package/src/pages/ReviewDriver.tsx +2 -2
  36. package/src/pages/ReviewOrder.tsx +2 -2
  37. package/src/pages/Sessions.tsx +22 -0
  38. package/src/theme.json +0 -1
  39. package/src/types/index.tsx +18 -11
  40. package/src/utils/index.tsx +68 -1
  41. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +103 -15
  42. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -0
  43. package/themes/business/src/components/Chat/index.tsx +42 -90
  44. package/themes/business/src/components/DriverMap/index.tsx +6 -5
  45. package/themes/business/src/components/LoginForm/index.tsx +89 -2
  46. package/themes/business/src/components/LoginForm/styles.tsx +6 -0
  47. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  48. package/themes/business/src/components/NewOrderNotification/index.tsx +26 -13
  49. package/themes/business/src/components/OrderDetails/Business.tsx +2 -2
  50. package/themes/business/src/components/OrderDetails/Delivery.tsx +28 -11
  51. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +14 -7
  52. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +6 -0
  53. package/themes/business/src/components/OrdersListManager/index.tsx +1 -1
  54. package/themes/business/src/components/OrdersOption/index.tsx +8 -4
  55. package/themes/business/src/components/PreviousOrders/index.tsx +7 -7
  56. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  57. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  58. package/themes/business/src/components/UserProfileForm/index.tsx +2 -0
  59. package/themes/business/src/components/shared/OModal.tsx +1 -1
  60. package/themes/business/src/types/index.tsx +8 -2
  61. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  62. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  63. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  64. package/themes/kiosk/src/components/BusinessMenu/index.tsx +39 -28
  65. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -3
  66. package/themes/kiosk/src/components/Cart/index.tsx +11 -12
  67. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +9 -2
  68. package/themes/kiosk/src/components/CartContent/index.tsx +0 -11
  69. package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
  70. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +107 -62
  71. package/themes/kiosk/src/components/Checkout/index.tsx +40 -22
  72. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  73. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  74. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  75. package/themes/kiosk/src/components/NavBar/index.tsx +29 -20
  76. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  77. package/themes/kiosk/src/components/OrderDetails/index.tsx +32 -27
  78. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +9 -11
  79. package/themes/kiosk/src/components/PaymentOptions/index.tsx +56 -54
  80. package/themes/kiosk/src/components/ProductForm/index.tsx +7 -8
  81. package/themes/kiosk/src/components/ProductItemAccordion/index.tsx +2 -2
  82. package/themes/kiosk/src/components/ProductOption/index.tsx +1 -1
  83. package/themes/kiosk/src/components/ProductOptionSubOption/index.tsx +3 -1
  84. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +16 -5
  85. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  86. package/themes/kiosk/src/types/index.d.ts +1 -0
  87. package/themes/original/index.tsx +30 -8
  88. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  89. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  90. package/themes/original/src/components/AddressForm/index.tsx +7 -6
  91. package/themes/original/src/components/AddressList/index.tsx +30 -18
  92. package/themes/original/src/components/AppleLogin/index.tsx +9 -13
  93. package/themes/original/src/components/BusinessBasicInformation/index.tsx +137 -46
  94. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +4 -0
  95. package/themes/original/src/components/BusinessController/index.tsx +29 -11
  96. package/themes/original/src/components/BusinessController/styles.tsx +5 -0
  97. package/themes/original/src/components/BusinessItemAccordion/index.tsx +8 -5
  98. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  99. package/themes/original/src/components/BusinessListingSearch/index.tsx +205 -61
  100. package/themes/original/src/components/BusinessListingSearch/styles.tsx +22 -2
  101. package/themes/original/src/components/BusinessPreorder/index.tsx +1 -1
  102. package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -2
  103. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  104. package/themes/original/src/components/BusinessProductsList/index.tsx +51 -53
  105. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  106. package/themes/original/src/components/BusinessProductsListing/index.tsx +301 -170
  107. package/themes/original/src/components/BusinessProductsListing/styles.tsx +27 -0
  108. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  109. package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -39
  110. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  111. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +557 -0
  112. package/themes/original/src/components/BusinessesListing/Layout/Appointment/styles.tsx +107 -0
  113. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +519 -0
  114. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Original/styles.tsx} +11 -3
  115. package/themes/original/src/components/BusinessesListing/index.tsx +97 -457
  116. package/themes/original/src/components/Cart/index.tsx +61 -42
  117. package/themes/original/src/components/Checkout/index.tsx +88 -38
  118. package/themes/original/src/components/DriverTips/index.tsx +17 -12
  119. package/themes/original/src/components/Favorite/index.tsx +92 -0
  120. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  121. package/themes/original/src/components/FavoriteList/index.tsx +298 -0
  122. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  123. package/themes/original/src/components/ForgotPasswordForm/index.tsx +84 -4
  124. package/themes/original/src/components/GPSButton/index.tsx +15 -8
  125. package/themes/original/src/components/GoogleMap/index.tsx +11 -11
  126. package/themes/original/src/components/Help/index.tsx +21 -4
  127. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  128. package/themes/original/src/components/LastOrders/index.tsx +12 -1
  129. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -0
  130. package/themes/original/src/components/LoginForm/Otp/styles.tsx +7 -0
  131. package/themes/original/src/components/LoginForm/index.tsx +332 -164
  132. package/themes/original/src/components/LoginForm/styles.tsx +1 -3
  133. package/themes/original/src/components/MessageListing/index.tsx +10 -1
  134. package/themes/original/src/components/Messages/index.tsx +1 -1
  135. package/themes/original/src/components/MomentOption/index.tsx +10 -1
  136. package/themes/original/src/components/MomentOption/styles.tsx +1 -1
  137. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  138. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  139. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  140. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  141. package/themes/original/src/components/MultiCheckout/index.tsx +298 -0
  142. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  143. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  144. package/themes/original/src/components/MultiOrdersDetails/index.tsx +258 -0
  145. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  146. package/themes/original/src/components/MyOrders/index.tsx +120 -32
  147. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  148. package/themes/original/src/components/NavBar/index.tsx +4 -4
  149. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  150. package/themes/original/src/components/OrderDetails/index.tsx +151 -65
  151. package/themes/original/src/components/OrderDetails/styles.tsx +1 -2
  152. package/themes/original/src/components/OrderSummary/index.tsx +3 -3
  153. package/themes/original/src/components/OrderTypeSelector/index.tsx +4 -2
  154. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +153 -0
  155. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  156. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +53 -0
  157. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  158. package/themes/original/src/components/OrdersOption/index.tsx +130 -38
  159. package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
  160. package/themes/original/src/components/PaymentOptionCash/index.tsx +2 -2
  161. package/themes/original/src/components/PaymentOptionWallet/index.tsx +17 -23
  162. package/themes/original/src/components/PaymentOptionWallet/styles.tsx +1 -1
  163. package/themes/original/src/components/PaymentOptions/index.tsx +58 -37
  164. package/themes/original/src/components/PhoneInputNumber/index.tsx +5 -11
  165. package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
  166. package/themes/original/src/components/ProductForm/index.tsx +70 -62
  167. package/themes/original/src/components/ProductForm/styles.tsx +0 -1
  168. package/themes/original/src/components/ProductItemAccordion/index.tsx +2 -2
  169. package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -12
  170. package/themes/original/src/components/ProfessionalFilter/index.tsx +128 -0
  171. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  172. package/themes/original/src/components/ProfessionalProfile/index.tsx +298 -0
  173. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  174. package/themes/original/src/components/Promotions/index.tsx +151 -133
  175. package/themes/original/src/components/Promotions/styles.tsx +3 -23
  176. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  177. package/themes/original/src/components/ReviewOrder/index.tsx +1 -1
  178. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  179. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  180. package/themes/original/src/components/SearchBar/index.tsx +10 -4
  181. package/themes/original/src/components/ServiceForm/index.tsx +579 -0
  182. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  183. package/themes/original/src/components/Sessions/index.tsx +160 -0
  184. package/themes/original/src/components/Sessions/styles.tsx +15 -0
  185. package/themes/original/src/components/SignupForm/index.tsx +237 -126
  186. package/themes/original/src/components/SingleOrderCard/index.tsx +282 -0
  187. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  188. package/themes/original/src/components/SingleProductCard/index.tsx +59 -17
  189. package/themes/original/src/components/StripeElementsForm/index.tsx +16 -8
  190. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  191. package/themes/original/src/components/UpsellingProducts/index.tsx +86 -74
  192. package/themes/original/src/components/UserDetails/index.tsx +15 -81
  193. package/themes/original/src/components/UserFormDetails/index.tsx +98 -66
  194. package/themes/original/src/components/UserProfile/index.tsx +52 -5
  195. package/themes/original/src/components/UserProfileForm/index.tsx +20 -18
  196. package/themes/original/src/components/UserVerification/index.tsx +178 -192
  197. package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
  198. package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
  199. package/themes/original/src/components/Wallets/index.tsx +76 -9
  200. package/themes/original/src/components/Wallets/styles.tsx +21 -0
  201. package/themes/original/src/components/shared/OBottomPopup.tsx +44 -13
  202. package/themes/original/src/components/shared/OModal.tsx +4 -2
  203. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  204. package/themes/original/src/types/index.tsx +186 -35
  205. package/themes/original/src/utils/index.tsx +96 -2
  206. package/themes/single-business/src/components/OrderTypeSelector/index.tsx +1 -1
  207. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -6,10 +6,11 @@ import { OText, OButton } from '../shared'
6
6
  import { NotFoundSource } from '../NotFoundSource'
7
7
  import { ActiveOrders } from '../ActiveOrders'
8
8
  import { PreviousOrders } from '../PreviousOrders'
9
-
9
+ import { PreviousBusinessOrdered } from './PreviousBusinessOrdered'
10
+ import { PreviousProductsOrdered } from './PreviousProductsOrdered'
10
11
  import { OptionTitle, NoOrdersWrapper } from './styles'
11
12
  import { OrdersOptionParams } from '../../types'
12
-
13
+ import { _setStoreData } from '../../providers/StoreUtil';
13
14
  import {
14
15
  Placeholder,
15
16
  PlaceholderLine,
@@ -33,15 +34,28 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
33
34
  loadMoreOrders,
34
35
  loadOrders,
35
36
  setOrdersLength,
36
- ordersLength
37
+ ordersLength,
38
+ refreshOrders,
39
+ setRefreshOrders,
40
+ reorderState,
41
+ handleReorder,
42
+ handleUpdateOrderList,
43
+ isBusiness,
44
+ isProducts,
45
+ businessOrderIds,
46
+ products,
47
+ businessesSearchList,
48
+ hideOrders,
49
+ BusinessControllerSkeletons,
37
50
  } = props
38
51
 
39
52
  const theme = useTheme();
40
53
 
41
54
  const [, t] = useLanguage()
42
- const [, { reorder }] = useOrder()
43
- const { showToast } = useToast()
55
+ const [{ carts }] = useOrder()
56
+ const [, { showToast }] = useToast()
44
57
  const { loading, error, orders: values } = orderList
58
+ const [businessLoading, setBusinessLoading] = useState(true)
45
59
 
46
60
  const imageFails = activeOrders
47
61
  ? theme.images.general.emptyActiveOrders
@@ -49,26 +63,6 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
49
63
 
50
64
  const orders = customArray || values || []
51
65
 
52
- const [reorderLoading, setReorderLoading] = useState(false)
53
-
54
-
55
- const handleReorder = async (orderId: number) => {
56
- setReorderLoading(true)
57
- try {
58
- const { error, result } = await reorder(orderId)
59
- if (!error) {
60
- onNavigationRedirect && onNavigationRedirect('CheckoutNavigator', { cartUuid: result.uuid })
61
- setReorderLoading(false)
62
- return
63
- }
64
- setReorderLoading(false)
65
-
66
- } catch (err: any) {
67
- showToast(ToastType.Error, t('ERROR', err.message))
68
- setReorderLoading(false)
69
- }
70
- }
71
-
72
66
  const getOrderStatus = (s: string) => {
73
67
  const status = parseInt(s)
74
68
  const orderStatus = [
@@ -103,9 +97,44 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
103
97
  return objectStatus && objectStatus
104
98
  }
105
99
 
100
+ const onProductClick = (product: any) => {
101
+ if (product?.product_id && product?.category_id && product?.businessId) {
102
+ onNavigationRedirect('ProductDetails', {
103
+ productId: product?.product_id,
104
+ categoryId: product?.category_id,
105
+ businessId: product?.businessId,
106
+ })
107
+ } else {
108
+ showToast(ToastType.Error, t('ERROR_FAILED_REDIRECT_IDS', 'Failed to redirect product for ids'))
109
+ }
110
+ }
111
+
112
+ useEffect(() => {
113
+ const _businessId = 'businessId:' + reorderState?.result?.business_id
114
+ if (reorderState?.error) {
115
+ if (reorderState?.result?.business_id) {
116
+ _setStoreData('adjust-cart-products', JSON.stringify(_businessId))
117
+ navigation.navigate('Business', { store: reorderState?.result?.business?.slug })
118
+ }
119
+ }
120
+ if (!reorderState?.error && reorderState.loading === false && reorderState?.result?.business_id) {
121
+ const cartProducts = carts?.[_businessId]?.products
122
+ const available = cartProducts.every((product: any) => product.valid === true)
123
+ const orderProducts = orders.find((order: any) => order?.id === reorderState?.result?.orderId)?.products
124
+
125
+ if (available && reorderState?.result?.uuid && (cartProducts?.length === orderProducts?.length)) {
126
+ onNavigationRedirect && onNavigationRedirect('CheckoutNavigator', { cartUuid: reorderState?.result.uuid })
127
+ } else {
128
+ _setStoreData('adjust-cart-products', JSON.stringify(_businessId))
129
+ cartProducts?.length !== orderProducts?.length && _setStoreData('already-removed', JSON.stringify('removed'))
130
+ navigation.navigate('Business', { store: reorderState?.result?.business?.slug })
131
+ }
132
+ }
133
+ }, [reorderState])
134
+
106
135
  useFocusEffect(
107
136
  React.useCallback(() => {
108
- loadOrders()
137
+ loadOrders(false, false, false, true)
109
138
  }, [navigation])
110
139
  )
111
140
 
@@ -126,7 +155,14 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
126
155
  } else if (!preOrders) {
127
156
  setOrdersLength && setOrdersLength({ ...ordersLength, previousOrdersLength: updateOrders?.length })
128
157
  }
129
- }, [orders, activeOrders])
158
+ }, [orders, activeOrders, preOrders])
159
+
160
+ useEffect(() => {
161
+ if (refreshOrders) {
162
+ loadOrders(false, false, false, true)
163
+ setRefreshOrders && setRefreshOrders(false)
164
+ }
165
+ }, [refreshOrders])
130
166
 
131
167
  return (
132
168
  <>
@@ -144,9 +180,9 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
144
180
 
145
181
  </NoOrdersWrapper>
146
182
  )}
147
- {(ordersLength.activeOrdersLength > 0 || ordersLength.previousOrdersLength > 0) && (
183
+ {(ordersLength?.activeOrdersLength > 0 || ordersLength?.previousOrdersLength > 0) && (
148
184
  <>
149
- <OptionTitle>
185
+ <OptionTitle titleContent={!!titleContent} isBusinessesSearchList={!!businessesSearchList}>
150
186
  <OText size={16} lineHeight={24} weight={'500'} color={theme.colors.textNormal} mBottom={10} >
151
187
  {titleContent || (activeOrders
152
188
  ? t('ACTIVE', 'Active')
@@ -155,7 +191,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
155
191
  : t('PAST', 'Past'))}
156
192
  </OText>
157
193
  </OptionTitle>
158
- {!(ordersLength.activeOrdersLength === 0 && ordersLength.previousOrdersLength === 0) &&
194
+ {!(ordersLength?.activeOrdersLength === 0 && ordersLength?.previousOrdersLength === 0) &&
159
195
  !loading &&
160
196
  orders.filter((order: any) => orderStatus.includes(order.status)).length === 0 &&
161
197
  (
@@ -167,7 +203,51 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
167
203
  )}
168
204
  </>
169
205
  )}
170
- {loading && (
206
+ {isBusiness && !!businessesSearchList && businessLoading && (
207
+ <ScrollView horizontal>
208
+ <BusinessControllerSkeletons />
209
+ </ScrollView>
210
+ )}
211
+ {isBusiness && businessOrderIds?.length > 0 && (
212
+ <PreviousBusinessOrdered
213
+ businessId={businessOrderIds}
214
+ businessLoading={businessLoading}
215
+ setBusinessLoading={setBusinessLoading}
216
+ onNavigationRedirect={onNavigationRedirect}
217
+ isLoadingOrders={loading}
218
+ isBusinessesSearchList={!!businessesSearchList}
219
+ />
220
+ )}
221
+
222
+ {isProducts && (
223
+ <PreviousProductsOrdered
224
+ products={products}
225
+ onProductClick={onProductClick}
226
+ isBusinessesSearchList={!!businessesSearchList}
227
+ />
228
+ )}
229
+ {(loading && isProducts) && (
230
+ <>
231
+ {[...Array(4).keys()].map(
232
+ (item, i) => (
233
+ <Placeholder key={i} style={{ padding: 5, paddingLeft: 40 }} Animation={Fade}>
234
+ <View style={{ flexDirection: 'row' }}>
235
+ <PlaceholderLine
236
+ width={24}
237
+ height={70}
238
+ style={{ marginRight: 10, marginBottom: 10 }}
239
+ />
240
+ <Placeholder style={{ paddingVertical: 10 }}>
241
+ <PlaceholderLine width={60} style={{ marginBottom: 25 }} />
242
+ <PlaceholderLine width={20} />
243
+ </Placeholder>
244
+ </View>
245
+ </Placeholder>
246
+ ),
247
+ )}
248
+ </>
249
+ )}
250
+ {loading && !hideOrders && (
171
251
  <>
172
252
  {!activeOrders ? (
173
253
  <Placeholder style={{ marginTop: 30 }} Animation={Fade}>
@@ -198,35 +278,38 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
198
278
  )}
199
279
  </>
200
280
  )}
201
- {!loading && !error && orders.length > 0 && (
281
+ {!loading && !error && orders.length > 0 && !hideOrders && (
202
282
  preOrders ? (
203
283
  <ActiveOrders
204
284
  orders={orders.filter((order: any) => orderStatus.includes(order.status))}
205
285
  pagination={pagination}
206
286
  loadMoreOrders={loadMoreOrders}
207
- reorderLoading={reorderLoading}
287
+ reorderLoading={reorderState?.loading}
208
288
  customArray={customArray}
209
289
  getOrderStatus={getOrderStatus}
210
290
  onNavigationRedirect={onNavigationRedirect}
291
+ handleUpdateOrderList={handleUpdateOrderList}
211
292
  />
212
293
  ) : activeOrders ? (
213
294
  <ActiveOrders
214
295
  orders={orders.filter((order: any) => orderStatus.includes(order.status))}
215
296
  pagination={pagination}
216
- reorderLoading={reorderLoading}
297
+ reorderLoading={reorderState?.loading}
217
298
  customArray={customArray}
218
299
  getOrderStatus={getOrderStatus}
219
300
  onNavigationRedirect={onNavigationRedirect}
301
+ handleUpdateOrderList={handleUpdateOrderList}
220
302
  />
221
303
  ) : (
222
304
  <PreviousOrders
223
- reorderLoading={reorderLoading}
305
+ reorderLoading={reorderState?.loading}
224
306
  orders={orders.filter((order: any) => orderStatus.includes(order.status)).sort((a: any, b: any) => a?.id < b?.id)}
225
307
  pagination={pagination}
226
308
  loadMoreOrders={loadMoreOrders}
227
309
  getOrderStatus={getOrderStatus}
228
310
  onNavigationRedirect={onNavigationRedirect}
229
311
  handleReorder={handleReorder}
312
+ handleUpdateOrderList={handleUpdateOrderList}
230
313
  />
231
314
  )
232
315
  )}
@@ -235,13 +318,22 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
235
318
  }
236
319
 
237
320
  export const OrdersOption = (props: OrdersOptionParams) => {
321
+ const getAllOrders = props.activeOrders && props.pastOrders && props.preOrders
322
+
238
323
  const MyOrdersProps = {
239
324
  ...props,
240
325
  UIComponent: OrdersOptionUI,
241
- orderStatus: props.preOrders ? [13] : props.activeOrders
242
- ? [0, 3, 4, 7, 8, 9, 14, 18, 19, 20, 21, 22, 23]
243
- : [1, 2, 5, 6, 10, 11, 12, 15, 16, 17],
326
+ orderStatus: getAllOrders
327
+ ? [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
328
+ : props.preOrders ? [13] : props.activeOrders
329
+ ? [0, 3, 4, 7, 8, 9, 14, 18, 19, 20, 21, 22, 23]
330
+ : [1, 2, 5, 6, 10, 11, 12, 15, 16, 17],
244
331
  useDefualtSessionManager: true,
332
+ paginationSettings: {
333
+ initialPage: 1,
334
+ pageSize: getAllOrders ? 30 : 10,
335
+ controlType: 'infinity'
336
+ }
245
337
  }
246
338
 
247
339
  return <OrderList {...MyOrdersProps} />
@@ -1,7 +1,10 @@
1
- import styled from 'styled-components/native'
1
+ import styled, { css } from 'styled-components/native'
2
2
 
3
3
  export const OptionTitle = styled.View`
4
4
  margin-top: 24px;
5
+ ${(props : any) => props.titleContent && css`
6
+ margin-left: ${() => props.isBusinessesSearchList ? '0' : '40px'};
7
+ `}
5
8
  `
6
9
 
7
10
  export const NoOrdersWrapper = styled.View`
@@ -23,8 +23,8 @@ export const PaymentOptionCash = (props: any) => {
23
23
  borderRadius: 7.6,
24
24
  marginTop: 10,
25
25
  width: '100%',
26
- height: 44,
27
- maxHeight: 44
26
+ height: 50,
27
+ maxHeight: 50
28
28
  },
29
29
  errorMsg: {
30
30
  marginTop: 10,
@@ -1,8 +1,8 @@
1
1
  import React, { useState, useEffect } from 'react'
2
- import { Platform, StyleSheet, View } from 'react-native'
2
+ import { View } from 'react-native'
3
3
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
4
4
  import { useTheme } from 'styled-components/native'
5
- import CheckBox from '@react-native-community/checkbox';
5
+ import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
6
6
  import {
7
7
  PaymentOptionWallet as PaymentOptionWalletController,
8
8
  useLanguage,
@@ -41,13 +41,6 @@ const PaymentOptionWalletUI = (props: any) => {
41
41
  const isBusinessWalletCashEnabled = businessConfigs.find((config: any) => config.key === 'wallet_cash_enabled')?.value === '1'
42
42
  const isBusinessWalletPointsEnabled = businessConfigs.find((config: any) => config.key === 'wallet_credit_point_enabled')?.value === '1'
43
43
 
44
- const styles = StyleSheet.create({
45
- checkBoxStyle: {
46
- width: 25,
47
- height: 25,
48
- }
49
- });
50
-
51
44
  const [checkedState, setCheckedState] = useState(
52
45
  new Array(walletsState.result?.length).fill(false)
53
46
  );
@@ -100,22 +93,23 @@ const PaymentOptionWalletUI = (props: any) => {
100
93
  <Container
101
94
  key={wallet.id}
102
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}
103
98
  >
104
99
  <SectionLeft>
105
- <CheckBox
106
- value={checkedState[idx]}
107
- onValueChange={() => handleOnChange(idx, wallet)}
108
- disabled={(cart?.balance === 0 && !checkedState[idx]) || wallet.balance === 0 }
109
- boxType={'square'}
110
- tintColors={{
111
- true: theme.colors.primary,
112
- false: theme.colors.disabled
113
- }}
114
- tintColor={theme.colors.disabled}
115
- onCheckColor={theme.colors.primary}
116
- onTintColor={theme.colors.primary}
117
- style={Platform.OS === 'ios' && styles.checkBoxStyle}
118
- />
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
+ )}
119
113
  <View style={{ alignItems: 'baseline', marginLeft: 5 }}>
120
114
  <View>
121
115
  <OText
@@ -1,6 +1,6 @@
1
1
  import styled, { css } from 'styled-components/native'
2
2
 
3
- export const Container = styled.View`
3
+ export const Container = styled.TouchableOpacity`
4
4
  width: 100%;
5
5
  display: flex;
6
6
  padding: 20px 0;
@@ -9,7 +9,7 @@ import {
9
9
  import {
10
10
  PaymentOptions as PaymentOptionsController,
11
11
  useLanguage,
12
- ToastType,
12
+ ToastType,
13
13
  useToast,
14
14
  } from 'ordering-components/native';
15
15
  import { useTheme } from 'styled-components/native';
@@ -30,6 +30,7 @@ import {
30
30
  PMCardItemContent
31
31
  } from './styles'
32
32
  import { getIconCard, flatArray } from '../../utils';
33
+ import { useApplePay } from '@stripe/stripe-react-native';
33
34
 
34
35
  const stripeOptions: any = ['stripe_direct', 'stripe', 'stripe_connect']
35
36
  const methodsPay = ['google_pay', 'apple_pay']
@@ -62,7 +63,8 @@ const PaymentOptionsUI = (props: any) => {
62
63
  } = props
63
64
 
64
65
  const theme = useTheme();
65
- const [, { showToast }] = useToast();
66
+ const [, { showToast }] = useToast();
67
+ const { confirmApplePayPayment } = useApplePay()
66
68
 
67
69
  const getPayIcon = (method: string) => {
68
70
  switch (method) {
@@ -80,6 +82,8 @@ const PaymentOptionsUI = (props: any) => {
80
82
  return theme.images.general.stripes
81
83
  case 'stripe_redirect':
82
84
  return theme.images.general.stripesb
85
+ case 'apple_pay':
86
+ return theme.images.general.applePayMark
83
87
  default:
84
88
  return theme.images.general.creditCard
85
89
  }
@@ -98,18 +102,18 @@ const PaymentOptionsUI = (props: any) => {
98
102
  // ]
99
103
 
100
104
  const handlePaymentMethodClick = (paymethod: any) => {
101
- if (cart?.balance > 0) {
102
- const isPopupMethod = ['stripe', 'stripe_direct', 'stripe_connect', 'stripe_redirect', 'paypal'].includes(paymethod?.gateway)
103
- if (webViewPaymentGateway.includes(paymethod?.gateway)) {
104
- handlePaymentMethodClickCustom(paymethod)
105
- }
106
- handlePaymethodClick(paymethod, isPopupMethod)
107
- return
108
- }
109
- showToast(
105
+ if (cart?.balance > 0) {
106
+ const isPopupMethod = ['stripe', 'stripe_direct', 'stripe_connect', 'stripe_redirect', 'paypal'].includes(paymethod?.gateway)
107
+ if (webViewPaymentGateway.includes(paymethod?.gateway)) {
108
+ handlePaymentMethodClickCustom(paymethod)
109
+ }
110
+ handlePaymethodClick(paymethod, isPopupMethod)
111
+ return
112
+ }
113
+ showToast(
110
114
  ToastType.Error,
111
115
  t('CART_BALANCE_ZERO', 'Sorry, the amount to pay is equal to zero and it is not necessary to select a payment method'))
112
- ;
116
+ ;
113
117
  }
114
118
 
115
119
  useEffect(() => {
@@ -134,39 +138,56 @@ const PaymentOptionsUI = (props: any) => {
134
138
 
135
139
  useEffect(() => {
136
140
  if (methodsPay.includes(paymethodSelected?.gateway) && paymethodData?.id && paymethodSelected?.data?.card) {
137
- handlePlaceOrder()
141
+ handlePlaceOrder(confirmApplePayPayment)
138
142
  }
139
143
  }, [paymethodData, paymethodSelected])
140
144
 
141
145
  const renderPaymethods = ({ item }: any) => {
142
146
  return (
143
- <TouchableOpacity
144
- onPress={() => handlePaymentMethodClick(item)}
145
- >
146
- <PMItem
147
- key={item.id}
148
- isDisabled={isDisabled}
149
- isActive={paymethodSelected?.id === item.id}
150
- >
151
- <OIcon
152
- src={getPayIcon(item.gateway)}
153
- width={20}
154
- height={20}
155
- color={paymethodSelected?.id === item.id ? theme.colors.white : theme.colors.backgroundDark}
156
- />
157
- <OText
158
- size={10}
159
- style={{ margin: 0, marginTop: 4 }}
160
- color={paymethodSelected?.id === item.id ? theme.colors.white : '#000'}
147
+ <>
148
+ {item?.gateway === 'apple_pay' ? (
149
+ <TouchableOpacity
150
+ onPress={() => handlePaymentMethodClick(item)}
161
151
  >
162
- {t(item.gateway.toUpperCase(), item.name)}
163
- </OText>
164
- </PMItem>
165
- </TouchableOpacity>
152
+ <OIcon
153
+ src={getPayIcon(item.gateway)}
154
+ width={70}
155
+ height={70}
156
+ style={{ marginRight: 10 }}
157
+ />
158
+ </TouchableOpacity>
159
+ ) : (
160
+ <TouchableOpacity
161
+ onPress={() => handlePaymentMethodClick(item)}
162
+ >
163
+ {console.log(item?.gateway)}
164
+ <PMItem
165
+ key={item.id}
166
+ isDisabled={isDisabled}
167
+ isActive={paymethodSelected?.id === item.id}
168
+ >
169
+ <OIcon
170
+ src={getPayIcon(item.gateway)}
171
+ width={20}
172
+ height={20}
173
+ color={item?.gateway === 'apple_pay' ? '' : paymethodSelected?.id === item.id ? theme.colors.white : theme.colors.backgroundDark}
174
+ />
175
+ <OText
176
+ size={10}
177
+ style={{ margin: 0, marginTop: 4 }}
178
+ color={paymethodSelected?.id === item.id ? theme.colors.white : '#000'}
179
+ >
180
+ {t(item.gateway.toUpperCase(), item.name)}
181
+ </OText>
182
+ </PMItem>
183
+ </TouchableOpacity>
184
+ )}
185
+ </>
186
+
166
187
  )
167
188
  }
168
189
 
169
- const excludeIds: any = [32]; //exclude paypal & connect & redirect
190
+ const excludeIds: any = [32, 66]; //exclude paypal & connect & redirect
170
191
 
171
192
  return (
172
193
  <PMContainer>
@@ -214,7 +235,7 @@ const PaymentOptionsUI = (props: any) => {
214
235
 
215
236
  {paymethodSelected?.gateway === 'cash' && (
216
237
  <PaymentOptionCash
217
- orderTotal={cart.total}
238
+ orderTotal={cart.balance ?? cart.total}
218
239
  defaultValue={paymethodSelected?.data?.cash}
219
240
  onChangeData={handlePaymethodDataChange}
220
241
  setErrorCash={props.setErrorCash}
@@ -22,9 +22,8 @@ export const PhoneInputNumber = (props: PhoneInputParams) => {
22
22
  textStyle,
23
23
  flagStyle,
24
24
  noDropIcon,
25
- isDisabled,
26
- isStartValidation,
27
- changeCountry
25
+ isDisabled,
26
+ isStartValidation
28
27
  } = props
29
28
 
30
29
  const theme = useTheme();
@@ -59,7 +58,7 @@ export const PhoneInputNumber = (props: PhoneInputParams) => {
59
58
  }
60
59
 
61
60
  useEffect(() => {
62
- if ((defaultValue && userphoneNumber) || defaultValue === undefined || defaultValue === '') {
61
+ if ((defaultValue && userphoneNumber) || !defaultValue) {
63
62
  if (userphoneNumber) {
64
63
  const checkValid = phoneInput.current?.isValidNumber(userphoneNumber);
65
64
  const callingCode = phoneInput.current?.getCallingCode();
@@ -107,16 +106,11 @@ export const PhoneInputNumber = (props: PhoneInputParams) => {
107
106
  )}
108
107
  <PhoneInput
109
108
  ref={phoneInput}
110
- disabled={isDisabled}
109
+ disabled={isDisabled}
111
110
  defaultValue={userphoneNumber || defaultValue}
112
- defaultCode={defaultCode ?
113
- !isNaN(defaultCode)
114
- ? transformCountryCode(defaultCode)
115
- : defaultCode
116
- : configs?.default_country_code?.value}
111
+ defaultCode={defaultCode ? transformCountryCode(defaultCode) : configs?.default_country_code?.value}
117
112
  onChangeFormattedText={(text: string) => handleChangeNumber(text)}
118
113
  withDarkTheme
119
- onChangeCountry={(country) => changeCountry?.(country)}
120
114
  countryPickerProps={{ withAlphaFilter: true }}
121
115
  textContainerStyle={{ ...style.input, ...inputStyle ? inputStyle : {} }}
122
116
  textInputStyle={textStyle}