ordering-ui-react-native 0.14.33 → 0.14.34-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 (59) 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 +10 -6
  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/ProductForm/index.tsx +47 -10
  12. package/src/components/ProductForm/styles.tsx +1 -1
  13. package/src/components/SingleProductCard/index.tsx +1 -1
  14. package/src/components/StripeElementsForm/index.tsx +28 -13
  15. package/src/components/TaxInformation/index.tsx +58 -26
  16. package/src/components/UpsellingProducts/index.tsx +13 -31
  17. package/src/components/VerifyPhone/styles.tsx +1 -2
  18. package/src/navigators/HomeNavigator.tsx +6 -0
  19. package/src/pages/ProductDetails.tsx +55 -0
  20. package/src/types/index.tsx +2 -0
  21. package/src/types/react-native-color-matrix-image-filters/index.d.ts +1 -0
  22. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  23. package/themes/doordash/src/components/ProductForm/index.tsx +41 -2
  24. package/themes/doordash/src/components/ProductForm/styles.tsx +1 -1
  25. package/themes/instacart/src/components/ProductForm/index.tsx +40 -1
  26. package/themes/instacart/src/components/ProductForm/styles.tsx +1 -1
  27. package/themes/kiosk/src/components/Cart/index.tsx +14 -21
  28. package/themes/kiosk/src/components/CartItem/index.tsx +9 -7
  29. package/themes/kiosk/src/components/CustomerName/index.tsx +2 -1
  30. package/themes/kiosk/src/components/Intro/index.tsx +4 -4
  31. package/themes/kiosk/src/components/OptionCard/index.tsx +11 -6
  32. package/themes/kiosk/src/components/PaymentOptions/index.tsx +46 -44
  33. package/themes/original/index.tsx +4 -0
  34. package/themes/original/src/components/BusinessItemAccordion/index.tsx +12 -9
  35. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -2
  36. package/themes/original/src/components/BusinessPreorder/index.tsx +37 -35
  37. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +35 -0
  38. package/themes/original/src/components/BusinessProductsListing/index.tsx +22 -49
  39. package/themes/original/src/components/BusinessesListing/index.tsx +100 -75
  40. package/themes/original/src/components/Cart/index.tsx +10 -31
  41. package/themes/original/src/components/Checkout/index.tsx +2 -0
  42. package/themes/original/src/components/Checkout/styles.tsx +1 -0
  43. package/themes/original/src/components/FacebookLogin/index.tsx +20 -5
  44. package/themes/original/src/components/Help/index.tsx +1 -1
  45. package/themes/original/src/components/Home/index.tsx +5 -3
  46. package/themes/original/src/components/LoginForm/index.tsx +50 -49
  47. package/themes/original/src/components/MessageListing/index.tsx +4 -2
  48. package/themes/original/src/components/OrderDetails/index.tsx +3 -1
  49. package/themes/original/src/components/OrderSummary/index.tsx +11 -30
  50. package/themes/original/src/components/PaymentOptionWallet/index.tsx +10 -6
  51. package/themes/original/src/components/PaymentOptionWallet/styles.tsx +1 -0
  52. package/themes/original/src/components/ProductForm/index.tsx +104 -75
  53. package/themes/original/src/components/ProductForm/styles.tsx +10 -3
  54. package/themes/original/src/components/SingleProductCard/index.tsx +21 -11
  55. package/themes/original/src/components/SingleProductCard/styles.tsx +4 -0
  56. package/themes/original/src/components/StripeElementsForm/index.tsx +28 -13
  57. package/themes/original/src/components/UpsellingProducts/index.tsx +85 -83
  58. package/themes/original/src/types/index.tsx +6 -0
  59. package/themes/uber-eats/src/components/ProductForm/index.tsx +43 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ordering-ui-react-native",
3
- "version": "0.14.33",
3
+ "version": "0.14.34-release",
4
4
  "description": "Reusable components made in react native",
5
5
  "main": "src/index.tsx",
6
6
  "author": "ordering.inc",
