ordering-ui-react-native 0.14.36 → 0.14.38-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 (58) hide show
  1. package/package.json +2 -2
  2. package/src/components/BusinessItemAccordion/index.tsx +2 -2
  3. package/src/components/BusinessProductsListing/index.tsx +10 -26
  4. package/src/components/Cart/index.tsx +136 -62
  5. package/src/components/Cart/styles.tsx +7 -0
  6. package/src/components/Checkout/index.tsx +32 -168
  7. package/src/components/OrderDetails/index.tsx +102 -34
  8. package/src/components/OrderDetails/styles.tsx +7 -0
  9. package/src/components/OrderSummary/index.tsx +142 -58
  10. package/src/components/OrderSummary/styles.tsx +10 -2
  11. package/src/components/PaymentOptions/index.tsx +3 -1
  12. package/src/components/PaymentOptionsWebView/index.tsx +150 -0
  13. package/src/components/ProductForm/index.tsx +6 -8
  14. package/src/components/SingleProductCard/index.tsx +1 -1
  15. package/src/components/StripeElementsForm/index.tsx +28 -13
  16. package/src/components/TaxInformation/index.tsx +58 -26
  17. package/src/components/UpsellingProducts/index.tsx +13 -31
  18. package/src/components/VerifyPhone/styles.tsx +1 -2
  19. package/src/components/shared/OIcon.tsx +4 -1
  20. package/src/index.tsx +2 -0
  21. package/src/navigators/HomeNavigator.tsx +6 -0
  22. package/src/pages/ProductDetails.tsx +55 -0
  23. package/src/types/index.tsx +2 -0
  24. package/src/types/react-native-color-matrix-image-filters/index.d.ts +1 -0
  25. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  26. package/themes/kiosk/src/components/Cart/index.tsx +14 -21
  27. package/themes/kiosk/src/components/CartItem/index.tsx +9 -7
  28. package/themes/kiosk/src/components/CustomerName/index.tsx +2 -1
  29. package/themes/kiosk/src/components/Intro/index.tsx +4 -4
  30. package/themes/kiosk/src/components/OptionCard/index.tsx +11 -6
  31. package/themes/kiosk/src/components/PaymentOptions/index.tsx +46 -44
  32. package/themes/original/index.tsx +4 -0
  33. package/themes/original/src/components/BusinessItemAccordion/index.tsx +12 -9
  34. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -2
  35. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +35 -0
  36. package/themes/original/src/components/BusinessProductsListing/index.tsx +22 -49
  37. package/themes/original/src/components/BusinessesListing/index.tsx +100 -75
  38. package/themes/original/src/components/Cart/index.tsx +129 -52
  39. package/themes/original/src/components/Cart/styles.tsx +8 -1
  40. package/themes/original/src/components/Checkout/index.tsx +38 -2
  41. package/themes/original/src/components/Help/index.tsx +1 -1
  42. package/themes/original/src/components/Home/index.tsx +5 -3
  43. package/themes/original/src/components/MessageListing/index.tsx +4 -2
  44. package/themes/original/src/components/OrderDetails/index.tsx +117 -43
  45. package/themes/original/src/components/OrderDetails/styles.tsx +8 -1
  46. package/themes/original/src/components/OrderSummary/index.tsx +141 -51
  47. package/themes/original/src/components/OrderSummary/styles.tsx +7 -0
  48. package/themes/original/src/components/PaymentOptionWallet/index.tsx +6 -2
  49. package/themes/original/src/components/PaymentOptions/index.tsx +8 -2
  50. package/themes/original/src/components/ProductForm/index.tsx +67 -77
  51. package/themes/original/src/components/ProductForm/styles.tsx +9 -2
  52. package/themes/original/src/components/ProductOptionSubOption/index.tsx +3 -2
  53. package/themes/original/src/components/SingleProductCard/index.tsx +21 -11
  54. package/themes/original/src/components/SingleProductCard/styles.tsx +4 -0
  55. package/themes/original/src/components/StripeElementsForm/index.tsx +28 -13
  56. package/themes/original/src/components/TaxInformation/index.tsx +59 -27
  57. package/themes/original/src/components/UpsellingProducts/index.tsx +90 -84
  58. package/themes/original/src/types/index.tsx +6 -0
