ordering-ui-react-native 0.15.18 → 0.15.20-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 (150) hide show
  1. package/package.json +5 -3
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessTypeFilter/index.tsx +12 -2
  4. package/src/components/BusinessTypeFilter/styles.tsx +1 -1
  5. package/src/components/BusinessesListing/index.tsx +1 -1
  6. package/src/components/Checkout/index.tsx +0 -1
  7. package/src/components/LanguageSelector/index.tsx +1 -0
  8. package/src/components/OrderDetails/index.tsx +26 -5
  9. package/src/components/PaymentOptions/index.tsx +9 -16
  10. package/src/components/PaymentOptionsWebView/index.tsx +123 -124
  11. package/src/components/StripeElementsForm/index.tsx +27 -48
  12. package/src/components/VerifyPhone/styles.tsx +1 -2
  13. package/src/config.json +0 -2
  14. package/src/navigators/HomeNavigator.tsx +6 -0
  15. package/src/pages/BusinessProductsList.tsx +1 -0
  16. package/src/pages/BusinessesListing.tsx +1 -1
  17. package/src/pages/Checkout.tsx +1 -1
  18. package/src/pages/Sessions.tsx +22 -0
  19. package/src/types/index.tsx +1 -9
  20. package/src/utils/index.tsx +68 -1
  21. package/themes/business/index.tsx +2 -0
  22. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +56 -8
  23. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +5 -0
  24. package/themes/business/src/components/Chat/index.tsx +38 -86
  25. package/themes/business/src/components/Home/index.tsx +128 -55
  26. package/themes/business/src/components/Home/styles.tsx +8 -1
  27. package/themes/business/src/components/NewOrderNotification/index.tsx +59 -98
  28. package/themes/business/src/components/OrderDetails/Business.tsx +2 -1
  29. package/themes/business/src/components/OrderDetails/Delivery.tsx +22 -13
  30. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +151 -89
  31. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +91 -17
  32. package/themes/business/src/components/OrderDetails/styles.tsx +7 -0
  33. package/themes/business/src/components/OrdersListManager/index.tsx +874 -0
  34. package/themes/business/src/components/OrdersListManager/styles.tsx +123 -0
  35. package/themes/business/src/components/OrdersListManager/utils.tsx +216 -0
  36. package/themes/business/src/components/OrdersOption/index.tsx +54 -49
  37. package/themes/business/src/components/PreviousOrders/index.tsx +82 -23
  38. package/themes/business/src/types/index.tsx +2 -1
  39. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  40. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  41. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  42. package/themes/kiosk/src/components/BusinessController/index.tsx +27 -6
  43. package/themes/kiosk/src/components/BusinessController/styles.tsx +1 -1
  44. package/themes/kiosk/src/components/BusinessProductsListing/index.tsx +48 -21
  45. package/themes/kiosk/src/components/Cart/index.tsx +98 -24
  46. package/themes/kiosk/src/components/Cart/styles.tsx +6 -0
  47. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +1 -1
  48. package/themes/kiosk/src/components/CartBottomSheet/styles.tsx +1 -1
  49. package/themes/kiosk/src/components/CartContent/index.tsx +13 -3
  50. package/themes/kiosk/src/components/CartItem/index.tsx +20 -8
  51. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +6 -5
  52. package/themes/kiosk/src/components/CustomerName/index.tsx +89 -88
  53. package/themes/kiosk/src/components/Intro/index.tsx +13 -13
  54. package/themes/kiosk/src/components/LanguageSelector/index.tsx +12 -8
  55. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  56. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  57. package/themes/kiosk/src/components/OrderDetails/index.tsx +136 -41
  58. package/themes/kiosk/src/components/OrderDetails/styles.tsx +5 -0
  59. package/themes/kiosk/src/components/OrderSummary/index.tsx +1 -1
  60. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +10 -12
  61. package/themes/kiosk/src/components/ProductForm/index.tsx +174 -125
  62. package/themes/kiosk/src/components/ProductForm/styles.tsx +1 -1
  63. package/themes/kiosk/src/components/ProductOption/index.tsx +1 -0
  64. package/themes/kiosk/src/components/ProductOption/styles.tsx +1 -0
  65. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +48 -34
  66. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  67. package/themes/kiosk/src/components/shared/OCard.tsx +112 -78
  68. package/themes/kiosk/src/types/index.d.ts +2 -0
  69. package/themes/original/index.tsx +179 -0
  70. package/themes/original/src/components/AddressForm/index.tsx +15 -10
  71. package/themes/original/src/components/AddressList/index.tsx +56 -18
  72. package/themes/original/src/components/AppleLogin/index.tsx +117 -78
  73. package/themes/original/src/components/BusinessBasicInformation/index.tsx +96 -45
  74. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +28 -1
  75. package/themes/original/src/components/BusinessController/index.tsx +52 -22
  76. package/themes/original/src/components/BusinessController/styles.tsx +22 -0
  77. package/themes/original/src/components/BusinessFeaturedController/index.tsx +20 -1
  78. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +23 -0
  79. package/themes/original/src/components/BusinessListingSearch/index.tsx +4 -0
  80. package/themes/original/src/components/BusinessMenuList/index.tsx +11 -4
  81. package/themes/original/src/components/BusinessPreorder/index.tsx +141 -121
  82. package/themes/original/src/components/BusinessProductsCategories/index.tsx +7 -5
  83. package/themes/original/src/components/BusinessProductsList/index.tsx +130 -23
  84. package/themes/original/src/components/BusinessProductsList/styles.tsx +29 -2
  85. package/themes/original/src/components/BusinessProductsListing/index.tsx +92 -37
  86. package/themes/original/src/components/BusinessProductsListing/styles.tsx +22 -0
  87. package/themes/original/src/components/BusinessReviews/index.tsx +4 -25
  88. package/themes/original/src/components/BusinessTypeFilter/index.tsx +1 -2
  89. package/themes/original/src/components/BusinessesListing/index.tsx +48 -57
  90. package/themes/original/src/components/Cart/index.tsx +18 -14
  91. package/themes/original/src/components/CartContent/index.tsx +2 -2
  92. package/themes/original/src/components/Checkout/index.tsx +42 -27
  93. package/themes/original/src/components/CouponControl/index.tsx +1 -0
  94. package/themes/original/src/components/DriverTips/index.tsx +1 -1
  95. package/themes/original/src/components/ForgotPasswordForm/index.tsx +84 -4
  96. package/themes/original/src/components/Help/index.tsx +21 -4
  97. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +97 -89
  98. package/themes/original/src/components/Home/index.tsx +1 -1
  99. package/themes/original/src/components/LastOrders/index.tsx +12 -1
  100. package/themes/original/src/components/LoginForm/index.tsx +73 -2
  101. package/themes/original/src/components/LoginForm/styles.tsx +6 -1
  102. package/themes/original/src/components/MessageListing/index.tsx +10 -1
  103. package/themes/original/src/components/Messages/index.tsx +50 -45
  104. package/themes/original/src/components/Messages/styles.tsx +1 -3
  105. package/themes/original/src/components/MomentOption/index.tsx +10 -1
  106. package/themes/original/src/components/MomentOption/styles.tsx +1 -1
  107. package/themes/original/src/components/OrderDetails/index.tsx +107 -111
  108. package/themes/original/src/components/OrderDetails/styles.tsx +3 -1
  109. package/themes/original/src/components/OrderProgress/index.tsx +4 -4
  110. package/themes/original/src/components/OrderProgress/styles.tsx +1 -0
  111. package/themes/original/src/components/OrderSummary/index.tsx +2 -2
  112. package/themes/original/src/components/OrderTypeSelector/index.tsx +4 -2
  113. package/themes/original/src/components/OrdersOption/index.tsx +25 -33
  114. package/themes/original/src/components/OrdersOption/styles.tsx +0 -6
  115. package/themes/original/src/components/PaymentOptionWallet/index.tsx +10 -4
  116. package/themes/original/src/components/PaymentOptionWallet/styles.tsx +1 -1
  117. package/themes/original/src/components/PaymentOptions/index.tsx +9 -19
  118. package/themes/original/src/components/PreviousOrders/index.tsx +19 -13
  119. package/themes/original/src/components/ProductForm/index.tsx +40 -33
  120. package/themes/original/src/components/ProductForm/styles.tsx +2 -2
  121. package/themes/original/src/components/ProductOptionSubOption/index.tsx +5 -3
  122. package/themes/original/src/components/Promotions/index.tsx +250 -0
  123. package/themes/original/src/components/Promotions/styles.tsx +60 -0
  124. package/themes/original/src/components/ReviewOrder/index.tsx +10 -9
  125. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  126. package/themes/original/src/components/Sessions/index.tsx +160 -0
  127. package/themes/original/src/components/Sessions/styles.tsx +15 -0
  128. package/themes/original/src/components/SingleProductCard/index.tsx +47 -21
  129. package/themes/original/src/components/SingleProductCard/styles.tsx +28 -1
  130. package/themes/original/src/components/StripeElementsForm/index.tsx +55 -72
  131. package/themes/original/src/components/TaxInformation/index.tsx +17 -7
  132. package/themes/original/src/components/UpsellingProducts/index.tsx +87 -71
  133. package/themes/original/src/components/UserDetails/index.tsx +4 -95
  134. package/themes/original/src/components/UserFormDetails/index.tsx +32 -31
  135. package/themes/original/src/components/UserProfile/index.tsx +70 -20
  136. package/themes/original/src/components/UserProfileForm/index.tsx +28 -24
  137. package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
  138. package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
  139. package/themes/original/src/components/Wallets/index.tsx +75 -8
  140. package/themes/original/src/components/Wallets/styles.tsx +21 -0
  141. package/themes/original/src/components/shared/HeaderTitle.tsx +21 -0
  142. package/themes/original/src/components/shared/index.tsx +2 -0
  143. package/themes/original/src/config/constants.tsx +6 -6
  144. package/themes/original/src/types/index.tsx +71 -26
  145. package/themes/original/src/utils/index.tsx +12 -2
  146. package/themes/single-business/src/components/AddressList/index.tsx +1 -1
  147. package/themes/single-business/src/components/OrderTypeSelector/index.tsx +6 -6
  148. package/themes/single-business/src/components/UserProfile/index.tsx +1 -1
  149. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  150. package/src/components/StripeMethodForm/index.tsx +0 -168