@@ -55,7 +55,7 @@
55
55
  "@types/styled-components": "^5.1.3",
56
56
  "axios": "^0.21.0",
57
57
  "moment": "^2.29.1",
58
- "ordering-components": "github:Ordering-Inc/ordering-components#development",
58
+ "ordering-components": "github:Ordering-Inc/ordering-components#release",
59
59
  "patch-package": "^6.4.7",
60
60
  "postinstall-postinstall": "^2.1.0",
61
61
  "prop-types": "^15.7.2",
@@ -80,9 +80,9 @@ export const BusinessItemAccordion = (props: any) => {
80
80
  </BIContentInfo>
81
81
  </BIInfo>
82
82
 
83
- {!isClosed && !!isProducts && cart?.valid_products && cart?.total > 0 && (
83
+ {!isClosed && !!isProducts && cart?.valid_products && (
84
84
  <BITotal>
85
- <OText color='#000'>{parsePrice(cart?.total)}</OText>
85
+ <OText color='#000'>{parsePrice(cart?.total >= 0 ? cart?.total : 0)}</OText>
86
86
  <OText>{t('CART_TOTAL', 'Total')}</OText>
87
87
  </BITotal>
88
88
  )}
@@ -10,7 +10,7 @@ import {
10
10
  useToast,
11
11
  ToastType
12
12
  } from 'ordering-components/native'
13
- import { OButton, OModal, OText } from '../shared'
13
+ import { OButton, OText } from '../shared'
14
14
  import { BusinessBasicInformation } from '../BusinessBasicInformation'
15
15
  import { SearchBar } from '../SearchBar'
16
16
  import { BusinessProductsCategories } from '../BusinessProductsCategories'
@@ -45,7 +45,6 @@ const BusinessProductsListingUI = (props: BusinessProductsListingParams) => {
45
45
  errorQuantityProducts,
46
46
  header,
47
47
  logo,
48
- productModal,
49
48
  businessId,
50
49
  categoryId,
51
50
  productId,
@@ -75,7 +74,13 @@ const BusinessProductsListingUI = (props: BusinessProductsListingParams) => {
75
74
  }
76
75
 
77
76
  const onProductClick = (product: any) => {
78
- setCurProduct(product)
77
+ onRedirect('ProductDetails', {
78
+ product: product,
79
+ businessSlug: business.slug,
80
+ businessId: business.id,
81
+ categoryId: categoryId,
82
+ productId: productId,
83
+ })
79
84
  }
80
85
 
81
86
  const handleCancel = () => {
@@ -89,10 +94,6 @@ const BusinessProductsListingUI = (props: BusinessProductsListingParams) => {
89
94
  updateProductModal && updateProductModal(null)
90
95
  }
91
96
 
92
- const handlerProductAction = () => {
93
- handleCloseProductModal()
94
- }
95
-
96
97
  const handleUpsellingPage = () => {
97
98
  onRedirect('CheckoutNavigator', {
98
99
  screen: 'CheckoutPage',
@@ -258,27 +259,9 @@ const BusinessProductsListingUI = (props: BusinessProductsListingParams) => {
258
259
  handleClick={() => setOpenUpselling(true)}
259
260
  />
260
261
  )}
261
- <OModal
262
- open={openModalProduct || !!curProduct || (!!productModal.product && !orderState.loading)}
263
- onClose={handleCloseProductModal}
264
- entireModal
265
- customClose
266
- isAvoidKeyBoardView
267
- >
268
- <ProductForm
269
- product={curProduct || productModal.product}
270
- businessSlug={business?.slug}
271
- businessId={businessId || business?.id || productModal?.product?.category?.business_id}
272
- onClose={handleCloseProductModal}
273
- navigation={navigation}
274
- onSave={handlerProductAction}
275
- setProductLogin={setProductLogin}
276
- categoryId={categoryId}
277
- productId={productId}
278
- />
279
- </OModal>
280
262
  {openUpselling && (
281
263
  <UpsellingProducts
264
+ setOpenUpselling={setOpenUpselling}
282
265
  businessId={currentCart?.business_id}
283
266
  business={currentCart?.business}
284
267
  cartProducts={currentCart?.products}
@@ -286,6 +269,7 @@ const BusinessProductsListingUI = (props: BusinessProductsListingParams) => {
286
269
  openUpselling={openUpselling}
287
270
  canOpenUpselling={canOpenUpselling}
288
271
  setCanOpenUpselling={setCanOpenUpselling}
272
+ onRedirect={onRedirect}
289
273
  />
290
274
  )}
291
275
  </>
@@ -8,7 +8,7 @@ import {
8
8
  useValidationFields,
9
9
  } from 'ordering-components/native';
10
10
 
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
 
@@ -16,8 +16,7 @@ import { ProductItemAccordion } from '../ProductItemAccordion';
16
16
  import { BusinessItemAccordion } from '../BusinessItemAccordion';
17
17
  import { CouponControl } from '../CouponControl';
18
18
 
19
- import { OButton, OModal, OText, OInput } from '../shared';
20
- import { ProductForm } from '../ProductForm';
19
+ import { OButton, OModal, OText, OInput, OAlert } from '../shared';
21
20
  import { UpsellingProducts } from '../UpsellingProducts';
22
21
  import { verifyDecimals } from '../../utils';
23
22
  import { useTheme } from 'styled-components/native';
@@ -36,7 +35,8 @@ const CartUI = (props: any) => {
36
35
  handleCartOpen,
37
36
  setIsCartsLoading,
38
37
  handleChangeComment,
39
- commentState
38
+ commentState,
39
+ handleRemoveOfferClick
40
40
  } = props
41
41
 
42
42
  const theme = useTheme()
@@ -46,11 +46,10 @@ const CartUI = (props: any) => {
46
46
  const [{ parsePrice, parseNumber, parseDate }] = useUtils()
47
47
  const [validationFields] = useValidationFields()
48
48
 
49
- const [openProduct, setModalIsOpen] = useState(false)
50
- const [curProduct, setCurProduct] = useState<any>(null)
51
49
  const [openUpselling, setOpenUpselling] = useState(false)
52
50
  const [canOpenUpselling, setCanOpenUpselling] = useState(false)
53
51
  const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, data: null })
52
+ const [confirm, setConfirm] = useState<any>({ open: false, content: null, handleOnAccept: null, id: null, title: null })
54
53
 
55
54
  const isCartPending = cart?.status === 2
56
55
  const isCouponEnabled = validationFields?.fields?.checkout?.coupon?.enabled
@@ -64,14 +63,15 @@ const CartUI = (props: any) => {
64
63
  }
65
64
 
66
65
  const handleEditProduct = (product: any) => {
67
- setCurProduct(product)
68
- setModalIsOpen(true)
69
- }
70
-
71
- const handlerProductAction = (product: any) => {
72
- if (Object.keys(product).length) {
73
- setModalIsOpen(false)
74
- }
66
+ props?.onNavigationRedirect &&
67
+ props?.onNavigationRedirect('ProductDetails', {
68
+ businessId: cart?.business_id,
69
+ isCartProduct: true,
70
+ productCart: product,
71
+ businessSlug: cart?.business?.slug,
72
+ categoryId: product?.category_id,
73
+ productId: product?.id,
74
+ })
75
75
  }
76
76
 
77
77
  const handleClearProducts = async () => {
@@ -106,6 +106,22 @@ const CartUI = (props: any) => {
106
106
  }
107
107
  }
108
108
 
109
+ const getIncludedTaxesDiscounts = () => {
110
+ return cart?.taxes?.filter((tax : any) => tax?.type === 1)?.reduce((carry : number, tax : any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
111
+ }
112
+
113
+ const onRemoveOffer = (id: number) => {
114
+ setConfirm({
115
+ open: true,
116
+ content: [t('QUESTION_DELETE_OFFER', 'Are you sure that you want to delete the offer?')],
117
+ title: t('OFFER', 'Offer'),
118
+ handleOnAccept: () => {
119
+ setConfirm({ ...confirm, open: false })
120
+ handleRemoveOfferClick(id)
121
+ }
122
+ })
123
+ }
124
+
109
125
  return (
110
126
  <CContainer>
111
127
  <BusinessItemAccordion
@@ -137,11 +153,11 @@ const CartUI = (props: any) => {
137
153
  {parsePrice(cart?.subtotal + getIncludedTaxes())}
138
154
  </OText>
139
155
  </OSTable>
140
- {cart?.discount > 0 && cart?.total >= 0 && (
156
+ {cart?.discount > 0 && cart?.total >= 0 && cart?.offers?.length === 0 && (
141
157
  <OSTable>
142
158
  {cart?.discount_type === 1 ? (
143
159
  <OText>
144
- {t('DISCOUNT', 'Discount')}
160
+ {t('DISCOUNT', 'Discount')}{' '}
145
161
  <OText>{`(${verifyDecimals(cart?.discount_rate, parsePrice)}%)`}</OText>
146
162
  </OText>
147
163
  ) : (
@@ -150,18 +166,35 @@ const CartUI = (props: any) => {
150
166
  <OText>- {parsePrice(cart?.discount || 0)}</OText>
151
167
  </OSTable>
152
168
  )}
169
+ {
170
+ cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 1)?.map((offer: any) => (
171
+ <OSTable key={offer.id}>
172
+ <OSRow>
173
+ <OText>{offer.name}</OText>
174
+ {offer.rate_type === 1 && (
175
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
176
+ )}
177
+ <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_1' })}>
178
+ <AntIcon name='exclamationcircleo' size={18} color={theme.colors.primary} />
179
+ </TouchableOpacity>
180
+ <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => onRemoveOffer(offer?.id)}>
181
+ <AntIcon name='closecircle' size={18} color={theme.colors.primary} />
182
+ </TouchableOpacity>
183
+ </OSRow>
184
+ <OText>
185
+ - {parsePrice(offer?.summary?.discount)}
186
+ </OText>
187
+ </OSTable>
188
+ ))
189
+ }
190
+ <Divider />
153
191
  {cart?.subtotal_with_discount > 0 && cart?.discount > 0 && cart?.total >= 0 && (
154
192
  <OSTable>
155
- {cart?.discount_type === 1 ? (
156
- <>
157
- <OText>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
158
- <OText>{parsePrice(cart?.subtotal_with_discount + cart?.tax || 0)}</OText>
159
- </>
193
+ <OText numberOfLines={1}>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
194
+ {cart?.business?.tax_type === 1 ? (
195
+ <OText>{parsePrice(cart?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0)}</OText>
160
196
  ) : (
161
- <>
162
- <OText>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
163
- <OText>{parsePrice(cart?.subtotal_with_discount || 0)}</OText>
164
- </>
197
+ <OText>{parsePrice(cart?.subtotal_with_discount ?? 0)}</OText>
165
198
  )}
166
199
  </OSTable>
167
200
  )}
@@ -173,11 +206,11 @@ const CartUI = (props: any) => {
173
206
  {tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}{' '}
174
207
  {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
175
208
  </OText>
176
- <TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: tax })} >
209
+ <TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: tax, type: 'tax' })} >
177
210
  <AntIcon name='exclamationcircleo' size={18} color={theme.colors.primary} />
178
211
  </TouchableOpacity>
179
212
  </OSRow>
180
- <OText>{parsePrice(tax?.summary?.tax || 0)}</OText>
213
+ <OText>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
181
214
  </OSTable>
182
215
  ))
183
216
  }
@@ -189,11 +222,32 @@ const CartUI = (props: any) => {
189
222
  {fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}{' '}
190
223
  ({parsePrice(fee?.fixed)} + {fee?.percentage}%){' '}
191
224
  </OText>
192
- <TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: fee })} >
225
+ <TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: fee, type: 'fee' })} >
226
+ <AntIcon name='exclamationcircleo' size={18} color={theme.colors.primary} />
227
+ </TouchableOpacity>
228
+ </OSRow>
229
+ <OText>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0)}</OText>
230
+ </OSTable>
231
+ ))
232
+ }
233
+ {
234
+ cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 3)?.map((offer: any) => (
235
+ <OSTable key={offer.id}>
236
+ <OSRow>
237
+ <OText>{offer.name}</OText>
238
+ {offer.rate_type === 1 && (
239
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
240
+ )}
241
+ <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_3' })}>
193
242
  <AntIcon name='exclamationcircleo' size={18} color={theme.colors.primary} />
194
243
  </TouchableOpacity>
244
+ <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => onRemoveOffer(offer?.id)}>
245
+ <AntIcon name='closecircle' size={18} color={theme.colors.primary} />
246
+ </TouchableOpacity>
195
247
  </OSRow>
196
- <OText>{parsePrice(fee?.summary?.fixed + fee?.summary?.percentage || 0)}</OText>
248
+ <OText>
249
+ - {parsePrice(offer?.summary?.discount)}
250
+ </OText>
197
251
  </OSTable>
198
252
  ))