@@ -8,7 +8,7 @@ import {
8
8
  useValidationFields,
9
9
  } from 'ordering-components/native';
10
10
  import { useTheme } from 'styled-components/native';
11
- import { CContainer, CheckoutAction } from './styles';
11
+ import { CContainer, CheckoutAction, Divider } from './styles';
12
12
 
13
13
  import { OSBill, OSTable, OSCoupon, OSTotal, OSRow } from '../OrderSummary/styles';
14
14
 
@@ -17,13 +17,13 @@ import { BusinessItemAccordion } from '../BusinessItemAccordion';
17
17
  import { CouponControl } from '../CouponControl';
18
18
 
19
19
  import { OButton, OInput, OModal, OText } from '../shared';
20
- import { ProductForm } from '../ProductForm';
21
20
  import { UpsellingProducts } from '../UpsellingProducts';
22
21
  import { verifyDecimals } from '../../utils';
23
22
  import { ActivityIndicator, TouchableOpacity, View } from 'react-native';
24
23
  import AntIcon from 'react-native-vector-icons/AntDesign'
25
24
  import { TaxInformation } from '../TaxInformation';
26
25
  import { CartStoresListing } from '../CartStoresListing';
26
+ import { OAlert } from '../../../../../src/components/shared'
27
27
 
28
28
  const CartUI = (props: any) => {
29
29
  const {
@@ -35,10 +35,10 @@ const CartUI = (props: any) => {
35
35
  removeProduct,
36
36
  handleCartOpen,
37
37
  setIsCartsLoading,
38
- hideUpselling,
39
38
  handleChangeComment,
40
- commentState
41
- // isFromCart
39
+ commentState,
40
+ onNavigationRedirect,
41
+ handleRemoveOfferClick
42
42
  } = props
43
43
 
44
44
  const theme = useTheme();
@@ -49,12 +49,11 @@ const CartUI = (props: any) => {
49
49
  const [{ parsePrice, parseNumber, parseDate }] = useUtils()
50
50
  const [validationFields] = useValidationFields()
51
51
 
52
- const [openProduct, setModalIsOpen] = useState(false)
53
- const [curProduct, setCurProduct] = useState<any>(null)
54
52
  const [openUpselling, setOpenUpselling] = useState(false)
55
53
  const [openChangeStore, setOpenChangeStore] = useState(false)
56
54
  const [canOpenUpselling, setCanOpenUpselling] = useState(false)
57
- const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, data: null })
55
+ const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, data: null, type: '' })
56
+ const [confirm, setConfirm] = useState<any>({ open: false, content: null, handleOnAccept: null, id: null, title: null })
58
57
 
59
58
  const isCartPending = cart?.status === 2
60
59
  const isCouponEnabled = validationFields?.fields?.checkout?.coupon?.enabled
@@ -71,14 +70,14 @@ const CartUI = (props: any) => {
71
70
  }
72
71
 
73
72
  const handleEditProduct = (product: any) => {
74
- setCurProduct(product)
75
- setModalIsOpen(true)
76
- }
77
-
78
- const handlerProductAction = (product: any) => {
79
- if (Object.keys(product).length) {
80
- setModalIsOpen(false)
81
- }
73
+ onNavigationRedirect('ProductDetails', {
74
+ businessId,
75
+ isCartProduct: true,
76
+ productCart: product,
77
+ businessSlug: cart?.business?.slug,
78
+ categoryId: product?.category_id,
79
+ productId: product?.id,
80
+ })
82
81
  }
83
82
 
84
83
  const handleClearProducts = async () => {
@@ -113,6 +112,22 @@ const CartUI = (props: any) => {
113
112
  }
114
113
  }
115
114
 