@@ -1,14 +1,11 @@
1
1
  import React, { useState, useEffect } from 'react';
2
- import { View, StyleSheet, BackHandler, KeyboardAvoidingView, Platform, Linking } from 'react-native';
3
- import Spinner from 'react-native-loading-spinner-overlay';
2
+ import { View, StyleSheet, BackHandler, Platform, Linking } from 'react-native';
4
3
  import LinearGradient from 'react-native-linear-gradient';
5
- import { Messages } from '../Messages';
6
4
  import {
7
5
  useLanguage,
8
6
  OrderDetails as OrderDetailsConTableoller,
9
7
  useUtils,
10
- useConfig,
11
- useSession,
8
+ useConfig
12
9
  } from 'ordering-components/native';
13
10
  import { useTheme } from 'styled-components/native';
14
11
  import {
@@ -16,14 +13,10 @@ import {
16
13
  Header,
17
14
  OrderContent,
18
15
  OrderBusiness,
19
- Logo,
20
16
  OrderData,
21
17
  OrderInfo,
22
- OrderStatus,
23
18
  StaturBar,
24
- StatusImage,
25
19
  OrderCustomer,
26
- CustomerPhoto,
27
20
  InfoBlock,
28
21
  HeaderInfo,
29
22
  Customer,
@@ -31,33 +24,34 @@ import {
31
24
  Table,
32
25
  OrderBill,
33
26
  Total,
34
- NavBack,
35
27
  Icons,
36
28
  OrderDriver,
37
29
  Map,
38
30
  Divider,
31
+ OrderAction
39
32
  } from './styles';
40
33
  import { OButton, OIcon, OModal, OText } from '../shared';
41
34
  import { ProductItemAccordion } from '../ProductItemAccordion';
42
35
  import { TouchableOpacity } from 'react-native-gesture-handler';
43
36
  import { OrderDetailsParams } from '../../types';
44
- import { USER_TYPE } from '../../config/constants';
45
37
  import { GoogleMap } from '../GoogleMap';
46
38
  import { verifyDecimals } from '../../utils';
47
39
  import { OSRow } from '../OrderSummary/styles';
48
40
  import AntIcon from 'react-native-vector-icons/AntDesign'
49
41
  import { TaxInformation } from '../TaxInformation';
50
42
  import { Placeholder, PlaceholderLine } from 'rn-placeholder';
51
-
43
+ import NavBar from '../NavBar'
52
44
  export const OrderDetailsUI = (props: OrderDetailsParams) => {
53
45
  const {
54
46
  navigation,
55
47
  messages,
56
48
  setMessages,
57
49
  readMessages,
58
- messagesReadList,
59
50
  isFromCheckout,
60
51
  driverLocation,
52
+ onNavigationRedirect,
53
+ reorderState,
54
+ handleReorder
61
55
  } = props;
62
56
 
63
57
  const theme = useTheme();
@@ -86,25 +80,19 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
86
80
  justifyContent: 'flex-start',
87
81
  paddingLeft: 0,
88
82
  height: 30,
89
- width: 40,
83
+ width: 30,
84
+ marginTop: Platform.OS === 'ios' ? 0 : 30
90
85
  },
91
86
  });