199
253
  }
@@ -203,6 +257,27 @@ const CartUI = (props: any) => {
203
257
  <OText>{parsePrice(cart?.delivery_price)}</OText>
204
258
  </OSTable>
205
259
  )}
260
+ {
261
+ cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
262
+ <OSTable key={offer.id}>
263
+ <OSRow>
264
+ <OText>{offer.name}</OText>
265
+ {offer.rate_type === 1 && (
266
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
267
+ )}
268
+ <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_2' })}>
269
+ <AntIcon name='exclamationcircleo' size={18} color={theme.colors.primary} />
270
+ </TouchableOpacity>
271
+ <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => onRemoveOffer(offer?.id)}>
272
+ <AntIcon name='closecircle' size={18} color={theme.colors.primary} />
273
+ </TouchableOpacity>
274
+ </OSRow>
275
+ <OText>
276
+ - {parsePrice(offer?.summary?.discount)}
277
+ </OText>
278
+ </OSTable>
279
+ ))
280
+ }
206
281
  {cart?.driver_tip > 0 && (
207
282
  <OSTable>
208
283
  <OText>
@@ -233,7 +308,7 @@ const CartUI = (props: any) => {
233
308
  {t('TOTAL', 'Total')}
234
309
  </OText>
235
310
  <OText style={{ fontWeight: 'bold' }} color={theme.colors.primary}>
236
- {cart?.total >= 1 && parsePrice(cart?.total)}
311
+ {parsePrice(cart?.total >= 0 ? cart?.total : 0)}
237
312
  </OText>
238
313
  </OSTable>
239
314
  </OSTotal>
@@ -292,45 +367,44 @@ const CartUI = (props: any) => {
292
367
  </CheckoutAction>
293
368
  )}
294
369
  </BusinessItemAccordion>
295
- <OModal
296
- open={openProduct}
297
- entireModal
298
- customClose
299
- onClose={() => setModalIsOpen(false)}
300
- isAvoidKeyBoardView
301
- >
302
- <ProductForm
303
- isCartProduct
304
- productCart={curProduct}
305
- businessSlug={cart?.business?.slug}
306
- businessId={cart?.business_id}
307
- categoryId={curProduct?.category_id}
308
- productId={curProduct?.id}
309
- onSave={handlerProductAction}
310
- onClose={() => setModalIsOpen(false)}
311
- />
312
-
313
- </OModal>
314
370
 
315
- {openUpselling && (
316
- <UpsellingProducts
317
- handleUpsellingPage={handleUpsellingPage}
318
- openUpselling={openUpselling}
319
- businessId={cart?.business_id}
320
- business={cart?.business}
321
- cartProducts={cart?.products}
322
- canOpenUpselling={canOpenUpselling}
323
- setCanOpenUpselling={setCanOpenUpselling}
324
- />
325
- )}
371
+ {
372
+ openUpselling && (
373
+ <UpsellingProducts
374
+ handleUpsellingPage={handleUpsellingPage}
375
+ openUpselling={openUpselling}
376
+ businessId={cart?.business_id}
377
+ business={cart?.business}
378
+ cartProducts={cart?.products}
379
+ canOpenUpselling={canOpenUpselling}
380
+ setCanOpenUpselling={setCanOpenUpselling}
381
+ setOpenUpselling={setOpenUpselling}
382
+ onRedirect={props.onNavigationRedirect}
383
+ />
384
+ )
385
+ }
326
386
  <OModal
327
387
  open={openTaxModal.open}
328
388
  onClose={() => setOpenTaxModal({ open: false, data: null })}
329
389
  entireModal
390
+ title={`${openTaxModal.data?.name ||
391
+ 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}%`})` : ''} `}
330
392
  >