115
+ const getIncludedTaxesDiscounts = () => {
116
+ return cart?.taxes?.filter((tax: any) => tax?.type === 1)?.reduce((carry: number, tax: any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
117
+ }
118
+
119
+ const onRemoveOffer = (id: number) => {
120
+ setConfirm({
121
+ open: true,
122
+ content: [t('QUESTION_DELETE_OFFER', 'Are you sure that you want to delete the offer?')],
123
+ title: t('OFFER', 'Offer'),
124
+ handleOnAccept: () => {
125
+ setConfirm({ ...confirm, open: false })
126
+ handleRemoveOfferClick(id)
127
+ }
128
+ })
129
+ }
130
+
116
131
  const walletName: any = {
117
132
  cash: {
118
133
  name: t('PAY_WITH_CASH_WALLET', 'Pay with Cash Wallet'),
@@ -170,7 +185,7 @@ const CartUI = (props: any) => {
170
185
  {parsePrice(cart?.subtotal + getIncludedTaxes())}
171
186
  </OText>
172
187
  </OSTable>
173
- {cart?.discount > 0 && cart?.total >= 0 && (
188
+ {cart?.discount > 0 && cart?.total >= 0 && cart?.offers?.length === 0 && (
174
189
  <OSTable>
175
190
  {cart?.discount_type === 1 ? (
176
191
  <OText size={12} lineHeight={18}>
@@ -183,19 +198,51 @@ const CartUI = (props: any) => {
183
198
  <OText size={12} lineHeight={18}>- {parsePrice(cart?.discount || 0)}</OText>
184
199
  </OSTable>
185
200
  )}
201
+ {
202
+ cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 1)?.map((offer: any) => (
203
+ <OSTable key={offer.id}>
204
+ <OSRow>
205
+ <OText size={12} lineHeight={18}>{offer.name}</OText>
206
+ {offer.rate_type === 1 && (
207
+ <OText size={12} lineHeight={18}>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
208
+ )}
209
+ <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_1' })}>
210
+ <AntIcon name='exclamationcircleo' size={18} color={theme.colors.primary} />
211
+ </TouchableOpacity>
212
+ <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => onRemoveOffer(offer?.id)}>
213
+ <AntIcon name='closecircle' size={18} color={theme.colors.primary} />
214
+ </TouchableOpacity>
215
+ </OSRow>
216
+ <OText size={12} lineHeight={18}>
217
+ - {parsePrice(offer?.summary?.discount)}
218
+ </OText>
219
+ </OSTable>
220
+ ))
221
+ }
222
+ <Divider />
223
+ {cart?.subtotal_with_discount > 0 && cart?.discount > 0 && cart?.total >= 0 && (
224
+ <OSTable>
225
+ <OText size={12} lineHeight={18} numberOfLines={1}>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
226
+ {cart?.business?.tax_type === 1 ? (
227
+ <OText size={12} lineHeight={18}>{parsePrice(cart?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0)}</OText>
228
+ ) : (
229
+ <OText size={12} lineHeight={18}>{parsePrice(cart?.subtotal_with_discount ?? 0)}</OText>
230
+ )}
231
+ </OSTable>
232
+ )}
186
233
  {
187
234
  cart.taxes?.length > 0 && cart.taxes.filter((tax: any) => tax.type === 2 && tax?.rate !== 0).map((tax: any) => (
188
235
  <OSTable key={tax.id}>
189
236
  <OSRow>
190
- <OText numberOfLines={1} >
237
+ <OText size={12} lineHeight={18} numberOfLines={1} >
191
238
  {tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}{' '}
192
239
  {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
193
240
  </OText>
194
- <TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: tax })} >
241
+ <TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: tax, type: 'tax' })} >
195
242
  <AntIcon name='exclamationcircleo' size={18} color={theme.colors.primary} />
196
243
  </TouchableOpacity>
197
244
  </OSRow>
198
- <OText>{parsePrice(tax?.summary?.tax || 0)}</OText>
245
+ <OText size={12} lineHeight={18}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
199
246
  </OSTable>
200
247
  ))
201
248
  }
@@ -203,33 +250,66 @@ const CartUI = (props: any) => {
203
250
  cart?.fees?.length > 0 && cart?.fees?.filter((fee: any) => !(fee.fixed === 0 && fee.percentage === 0)).map((fee: any) => (
204
251
  <OSTable key={fee?.id}>
205
252
  <OSRow>
206
- <OText numberOfLines={1} size={12} lineHeight={18}>
253
+ <OText size={12} lineHeight={18} numberOfLines={1}>
207
254
  {fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}{' '}
208
255
  ({parsePrice(fee?.fixed)} + {fee?.percentage}%){' '}
209
256
  </OText>
210
- <TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: fee })} >
257
+ <TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: fee, type: 'fee' })} >
211
258
  <AntIcon name='exclamationcircleo' size={18} color={theme.colors.primary} />