92
87
 
93
88
  const [, t] = useLanguage();
94
89
  const [{ parsePrice, parseNumber, parseDate }] = useUtils();
95
- const [{ user }] = useSession();
96
90
  const [{ configs }] = useConfig();
97
-
98
- const [openModalForBusiness, setOpenModalForBusiness] = useState(false);
99
- const [openModalForDriver, setOpenModalForDriver] = useState(false);
100
91
  const [isReviewed, setIsReviewed] = useState(false)
101
- const [unreadAlert, setUnreadAlert] = useState({
102
- business: false,
103
- driver: false,
104
- });
105
92
  const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, tax: null, type: '' })
106
93
 
107
94
  const { order, businessData } = props.order;
95
+ const mapValidStatuses = [9, 19, 23]
108
96
 
109
97
  const walletName: any = {
110
98
  cash: {
@@ -314,38 +302,24 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
314
302
  return objectStatus && objectStatus;
315
303
  };
316
304
 
317
- const handleOpenMessagesForBusiness = () => {
318
- setOpenModalForBusiness(true);
319
- readMessages && readMessages();
320
- setUnreadAlert({ ...unreadAlert, business: false });
321
- };
322
-
323
- const handleOpenMessagesForDriver = () => {
324
- setOpenModalForDriver(true);
305
+ const handleGoToMessages = (type: string) => {
325
306
  readMessages && readMessages();
326
- setUnreadAlert({ ...unreadAlert, driver: false });
327
- };
328
-
329
- const unreadMessages = () => {
330
- const length = messages?.messages.length;
331
- const unreadLength = order?.unread_count;
332
- const unreadedMessages = messages.messages.slice(
333
- length - unreadLength,
334
- length,
335
- );
336
- const business = unreadedMessages.some((message: any) =>
337
- message?.can_see?.includes(2),
338
- );
339
- const driver = unreadedMessages.some((message: any) =>
340
- message?.can_see?.includes(4),
341
- );
342
- setUnreadAlert({ business, driver });
343
- };
344
-
345
- const handleCloseModal = () => {
346
- setOpenModalForBusiness(false);
347
- setOpenModalForDriver(false);
348
- };
307
+ navigation.navigate(
308
+ 'MessageDetails',
309
+ {
310
+ type,
311
+ order,
312
+ messages,
313
+ setMessages,
314
+ orderId: order?.id,
315
+ business: type === 'business',
316
+ driver: type === 'driver',
317
+ onClose: () => navigation?.canGoBack()
318
+ ? navigation.goBack()
319
+ : navigation.navigate('BottomTab', { screen: 'MyOrders' }),
320
+ }
321
+ )
322
+ }
349
323
 
350
324
  const handleArrowBack: any = () => {
351
325
  if (!isFromCheckout) {
@@ -387,6 +361,37 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
387
361
  )
388
362
  }
389
363
 
364
+ const RenderGoogleMap = () => {
365
+ const driverLocationString = typeof order?.driver?.location?.location === 'string' && order?.driver?.location?.location?.split(',').map((l: string) => l.replace(/[^-.0-9]/g, ''))
366
+ const parsedLocations = locations.map(location => typeof location?.location === 'string' ? {
367
+ ...location,
368
+ lat: parseFloat(location?.location?.split(',')[0].replace(/[^-.0-9]/g, '')),
369
+ lng: parseFloat(location?.location?.split(',')[1].replace(/[^-.0-9]/g, ''))
370
+ } : location)
371
+
372
+ return (
373
+ <GoogleMap
374
+ location={typeof order?.driver?.location?.location === 'string'
375
+ ? {
376
+ lat: parseFloat(driverLocationString[0]),
377
+ lng: parseFloat(driverLocationString[1]),
378
+ } : order?.driver?.location
379
+ }
380
+ locations={parsedLocations}
381
+ readOnly
382
+ />
383
+ )
384
+ }
385
+
386
+ useEffect(() => {
387
+ if (reorderState?.error) {
388
+ navigation.navigate('Business', { store: businessData?.slug })
389
+ }
390
+ if (!reorderState?.error && reorderState?.result?.uuid) {
391
+ onNavigationRedirect && onNavigationRedirect('CheckoutNavigator', { cartUuid: reorderState?.result.uuid })
392
+ }
393
+ }, [reorderState])
394
+
390
395
  useEffect(() => {
391
396
  BackHandler.addEventListener('hardwareBackPress', handleArrowBack);
392
397
  return () => {
@@ -394,14 +399,6 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
394
399
  };
395
400
  }, []);
396
401
 
397
- useEffect(() => {
398
- if (messagesReadList?.length) {
399
- openModalForBusiness
400
- ? setUnreadAlert({ ...unreadAlert, business: false })
401
- : setUnreadAlert({ ...unreadAlert, driver: false });
402
- }
403
- }, [messagesReadList]);
404
-
405
402
  const locations = [
406
403
  {
407
404
  ...order?.driver?.location,
@@ -487,27 +484,23 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
487
484
  {order && Object.keys(order).length > 0 && (
488
485
  <>
489
486
  <Header>
490
- <OButton
491
- imgLeftSrc={theme.images.general.arrow_left}
492
- imgRightSrc={null}
493
- style={styles.btnBackArrow}
494
- onClick={() => handleArrowBack()}
495
- imgLeftStyle={{ tintColor: theme.colors.disabled }}
487
+ <NavBar
488
+ title={`${t('ORDER', 'Order')} #${order?.id}`}
489
+ titleAlign={'center'}
490
+ onActionLeft={handleArrowBack}
491
+ showCall={false}
492
+ btnStyle={{ paddingLeft: 0 }}
493
+ style={{ marginTop: Platform.OS === 'ios' ? 0 : 20 }}
494
+ titleWrapStyle={{ paddingHorizontal: 0 }}
495
+ titleStyle={{ marginRight: 0, marginLeft: 0 }}
496
+ subTitle={<OText size={12} lineHeight={18} color={theme.colors.textNormal}>
497
+ {order?.delivery_datetime_utc
498
+ ? parseDate(order?.delivery_datetime_utc)
499
+ : parseDate(order?.delivery_datetime, { utc: false })}
500
+ </OText>}
496
501
  />
497
502
  <OrderInfo>
498
503
  <OrderData>
499
- <OText
500
- size={20}
501
- lineHeight={30}
502
- weight={'600'}
503
- color={theme.colors.textNormal}>
504
- {t('ORDER', 'Order')} #{order?.id}
505
- </OText>
506
- <OText size={12} lineHeight={18} color={theme.colors.textNormal}>
507
- {order?.delivery_datetime_utc
508
- ? parseDate(order?.delivery_datetime_utc)
509
- : parseDate(order?.delivery_datetime, { utc: false })}
510
- </OText>
511
504
  {
512
505
  (
513
506
  parseInt(order?.status) === 1 ||
@@ -606,7 +599,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
606
599
  )}
607
600
  <TouchableOpacity
608
601
  style={{ paddingStart: 5 }}
609
- onPress={() => handleOpenMessagesForBusiness()}>
602
+ onPress={() => handleGoToMessages('business')}>
610
603
  <OIcon
611
604
  src={theme.images.general.chat}
612
605
  width={16}
@@ -698,7 +691,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
698
691
  )}
699
692
  {order?.driver && (
700
693
  <>
701
- {order?.driver?.location && parseInt(order?.status) === 9 && (
694
+ {order?.driver?.location && mapValidStatuses.includes(parseInt(order?.status)) && (
702
695
  <Map>
703
696
  <GoogleMap
704
697
  location={order?.driver?.location}
@@ -735,7 +728,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
735
728
  </OText>
736
729
  <Icons>
737
730
  <TouchableOpacity
738
- onPress={() => handleOpenMessagesForDriver()}>
731
+ onPress={() => handleGoToMessages('driver')}>
739
732
  <OIcon
740
733
  src={theme.images.general.chat}
741
734
  width={16}
@@ -776,16 +769,37 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
776
769
  'Once business accepts your order, we will send you an email, thank you!',
777
770
  )}
778
771
  </OText>
779
- <OButton
780
- text={t('YOUR_ORDERS', 'Your Orders')}
781
- textStyle={{ fontSize: 14, color: theme.colors.primary }}
782
- imgRightSrc={null}
783
- borderColor={theme.colors.primary}
784
- bgColor={theme.colors.clear}
785
- style={{ borderRadius: 7.6, borderWidth: 1, height: 44, shadowOpacity: 0 }}
786
- parentStyle={{ marginTop: 29, width: '50%' }}
787
- onClick={() => navigation.navigate('BottomTab', { screen: 'MyOrders' })}
788
- />
772
+ <OrderAction>
773
+ <OButton
774
+ text={t('YOUR_ORDERS', 'Your Orders')}
775
+ textStyle={{ fontSize: 14, color: theme.colors.primary }}
776
+ imgRightSrc={null}
777
+ borderColor={theme.colors.primary}
778
+ bgColor={theme.colors.clear}
779
+ style={{ borderRadius: 7.6, borderWidth: 1, height: 44, shadowOpacity: 0 }}
780
+ parentStyle={{ marginTop: 29, marginEnd: 15 }}
781
+ onClick={() => navigation.navigate('BottomTab', { screen: 'MyOrders' })}
782
+ />
783
+ {(
784
+ parseInt(order?.status) === 1 ||
785
+ parseInt(order?.status) === 2 ||
786
+ parseInt(order?.status) === 5 ||
787
+ parseInt(order?.status) === 6 ||
788
+ parseInt(order?.status) === 10 ||
789
+ parseInt(order?.status) === 11 ||
790
+ parseInt(order?.status) === 12
791
+ ) && (
792
+ <OButton
793
+ text={order.id === reorderState?.loading ? t('LOADING', 'Loading..') : t('REORDER', 'Reorder')}
794
+ textStyle={{ fontSize: 14, color: theme.colors.primary }}
795
+ imgRightSrc={null}
796
+ borderColor='transparent'
797
+ bgColor={theme.colors.primary + 10}
798
+ style={{ borderRadius: 7.6, borderWidth: 1, height: 44, shadowOpacity: 0, marginTop: 29 }}
799
+ onClick={() => handleReorder && handleReorder(order.id)}
800
+ />
801
+ )}
802
+ </OrderAction>
789
803
  </HeaderInfo>
790
804
  <OrderProducts>
791
805
  {order?.products?.length &&
@@ -895,7 +909,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
895
909
  <OSRow>
896
910
  <OText size={12} lineHeight={18} weight={'400'} color={theme.colors.textNormal} numberOfLines={1}>
897
911
  {fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
898
- ({fee?.fixed > 0 && `${parsePrice(fee?.fixed)} + `}{fee.percentage}%){' '}
912
+ ({fee?.fixed > 0 && `${parsePrice(fee?.fixed)}${fee.percentage > 0 ? ' + ' : ''}`}{fee.percentage > 0 && `${fee.percentage}%`}){' '}
899
913
  </OText>
900
914
  <TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: fee, type: 'fee' })}>
901
915
  <AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
@@ -1018,28 +1032,10 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
1018
1032
  </OrderContent>
1019
1033
  </>
1020
1034
  )}
1021
- <OModal
1022
- open={openModalForBusiness || openModalForDriver}
1023
- entireModal
1024
- customClose
1025
- onClose={() => handleCloseModal()}>
1026
- <Messages
1027
- type={openModalForBusiness ? USER_TYPE.BUSINESS : USER_TYPE.DRIVER}
1028
- orderId={order?.id}
1029
- messages={messages}
1030
- order={order}
1031
- business={openModalForBusiness}
1032
- driver={openModalForDriver}
1033
- setMessages={setMessages}
1034
- onClose={handleCloseModal}
1035
- />
1036
- </OModal>
1037
1035
  <OModal
1038
1036
  open={openTaxModal.open}
1039
1037
  onClose={() => setOpenTaxModal({ open: false, data: null, type: '' })}
1040
1038
  entireModal
1041
- title={`${openTaxModal.data?.name ||
1042
- 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}%`})` : ''} `}
1043
1039
  >
1044
1040
  <TaxInformation
1045
1041
  type={openTaxModal.type}
@@ -5,7 +5,6 @@ export const OrderDetailsContainer = styled.ScrollView`
5
5
  `
6
6
 
7
7
  export const NavBack = styled.TouchableOpacity`
8
-
9
8
  `
10
9
 
11
10
 
@@ -125,3 +124,6 @@ export const Divider = styled.View`
125
124
  margin-top: 5px;
126
125
  margin-bottom: 5px;
127
126
  `
127
+ export const OrderAction = styled.View`
128
+ flex-direction: row;
129
+ `
@@ -98,7 +98,7 @@ const OrderProgressUI = (props: any) => {
98
98
  { key: 20, value: t('ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS', theme?.defaultLanguages?.ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS || 'Customer almost arrived to business'), slug: 'ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS', percentage: 90 },
99
99
  { key: 21, value: t('ORDER_CUSTOMER_ARRIVED_BUSINESS', theme?.defaultLanguages?.ORDER_CUSTOMER_ARRIVED_BUSINESS || 'Customer arrived to business'), slug: 'ORDER_CUSTOMER_ARRIVED_BUSINESS', percentage: 95 },
100
100
  { key: 22, value: t('ORDER_LOOKING_FOR_DRIVER', theme?.defaultLanguages?.ORDER_LOOKING_FOR_DRIVER || 'Looking for driver'), slug: 'ORDER_LOOKING_FOR_DRIVER', percentage: 35 },
101
- { key: 23, value: t('ORDER_DRIVER_ON_WAY', theme?.defaultLanguages?.ORDER_DRIVER_ON_WAY || 'Driver on way'), slug: 'ORDER_DRIVER_ON_WAY', percentage: 45 }
101
+ { key: 23, value: t('ORDER_DRIVER_ON_WAY', theme?.defaultLanguages?.ORDER_DRIVER_ON_WAY || 'Driver on way'), slug: 'ORDER_DRIVER_ON_WAY', percentage: 45 }
102
102
  ]
103
103
 
104
104
  const objectStatus = orderStatus.find((o) => o.key === status)
@@ -131,7 +131,7 @@ const OrderProgressUI = (props: any) => {
131
131
 
132
132
  useEffect(() => {
133
133
  if (isFocused) {
134
- loadOrders()
134
+ loadOrders(false, false, false, true)
135
135
  }
136
136
  }, [isFocused])
137
137
 
@@ -188,7 +188,7 @@ const OrderProgressUI = (props: any) => {
188
188
  <ProgressBar style={{ width: getOrderStatus(lastOrder.status)?.percentage ? `${getOrderStatus(lastOrder.status)?.percentage}%` : '0%' }} />
189
189
  </ProgressContentWrapper>
190
190
  <ProgressTextWrapper>
191
- <OText size={12}>{getOrderStatus(lastOrder.status)?.value}</OText>
191
+ <OText size={12} style={{ width: '50%' }}>{getOrderStatus(lastOrder.status)?.value}</OText>
192
192
  <TimeWrapper>
193
193
  <OText size={11}>{t('ESTIMATED_DELIVERY', 'Estimated delivery')}</OText>
194
194
  <OText size={11}>
@@ -218,7 +218,7 @@ export const OrderProgress = (props: any) => {
218
218
  const orderProgressProps = {
219
219
  ...props,
220
220
  UIComponent: OrderProgressUI,
221
- orderStatus: [0, 3, 4, 7, 8, 9, 13, 14, 15, 18, 19, 20, 21, 22, 23],
221
+ orderStatus: [0, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 21, 22, 23],
222
222
  useDefualtSessionManager: true,
223
223
  paginationSettings: {
224
224
  initialPage: 1,
@@ -20,6 +20,7 @@ export const ProgressTextWrapper = styled.View`
20
20
  flex-direction: row;
21
21
  justify-content: space-between;
22
22
  align-items: center;
23
+ width: 100%;
23
24
  `
24
25
 
25
26
  export const OrderInfoWrapper = styled.View`
@@ -112,7 +112,7 @@ const OrderSummaryUI = (props: any) => {
112
112
  {cart?.products?.length > 0 && (
113
113
  <>
114
114
  <OSProductList>
115
- {cart?.products.map((product: any) => (
115
+ {cart?.products?.map((product: any) => (
116
116
  <ProductItemAccordion
117
117
  key={product.code}
118
118
  product={product}
@@ -202,7 +202,7 @@ const OrderSummaryUI = (props: any) => {
202
202
  <OSRow>
203
203
  <OText size={12} numberOfLines={1}>
204
204
  {fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}{' '}
205
- ({parsePrice(fee?.fixed)} + {fee?.percentage}%){' '}
205
+ ({fee?.fixed > 0 && `${parsePrice(fee?.fixed)}${fee.percentage > 0 ? ' + ' : ''}`}{fee.percentage > 0 && `${fee.percentage}%`}){' '}
206
206
  </OText>
207
207
  <TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: fee, type: 'fee' })} >
208
208
  <AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
@@ -19,7 +19,8 @@ const OrderTypeSelectorUI = (props: OrderTypeSelectParams) => {
19
19
  typeSelected,
20
20
  defaultValue,
21
21
  configTypes,
22
- orderTypes
22
+ orderTypes,
23
+ setOrderTypeValue
23
24
  } = props
24
25
 
25
26
  const theme = useTheme();
@@ -39,6 +40,7 @@ const OrderTypeSelectorUI = (props: OrderTypeSelectParams) => {
39
40
 
40
41
  const handleChangeOrderTypeCallback = (orderType: number) => {
41
42
  if (!orderState.loading) {
43
+ setOrderTypeValue && setOrderTypeValue(orderType)
42
44
  handleChangeOrderType(orderType)
43
45
  goToBack();
44
46
  }
@@ -51,7 +53,7 @@ const OrderTypeSelectorUI = (props: OrderTypeSelectParams) => {
51
53
  btnStyle={{ paddingLeft: 0 }}
52
54
  paddingTop={0}
53
55
  style={{ paddingBottom: 0 }}
54
- title={t('HOW_WILL_YOUR_ORDER_TYPE', 'How will your order type?')}
56
+ title={t('HOW_WILL_YOU_DELIVERY_TYPE', 'How will your order type?')}
55
57
  titleAlign={'center'}
56
58
  titleStyle={{ fontSize: 14 }}
57
59
  />
@@ -2,12 +2,12 @@ import React, { useState, useEffect } from 'react'
2
2
  import { OrderList, useLanguage, useOrder, ToastType, useToast } from 'ordering-components/native'
3
3
  import { useTheme } from 'styled-components/native';
4
4
  import { useFocusEffect } from '@react-navigation/native'
5
- import { OText, OButton } from '../shared'
5
+ import { OText } from '../shared'
6
6
  import { NotFoundSource } from '../NotFoundSource'
7
7
  import { ActiveOrders } from '../ActiveOrders'
8
8
  import { PreviousOrders } from '../PreviousOrders'
9
9
 
10
- import { OptionTitle, NoOrdersWrapper } from './styles'
10
+ import { OptionTitle } from './styles'
11
11
  import { OrdersOptionParams } from '../../types'
12
12
 
13
13
  import {
@@ -33,7 +33,9 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
33
33
  loadMoreOrders,
34
34
  loadOrders,
35
35
  setOrdersLength,
36
- ordersLength
36
+ ordersLength,
37
+ refreshOrders,
38
+ setRefreshOrders
37
39
  } = props
38
40
 
39
41
  const theme = useTheme();
@@ -95,7 +97,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
95
97
  { key: 20, value: t('ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS', 'Customer almost arrived to business') },
96
98
  { key: 21, value: t('ORDER_CUSTOMER_ARRIVED_BUSINESS', 'Customer arrived to business') },
97
99
  { key: 22, value: t('ORDER_LOOKING_FOR_DRIVER', 'Looking for driver') },
98
- { key: 23, value: t('ORDER_DRIVER_ON_WAY', 'Driver on way') }
100
+ { key: 23, value: t('ORDER_DRIVER_ON_WAY', 'Driver on way') }
99
101
  ]
100
102
 
101
103
  const objectStatus = orderStatus.find((o) => o.key === status)
@@ -105,9 +107,9 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
105
107
 
106
108
  useFocusEffect(
107
109
  React.useCallback(() => {
108
- loadOrders()
110
+ loadOrders(false, false, false, true)
109
111
  }, [navigation])
110
- )
112
+ )
111
113
 
112
114
  useEffect(() => {
113
115
  const hasMore = pagination?.totalPages && pagination?.currentPage !== pagination?.totalPages
@@ -128,23 +130,16 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
128
130
  }
129
131
  }, [orders, activeOrders])
130
132
 
133
+ useEffect(() => {
134
+ if(refreshOrders){
135
+ loadOrders(false, false, false, true)
136
+ setRefreshOrders && setRefreshOrders(false)
137
+ }
138
+ }, [refreshOrders])
139
+
131
140
  return (
132
141
  <>
133
- {!loading && ordersLength.activeOrdersLength === 0 && ordersLength.previousOrdersLength === 0 && !activeOrders && (
134
- <NoOrdersWrapper>
135
- <OText size={14} numberOfLines={1}>
136
- {t('YOU_DONT_HAVE_ORDERS', 'You don\'t have any orders')}
137
- </OText>
138
- <OButton
139
- text={t('ORDER_NOW', 'Order now')}
140
- onClick={() => onNavigationRedirect && onNavigationRedirect('BusinessList')}
141
- textStyle={{ color: 'white', fontSize: 14 }}
142
- style={{ borderRadius: 7.6, marginBottom: 10, marginTop: 10, height: 44, paddingLeft: 10, paddingRight: 10 }}
143
- />
144
-
145
- </NoOrdersWrapper>
146
- )}
147
- {(ordersLength.activeOrdersLength > 0 || ordersLength.previousOrdersLength > 0) && (
142
+ {(orders.length > 0) && (
148
143
  <>
149
144
  <OptionTitle>
150
145
  <OText size={16} lineHeight={24} weight={'500'} color={theme.colors.textNormal} mBottom={10} >
@@ -155,18 +150,15 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
155
150
  : t('PAST', 'Past'))}
156
151
  </OText>
157
152
  </OptionTitle>
158
- {!(ordersLength.activeOrdersLength === 0 && ordersLength.previousOrdersLength === 0) &&
159
- !loading &&
160
- orders.filter((order: any) => orderStatus.includes(order.status)).length === 0 &&
161
- (
162
- <NotFoundSource
163
- content={t('NO_RESULTS_FOUND', 'Sorry, no results found')}
164
- image={imageFails}
165
- conditioned
166
- />
167
- )}
168
153
  </>
169
154
  )}
155
+ {!loading && orders.length === 0 && (
156
+ <NotFoundSource
157
+ content={t('NO_RESULTS_FOUND', 'Sorry, no results found')}
158
+ image={imageFails}
159
+ conditioned
160
+ />
161
+ )}
170
162
  {loading && (
171
163
  <>
172
164
  {!activeOrders ? (
@@ -239,8 +231,8 @@ export const OrdersOption = (props: OrdersOptionParams) => {
239
231
  ...props,
240
232
  UIComponent: OrdersOptionUI,
241
233
  orderStatus: props.preOrders ? [13] : props.activeOrders
242
- ? [0, 3, 4, 7, 8, 9, 14, 15, 18, 19, 20, 21, 22, 23]
243
- : [1, 2, 5, 6, 10, 11, 12, 16, 17],
234
+ ? [0, 3, 4, 7, 8, 9, 14, 18, 19, 20, 21, 22, 23]
235
+ : [1, 2, 5, 6, 10, 11, 12, 15, 16, 17],
244
236
  useDefualtSessionManager: true,
245
237
  }
246
238
 
@@ -3,9 +3,3 @@ import styled from 'styled-components/native'
3
3
  export const OptionTitle = styled.View`
4
4
  margin-top: 24px;
5
5
  `
6
-
7
- export const NoOrdersWrapper = styled.View`
8
- flex-direction: column;
9
- align-items: center;
10
- margin-top: 50px;
11
- `
@@ -20,6 +20,7 @@ import { OText } from '../shared'
20
20
 
21
21
  const PaymentOptionWalletUI = (props: any) => {
22
22
  const {
23
+ businessConfigs,
23
24
  businessId,
24
25
  walletsState,
25
26
  selectWallet,
@@ -37,6 +38,9 @@ const PaymentOptionWalletUI = (props: any) => {
37
38
  const isWalletCashEnabled = configs?.wallet_cash_enabled?.value === '1'
38
39
  const isWalletPointsEnabled = configs?.wallet_credit_point_enabled?.value === '1'
39
40
 
41
+ const isBusinessWalletCashEnabled = businessConfigs.find((config: any) => config.key === 'wallet_cash_enabled')?.value === '1'
42
+ const isBusinessWalletPointsEnabled = businessConfigs.find((config: any) => config.key === 'wallet_credit_point_enabled')?.value === '1'
43
+
40
44
  const styles = StyleSheet.create({
41
45
  checkBoxStyle: {
42
46
  width: 25,
@@ -53,11 +57,11 @@ const PaymentOptionWalletUI = (props: any) => {
53
57
  const walletName: any = {
54
58
  cash: {
55
59
  name: t('PAY_WITH_CASH_WALLET', 'Pay with Cash Wallet'),
56
- isActive: isWalletCashEnabled
60
+ isActive: isWalletCashEnabled && isBusinessWalletCashEnabled
57
61
  },
58
62
  credit_point: {
59
63
  name: t('PAY_WITH_CREDITS_POINTS_WALLET', 'Pay with Credit Points Wallet'),
60
- isActive: isWalletPointsEnabled
64
+ isActive: isWalletPointsEnabled && isBusinessWalletPointsEnabled
61
65
  }
62
66
  }
63
67
 
@@ -96,17 +100,19 @@ const PaymentOptionWalletUI = (props: any) => {
96
100
  <Container
97
101
  key={wallet.id}
98
102
  isBottomBorder={idx === walletsState.result?.filter((wallet: any) => wallet.valid)?.length - 1}
103
+ onPress={() => handleOnChange(idx, wallet)}
104
+ disabled={(cart?.balance === 0 && !checkedState[idx]) || wallet.balance === 0}
99
105
  >
100
106
  <SectionLeft>
101
107
  <CheckBox
102
108
  value={checkedState[idx]}
103
- onValueChange={() => handleOnChange(idx, wallet)}
104
- disabled={(cart?.balance === 0 && !checkedState[idx]) || wallet.balance === 0 }
109
+ disabled={(cart?.balance === 0 && !checkedState[idx]) || wallet.balance === 0}
105
110
  boxType={'square'}
106
111
  tintColors={{
107
112
  true: theme.colors.primary,
108
113
  false: theme.colors.disabled
109
114
  }}
115
+ onChange={() => handleOnChange(idx, wallet)}
110
116
  tintColor={theme.colors.disabled}
111
117
  onCheckColor={theme.colors.primary}
112
118
  onTintColor={theme.colors.primary}
@@ -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;