331
- <TaxInformation data={openTaxModal.data} products={cart?.products} />
393
+ <TaxInformation
394
+ type={openTaxModal.type}
395
+ data={openTaxModal.data}
396
+ products={cart?.products}
397
+ />
332
398
  </OModal>
333
- </CContainer>
399
+ <OAlert
400
+ open={confirm.open}
401
+ title={confirm.title}
402
+ content={confirm.content}
403
+ onAccept={confirm.handleOnAccept}
404
+ onCancel={() => setConfirm({ ...confirm, open: false, title: null })}
405
+ onClose={() => setConfirm({ ...confirm, open: false, title: null })}
406
+ />
407
+ </CContainer >
334
408
  )
335
409
  }
336
410
 
@@ -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
+ `
@@ -152,8 +152,8 @@ const CheckoutUI = (props: any) => {
152
152
 
153
153
  const deliveryOptions = instructionsOptions?.result && instructionsOptions?.result?.filter((option: any) => option?.enabled)?.map((option: any) => {
154
154
  return {
155
- value: option?.id, key: option?.id, label: t(option?.name.toUpperCase().replace(/\s/g, '_'), option?.name)
156
- }
155
+ value: option?.id, key: option?.id, label: t(option?.name.toUpperCase().replace(/\s/g, '_'), option?.name)
156
+ }
157
157
  })
158
158
 
159
159
  const handlePlaceOrder = () => {
@@ -241,7 +241,7 @@ const CheckoutUI = (props: any) => {
241
241
  setShowGateway({ open: false, closedByUser: true })
242
242
  }
243
243
 
244
- const changeDeliveryOption = (option : any) => {
244
+ const changeDeliveryOption = (option: any) => {
245
245
  handleChangeDeliveryOption(option)
246
246
  setIsDeliveryOptionModalVisible(false)
247
247
  }
@@ -309,9 +309,11 @@ const CheckoutUI = (props: any) => {
309
309
  <OText size={22} numberOfLines={2} ellipsizeMode='tail' >
310
310
  {businessName || businessDetails?.business?.name}
311
311
  </OText>
312
- <OText size={22}>
313
- {cart?.total >= 1 && parsePrice(cart?.total) || cartTotal >= 1 && parsePrice(cartTotal)}
314
- </OText>
312
+ {!cartState.loading && (
313
+ <OText size={22}>
314
+ {parsePrice(cart?.total >= 0 ? cart?.total : 0) || parsePrice(cartTotal >= 0 ? cartTotal : 0)}
315
+ </OText>
316
+ )}
315
317
  </View>
316
318
  </ChTotal>
317
319
  </ChSection>
@@ -580,6 +582,7 @@ const CheckoutUI = (props: any) => {
580
582
  cart={cart}
581
583
  isCartPending={cart?.status === 2}
582
584
  isFromCheckout
585
+ onNavigationRedirect={onNavigationRedirect}
583
586
  />
584
587
  </>
585
588
  )}
@@ -766,6 +769,7 @@ const CheckoutUI = (props: any) => {
766
769
  amount: cart?.total,
767
770
  delivery_zone_id: cart?.delivery_zone_id,
768
771
  user_id: user?.id,
772
+ user_name: user?.name
769
773
  },
770
774
  currency: configs?.stripe_currency?.value || currency,
771
775
  userToken: token,