212
259
  </TouchableOpacity>
213
260
  </OSRow>
214
- <OText>{parsePrice(fee?.summary?.fixed + fee?.summary?.percentage || 0)}</OText>
261
+ <OText size={12} lineHeight={18}>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0)}</OText>
262
+ </OSTable>
263
+ ))
264
+ }
265
+ {
266
+ cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 3)?.map((offer: any) => (
267
+ <OSTable key={offer.id}>
268
+ <OSRow>
269
+ <OText size={12} lineHeight={18}>{offer.name}</OText>
270
+ {offer.rate_type === 1 && (
271
+ <OText size={12} lineHeight={18}>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
272
+ )}
273
+ <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_3' })}>
274
+ <AntIcon name='exclamationcircleo' size={18} color={theme.colors.primary} />
275
+ </TouchableOpacity>
276
+ <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => onRemoveOffer(offer?.id)}>
277
+ <AntIcon name='closecircle' size={18} color={theme.colors.primary} />
278
+ </TouchableOpacity>
279
+ </OSRow>
280
+ <OText size={12} lineHeight={18}>
281
+ - {parsePrice(offer?.summary?.discount)}
282
+ </OText>
215
283
  </OSTable>
216
284
  ))
217
285
  }
218
- {cart?.service_fee > 0 && !cart?.fees?.length && (
219
- <OSTable>
220
- <OText size={12} lineHeight={18}>
221
- {t('SERVICE_FEE', 'Service Fee')}
222
- {`(${verifyDecimals(cart?.business?.service_fee, parseNumber)}%)`}
223
- </OText>
224
- <OText size={12} lineHeight={18}>{parsePrice(cart?.service_fee)}</OText>
225
- </OSTable>
226
- )}
227
286
  {orderState?.options?.type === 1 && cart?.delivery_price > 0 && (
228
287
  <OSTable>
229
288
  <OText size={12} lineHeight={18}>{t('DELIVERY_FEE', 'Delivery Fee')}</OText>
230
289
  <OText size={12} lineHeight={18}>{parsePrice(cart?.delivery_price)}</OText>
231
290
  </OSTable>
232
291
  )}
292
+ {
293
+ cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
294
+ <OSTable key={offer.id}>
295
+ <OSRow>
296
+ <OText size={12} lineHeight={18}>{offer.name}</OText>
297
+ {offer.rate_type === 1 && (
298
+ <OText size={12} lineHeight={18}>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
299
+ )}
300
+ <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_2' })}>
301
+ <AntIcon name='exclamationcircleo' size={18} color={theme.colors.primary} />
302
+ </TouchableOpacity>
303
+ <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => onRemoveOffer(offer?.id)}>
304
+ <AntIcon name='closecircle' size={18} color={theme.colors.primary} />
305
+ </TouchableOpacity>
306
+ </OSRow>
307
+ <OText size={12} lineHeight={18}>
308
+ - {parsePrice(offer?.summary?.discount)}
309
+ </OText>
310
+ </OSTable>
311
+ ))
312
+ }
233
313
  {cart?.driver_tip > 0 && (
234
314
  <OSTable>
235
315
  <OText size={12} lineHeight={18}>
@@ -269,7 +349,7 @@ const CartUI = (props: any) => {
269
349
  {t('TOTAL', 'Total')}
270
350
  </OText>
271
351
  <OText size={14} lineHeight={21} weight={'600'}>
272
- {parsePrice(cart?.balance ?? cart?.total)}
352
+ {parsePrice(cart?.total >= 0 ? cart?.total : 0)}
273
353
  </OText>
274
354
  </OSTable>
275
355
  </OSTotal>
@@ -329,23 +409,6 @@ const CartUI = (props: any) => {
329
409
  </CheckoutAction>
330
410
  )}
331
411
  </BusinessItemAccordion>
332
- <OModal
333
- open={openProduct}
334
- entireModal
335
- customClose
336
- onClose={() => setModalIsOpen(false)}
337
- >
338
- <ProductForm
339
- isCartProduct
340
- productCart={curProduct}
341
- businessSlug={cart?.business?.slug}
342
- businessId={businessId}
343
- categoryId={curProduct?.category_id}
344
- productId={curProduct?.id}
345
- onSave={handlerProductAction}
346
- onClose={() => setModalIsOpen(false)}
347
- />
348
- </OModal>
349
412
 
350
413
  <OModal
351
414
  open={openChangeStore && props.isFranchiseApp}
@@ -360,11 +423,25 @@ const CartUI = (props: any) => {
360
423
  </OModal>
361
424
  <OModal
362
425
  open={openTaxModal.open}
363
- onClose={() => setOpenTaxModal({ open: false, data: null })}
426
+ onClose={() => setOpenTaxModal({ open: false, data: null, type: '' })}
364
427
  entireModal
428
+ title={`${openTaxModal.data?.name ||
429
+ t('INHERIT_FROM_BUSINESS', 'Inherit from business')} ${openTaxModal.data?.rate_type !== 2 ? `(${typeof openTaxModal.data?.rate === 'number' ? `${openTaxModal.data?.rate}%` : `${parsePrice(openTaxModal.data?.fixed ?? 0)} + ${openTaxModal.data?.percentage}%`})` : ''} `}
365
430
  >
366
- <TaxInformation data={openTaxModal.data} products={cart.products} />
431
+ <TaxInformation
432
+ type={openTaxModal.type}
433
+ data={openTaxModal.data}
434
+ products={cart?.products}
435
+ />
367
436
  </OModal>
437
+ <OAlert
438
+ open={confirm.open}
439
+ title={confirm.title}
440
+ content={confirm.content}
441
+ onAccept={confirm.handleOnAccept}
442
+ onCancel={() => setConfirm({ ...confirm, open: false, title: null })}
443
+ onClose={() => setConfirm({ ...confirm, open: false, title: null })}
444
+ />
368
445
  </CContainer>
369
446
  )
370
447
  }
@@ -1,4 +1,4 @@
1
- import styled, { css } from 'styled-components/native';
1
+ import styled from 'styled-components/native';
2
2
 
3
3
  export const CContainer = styled.View`
4
4
  /* border-bottom: 1px solid #F0F0F0; */
@@ -26,3 +26,10 @@ export const CheckoutAction = styled.View`
26
26
  margin-top: 10px;
27
27
  margin-bottom: 10px;
28
28
  `
29
+
30
+ export const Divider = styled.View`
31
+ border-color: #EAEAEA;
32
+ border-width: 1px;
33
+ margin-top: 5px;
34
+ margin-bottom: 10px;
35
+ `
@@ -49,6 +49,7 @@ import NavBar from '../NavBar';
49
49
  import { OrderSummary } from '../OrderSummary';
50
50
  import { getTypesText } from '../../utils';
51
51
  import { CartStoresListing } from '../CartStoresListing';
52
+ import { PaymentOptionsWebView } from '../../../../../src/components/PaymentOptionsWebView';
52
53
 
53
54
  const mapConfigs = {
54
55
  mapZoom: 16,
@@ -83,6 +84,7 @@ const CheckoutUI = (props: any) => {
83
84
  deliveryOptionSelected,
84
85
  instructionsOptions,
85
86
  handleChangeDeliveryOption,
87
+ currency
86
88
  } = props
87
89
 
88
90
  const theme = useTheme();
@@ -114,10 +116,11 @@ const CheckoutUI = (props: any) => {
114
116
 
115
117
  const [, { showToast }] = useToast();
116
118
  const [, t] = useLanguage();
117
- const [{ user }] = useSession();
119
+ const [{ user, token }] = useSession();
120
+ const [ordering] = useApi()
118
121
  const [{ configs }] = useConfig();
119
122
  const [{ parsePrice, parseDate }] = useUtils();
120
- const [{ options, carts, loading }] = useOrder();
123
+ const [{ options, carts, loading }, { confirmCart }] = useOrder();
121
124
  const [validationFields] = useValidationFields();
122
125
 
123
126
  const [errorCash, setErrorCash] = useState(false);
@@ -126,6 +129,10 @@ const CheckoutUI = (props: any) => {
126
129
  const [phoneUpdate, setPhoneUpdate] = useState(false);
127
130
  const [openChangeStore, setOpenChangeStore] = useState(false)
128
131
  const [isDeliveryOptionModalVisible, setIsDeliveryOptionModalVisible] = useState(false)
132
+ const [showGateway, setShowGateway] = useState<any>({ closedByUsed: false, open: false });
133
+ const [webviewPaymethod, setWebviewPaymethod] = useState<any>(null)
134
+
135
+ const isWalletEnabled = configs?.wallet_enabled?.value === '1' && (configs?.wallet_cash_enabled?.value === '1' || configs?.wallet_credit_point_enabled?.value === '1')
129
136
 
130
137
  const driverTipsOptions = typeof configs?.driver_tip_options?.value === 'string'
131
138
  ? JSON.parse(configs?.driver_tip_options?.value) || []
@@ -154,6 +161,16 @@ const CheckoutUI = (props: any) => {
154
161
  setIsUserDetailsEdit(true)
155
162
  }
156
163
 
164
+ const handlePaymentMethodClick = (paymethod: any) => {
165
+ setShowGateway({ closedByUser: false, open: true })
166
+ setWebviewPaymethod(paymethod)
167
+ }
168
+
169
+ const onFailPaypal = async () => {
170
+ if (showGateway.closedByUser === true) {
171
+ await confirmCart(cart.uuid)
172
+ }
173
+ }
157
174
  const changeDeliveryOption = (option: any) => {
158
175
  handleChangeDeliveryOption(option)
159
176
  setIsDeliveryOptionModalVisible(false)
@@ -214,6 +231,10 @@ const CheckoutUI = (props: any) => {
214
231
  }
215
232
  }, [cart?.products])
216
233
 
234
+ useEffect(() => {
235
+ onFailPaypal()
236
+ }, [showGateway.closedByUser])
237
+
217
238
  return (
218
239
  <>
219
240
  <Container noPadding>
@@ -501,6 +522,7 @@ const CheckoutUI = (props: any) => {
501
522
  setErrorCash={setErrorCash}
502
523
  onNavigationRedirect={onNavigationRedirect}
503
524
  paySelected={paymethodSelected}
525
+ handlePaymentMethodClickCustom={handlePaymentMethodClick}
504
526
  />
505
527
  </ChPaymethods>
506
528
  </ChSection>
@@ -510,6 +532,7 @@ const CheckoutUI = (props: any) => {
510
532
  <WalletPaymentOptionContainer>
511
533
  <PaymentOptionWallet
512
534
  cart={cart}
535
+ businessId={cart?.business_id}
513
536
  />
514
537
  </WalletPaymentOptionContainer>
515
538
  )}
@@ -546,6 +569,7 @@ const CheckoutUI = (props: any) => {
546
569
  <OrderSummary
547
570
  cart={cart}
548
571
  isCartPending={cart?.status === 2}
572
+ onNavigationRedirect={onNavigationRedirect}
549
573
  />
550
574
  </>
551
575
  )}
@@ -618,6 +642,18 @@ const CheckoutUI = (props: any) => {
618
642
  iosBottom={20}
619
643
  />
620
644
  )}
645
+ {webviewPaymethod?.gateway === 'paypal' && showGateway.open && (
646
+ <PaymentOptionsWebView
647
+ onNavigationRedirect={onNavigationRedirect}
648
+ uri={`${ordering.root}/html/paypal_react_native`}
649
+ user={user}
650
+ token={token}
651
+ cart={cart}
652
+ currency={currency}
653
+ webviewPaymethod={webviewPaymethod}
654
+ setShowGateway={setShowGateway}
655
+ />
656
+ )}
621
657
  </>
622
658
  )
623
659
  }
@@ -48,7 +48,7 @@ export const Help = (props: HelpParams) => {
48
48
 
49
49
  <LastOrdersContainer>
50
50
  <OText size={18} weight={600}>{t('LAST_ORDERS', 'Last Orders')}</OText>
51
- <LastOrders businessId={props.businessId} onRedirect={onRedirect} />
51
+ <LastOrders {...props} onRedirect={onRedirect} />
52
52
  </LastOrdersContainer>
53
53
  </>
54
54
  )
@@ -5,11 +5,11 @@ import { StyleSheet, View } from 'react-native';
5
5
  import { OButton, OIcon, OText } from '../shared';
6
6
  import { LanguageSelector } from '../LanguageSelector';
7
7
  import { TouchableOpacity } from 'react-native-gesture-handler';
8
- import { useWindowDimensions } from 'react-native';
8
+ import { useWindowDimensions, Platform } from 'react-native';
9
9
 
10
10
  export const Home = (props: any) => {
11
11
  const { onNavigationRedirect } = props;
12
- const { width } = useWindowDimensions();
12
+ const { width, height } = useWindowDimensions();
13
13
  const [, t] = useLanguage();
14
14
  const [orderState] = useOrder();
15
15
 
@@ -18,7 +18,9 @@ export const Home = (props: any) => {
18
18
  return (
19
19
  <View style={styles.container}>
20
20
  <View>
21
- <LanguageSelector />
21
+ <View style={{paddingTop: (height <= 756 && Platform.OS !== 'ios') ? (height * 0.05) : 0 }}>
22
+ <LanguageSelector />
23
+ </View>
22
24
  <OIcon
23
25
  src={theme.images.logos.logotypeInvert}
24
26
  style={{
@@ -1,5 +1,5 @@
1
1
  import React, { useState, useEffect } from 'react'
2
- import { useLanguage, useOrder, ToastType, useToast, OrderList, OrderDetails as OrderDetailsConTableoller } from 'ordering-components/native'
2
+ import { useLanguage, useOrder, ToastType, useToast, OrderList, OrderDetails as OrderDetailsConTableoller, useBusiness } from 'ordering-components/native'
3
3
  import { useTheme } from 'styled-components/native';
4
4
  import { useFocusEffect } from '@react-navigation/native'
5
5
  import { OText, OModal } from '../shared'
@@ -214,6 +214,7 @@ const OrderMessageUI = (props: any) => {
214
214
  }
215
215
 
216
216
  export const OrderListing = (props: OrdersOptionParams) => {
217
+ const [businessState] = useBusiness();
217
218
  const OrderListingProps = {
218
219
  ...props,
219
220
  UIComponent: OrdersOptionUI,
@@ -224,6 +225,7 @@ export const OrderListing = (props: OrdersOptionParams) => {
224
225
  pageSize: 10,
225
226
  controlType: 'infinity'
226
227
  },
228
+ businessId: businessState?.business?.id,
227
229
  profileMessages: true,
228
230
  orderBy: 'last_direct_message_at',
229
231
  orderDirection: 'asc'
@@ -287,6 +289,7 @@ export const MessageListing = (props: MessageListingParams) => {
287
289
  setSelectedOrderId={setSelectedOrderId}
288
290
  setOrderList={setOrderListStatus}
289
291
  setOpenMessges={setOpenMessges}
292
+ franchiseId={props.franchiseId}
290
293
  />
291
294
  {openMessages && seletedOrder && (
292
295
  <OModal
@@ -304,4 +307,3 @@ export const MessageListing = (props: MessageListingParams) => {
304
307
  </MessageListingWrapper>
305
308
  )
306
309
  }
307
-