ordering-ui-react-native 0.16.55 → 0.16.56-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 (200) hide show
  1. package/package.json +6 -5
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/ActiveOrders/index.tsx +61 -63
  4. package/src/components/ActiveOrders/styles.tsx +8 -14
  5. package/src/components/BusinessInformation/index.tsx +33 -4
  6. package/src/components/BusinessInformation/styles.tsx +2 -2
  7. package/src/components/BusinessProductsList/index.tsx +10 -10
  8. package/src/components/BusinessesListing/index.tsx +1 -1
  9. package/src/components/Checkout/index.tsx +2 -1
  10. package/src/components/LanguageSelector/index.tsx +21 -16
  11. package/src/components/Messages/index.tsx +2 -2
  12. package/src/components/NotificationSetting/index.tsx +85 -0
  13. package/src/components/OrdersOption/index.tsx +54 -56
  14. package/src/components/PaymentOptions/index.tsx +298 -345
  15. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  16. package/src/components/SingleProductReview/index.tsx +7 -4
  17. package/src/components/StripeElementsForm/index.tsx +25 -16
  18. package/src/components/VerifyPhone/styles.tsx +1 -2
  19. package/src/components/shared/OBottomPopup.tsx +6 -2
  20. package/src/components/shared/OToast.tsx +4 -4
  21. package/src/index.tsx +2 -0
  22. package/src/types/@fatnlazycat/react-native-recaptcha-v3/index.d.ts +1 -0
  23. package/src/utils/index.tsx +2 -1
  24. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +260 -238
  25. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
  26. package/themes/business/src/components/BusinessController/index.tsx +2 -2
  27. package/themes/business/src/components/Chat/index.tsx +40 -32
  28. package/themes/business/src/components/DriverMap/index.tsx +7 -5
  29. package/themes/business/src/components/LoginForm/index.tsx +111 -74
  30. package/themes/business/src/components/MapView/index.tsx +12 -1
  31. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  32. package/themes/business/src/components/NewOrderNotification/index.tsx +26 -41
  33. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +40 -30
  34. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +3 -3
  35. package/themes/business/src/components/OrdersListManager/index.tsx +10 -3
  36. package/themes/business/src/components/OrdersOption/index.tsx +76 -77
  37. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  38. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  39. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  40. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  41. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  42. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  43. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  44. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  45. package/themes/business/src/components/PreviousMessages/index.tsx +17 -18
  46. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +250 -0
  47. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  48. package/themes/business/src/components/PreviousOrders/index.tsx +440 -245
  49. package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
  50. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  51. package/themes/business/src/components/ReviewCustomer/index.tsx +39 -15
  52. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  53. package/themes/business/src/components/UserProfileForm/index.tsx +2 -0
  54. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  55. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  56. package/themes/business/src/components/shared/OLink.tsx +24 -12
  57. package/themes/business/src/components/shared/OText.tsx +3 -2
  58. package/themes/business/src/types/index.tsx +25 -11
  59. package/themes/business/src/utils/index.tsx +10 -0
  60. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  61. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  62. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  63. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -1
  64. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  65. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  66. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  67. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  68. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  69. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  70. package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
  71. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  72. package/themes/kiosk/src/types/index.d.ts +2 -0
  73. package/themes/original/index.tsx +8 -0
  74. package/themes/original/src/components/AddressDetails/index.tsx +10 -8
  75. package/themes/original/src/components/AddressForm/index.tsx +153 -137
  76. package/themes/original/src/components/AddressList/index.tsx +1 -1
  77. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  78. package/themes/original/src/components/BusinessBasicInformation/index.tsx +53 -37
  79. package/themes/original/src/components/BusinessController/index.tsx +112 -48
  80. package/themes/original/src/components/BusinessController/styles.tsx +14 -9
  81. package/themes/original/src/components/BusinessInformation/index.tsx +10 -31
  82. package/themes/original/src/components/BusinessItemAccordion/index.tsx +12 -6
  83. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  84. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  85. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  86. package/themes/original/src/components/BusinessListingSearch/index.tsx +80 -138
  87. package/themes/original/src/components/BusinessListingSearch/styles.tsx +10 -12
  88. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  89. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  90. package/themes/original/src/components/BusinessProductsList/index.tsx +59 -61
  91. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  92. package/themes/original/src/components/BusinessProductsListing/index.tsx +177 -81
  93. package/themes/original/src/components/BusinessProductsListing/styles.tsx +14 -12
  94. package/themes/original/src/components/BusinessTypeFilter/index.tsx +3 -2
  95. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  96. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +112 -107
  97. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -9
  98. package/themes/original/src/components/BusinessesListing/index.tsx +17 -10
  99. package/themes/original/src/components/Cart/index.tsx +82 -15
  100. package/themes/original/src/components/Cart/styles.tsx +4 -0
  101. package/themes/original/src/components/CartContent/index.tsx +27 -17
  102. package/themes/original/src/components/CartContent/styles.tsx +1 -1
  103. package/themes/original/src/components/Checkout/index.tsx +115 -118
  104. package/themes/original/src/components/Checkout/styles.tsx +4 -3
  105. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  106. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  107. package/themes/original/src/components/DriverTips/index.tsx +4 -4
  108. package/themes/original/src/components/DriverTips/styles.tsx +2 -1
  109. package/themes/original/src/components/FavoriteList/index.tsx +69 -45
  110. package/themes/original/src/components/FloatingButton/index.tsx +0 -1
  111. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  112. package/themes/original/src/components/GPSButton/index.tsx +20 -19
  113. package/themes/original/src/components/GPSButton/styles.ts +3 -3
  114. package/themes/original/src/components/GoogleMap/index.tsx +10 -1
  115. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +25 -10
  116. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +4 -0
  117. package/themes/original/src/components/HelpGuide/index.tsx +9 -8
  118. package/themes/original/src/components/HelpOrder/index.tsx +9 -8
  119. package/themes/original/src/components/LanguageSelector/index.tsx +19 -14
  120. package/themes/original/src/components/LoginForm/Otp/index.tsx +89 -73
  121. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  122. package/themes/original/src/components/LoginForm/index.tsx +98 -41
  123. package/themes/original/src/components/LottieAnimation/index.tsx +69 -0
  124. package/themes/original/src/components/Messages/index.tsx +35 -20
  125. package/themes/original/src/components/MomentOption/index.tsx +8 -6
  126. package/themes/original/src/components/MultiCart/index.tsx +63 -0
  127. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +92 -93
  128. package/themes/original/src/components/MultiCheckout/index.tsx +10 -2
  129. package/themes/original/src/components/MultiOrdersDetails/index.tsx +34 -16
  130. package/themes/original/src/components/MyOrders/index.tsx +89 -25
  131. package/themes/original/src/components/NavBar/index.tsx +11 -5
  132. package/themes/original/src/components/NetworkError/index.tsx +5 -3
  133. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  134. package/themes/original/src/components/Notifications/index.tsx +148 -0
  135. package/themes/original/src/components/Notifications/styles.tsx +20 -0
  136. package/themes/original/src/components/OrderDetails/index.tsx +132 -18
  137. package/themes/original/src/components/OrderDetails/styles.tsx +15 -2
  138. package/themes/original/src/components/OrderItAgain/index.tsx +75 -0
  139. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  140. package/themes/original/src/components/OrderProgress/index.tsx +77 -66
  141. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  142. package/themes/original/src/components/OrderSummary/index.tsx +2 -35
  143. package/themes/original/src/components/OrderTypeSelector/index.tsx +85 -36
  144. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  145. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +94 -98
  146. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +3 -0
  147. package/themes/original/src/components/OrdersOption/index.tsx +95 -55
  148. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  149. package/themes/original/src/components/PaymentOptions/index.tsx +1 -2
  150. package/themes/original/src/components/PhoneInputNumber/index.tsx +1 -1
  151. package/themes/original/src/components/PlaceSpot/index.tsx +249 -47
  152. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  153. package/themes/original/src/components/PreviousOrders/index.tsx +3 -2
  154. package/themes/original/src/components/ProductForm/index.tsx +367 -384
  155. package/themes/original/src/components/ProductForm/styles.tsx +7 -12
  156. package/themes/original/src/components/ProductItemAccordion/index.tsx +199 -128
  157. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  158. package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
  159. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +0 -1
  160. package/themes/original/src/components/ProfessionalFilter/index.tsx +2 -1
  161. package/themes/original/src/components/ProfessionalProfile/index.tsx +19 -8
  162. package/themes/original/src/components/Promotions/index.tsx +232 -219
  163. package/themes/original/src/components/Promotions/styles.tsx +7 -2
  164. package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
  165. package/themes/original/src/components/ReviewOrder/index.tsx +43 -11
  166. package/themes/original/src/components/ReviewOrder/styles.tsx +7 -0
  167. package/themes/original/src/components/ReviewProducts/index.tsx +8 -5
  168. package/themes/original/src/components/ReviewTrigger/index.tsx +28 -10
  169. package/themes/original/src/components/ReviewTrigger/styles.tsx +10 -3
  170. package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
  171. package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
  172. package/themes/original/src/components/ServiceForm/index.tsx +330 -266
  173. package/themes/original/src/components/SignupForm/index.tsx +134 -89
  174. package/themes/original/src/components/SingleOrderCard/index.tsx +219 -129
  175. package/themes/original/src/components/SingleOrderCard/styles.tsx +10 -8
  176. package/themes/original/src/components/SingleProductCard/index.tsx +116 -72
  177. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -9
  178. package/themes/original/src/components/SingleProductReview/index.tsx +38 -5
  179. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  180. package/themes/original/src/components/StripeElementsForm/index.tsx +13 -2
  181. package/themes/original/src/components/UpsellingProducts/index.tsx +15 -5
  182. package/themes/original/src/components/UserDetails/index.tsx +5 -3
  183. package/themes/original/src/components/UserFormDetails/index.tsx +6 -48
  184. package/themes/original/src/components/UserProfile/index.tsx +58 -35
  185. package/themes/original/src/components/UserProfile/styles.ts +17 -0
  186. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  187. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  188. package/themes/original/src/components/Wallets/index.tsx +176 -164
  189. package/themes/original/src/components/Wallets/styles.tsx +12 -8
  190. package/themes/original/src/components/shared/CardAnimation.tsx +47 -0
  191. package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
  192. package/themes/original/src/components/shared/OBottomPopup.tsx +32 -21
  193. package/themes/original/src/components/shared/OButton.tsx +8 -3
  194. package/themes/original/src/components/shared/OIcon.tsx +8 -1
  195. package/themes/original/src/components/shared/OInput.tsx +10 -1
  196. package/themes/original/src/layouts/Container.tsx +13 -9
  197. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  198. package/themes/original/src/types/index.tsx +63 -8
  199. package/themes/original/src/utils/index.tsx +103 -58
  200. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -28,6 +28,7 @@ import {
28
28
  TimeItem
29
29
  } from './styles';
30
30
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
31
+ import { locale, monthsEnum } from '../../utils';
31
32
 
32
33
  const MomentOptionUI = (props: MomentOptionParams) => {
33
34
  const {
@@ -258,7 +259,7 @@ const MomentOptionUI = (props: MomentOptionParams) => {
258
259
  onActionLeft={() => goToBack()}
259
260
  btnStyle={{ paddingLeft: 0 }}
260
261
  paddingTop={0}
261
- style={{ paddingBottom: 0, flexDirection: 'column', alignItems: 'flex-start' }}
262
+ style={{ paddingBottom: 0 }}
262
263
  title={t('QUESTION_WHEN_ORDER', 'When do you want your order?')}
263
264
  titleAlign={'center'}
264
265
  titleStyle={{ fontSize: 14, marginRight: 0, marginLeft: 0 }}
@@ -281,7 +282,7 @@ const MomentOptionUI = (props: MomentOptionParams) => {
281
282
  style={{ marginEnd: 24 }}
282
283
  />
283
284
  )}
284
- <OText color={optionSelected.isAsap ? theme.colors.textNormal : theme.colors.disabled}>{t('ASAP_ABBREVIATION', 'ASAP') + ` (${moment().format('dddd, MMM D, yyyy h:mm A')} + delivery time)`}</OText>
285
+ <OText color={optionSelected.isAsap ? theme.colors.textNormal : theme.colors.disabled}>{t('ASAP_ABBREVIATION', 'ASAP') + ` (${t(moment().format('dddd')?.toLocaleUpperCase(), moment().format('dddd'))}, ${t(monthsEnum[moment().format('MMM')], moment().format('MMM'))}${moment().format(' D, yyyy h:mm A')} + ${t('DELIVERY_TIME', 'delivery time')})`}</OText>
285
286
  </WrapSelectOption>
286
287
  <WrapSelectOption
287
288
  onPress={() => setOptionSelected({ isAsap: false, isSchedule: true })}
@@ -308,6 +309,7 @@ const MomentOptionUI = (props: MomentOptionParams) => {
308
309
  {selectDate && datesWhitelist[0]?.start !== null && (
309
310
  <CalendarStrip
310
311
  scrollable
312
+ locale={locale}
311
313
  style={styles.calendar}
312
314
  calendarHeaderContainerStyle={styles.calendarHeaderContainer}
313
315
  calendarHeaderStyle={styles.calendarHeader}
@@ -342,12 +344,12 @@ const MomentOptionUI = (props: MomentOptionParams) => {
342
344
  style={{
343
345
  lineHeight: 24
344
346
  }}
345
- >{is12hours ? (
346
- time.startTime.includes('12')
347
+ >{is12hours ? (
348
+ time.startTime.includes('12')
347
349
  ? `${time.startTime}PM`
348
350
  : parseTime(moment(time.startTime, 'HH:mm'), { outputFormat: 'hh:mma' })
349
- ) : time.startTime
350
- }</OText>
351
+ ) : time.startTime
352
+ }</OText>
351
353
  </TimeItem>
352
354
  </TouchableOpacity>
353
355
  ))}
@@ -0,0 +1,63 @@
1
+ import React from 'react'
2
+ import { ChAddress, ChContainer, ChSection, ChUserDetails, DeliveryOptionsContainer } from '../Checkout/styles'
3
+ import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder'
4
+ import { Container } from '../../layouts/Container';
5
+ import { View, StyleSheet } from 'react-native'
6
+ import { useTheme } from 'styled-components/native';
7
+ import { MultiCartCreate } from 'ordering-components/native'
8
+
9
+ export const MultiCartUI = () => {
10
+ const theme = useTheme();
11
+
12
+ const styles = StyleSheet.create({
13
+ pagePadding: {
14
+ paddingHorizontal: 40
15
+ }
16
+ })
17
+
18
+ return (
19
+ <>
20
+ <Container noPadding>
21
+ <ChContainer style={styles.pagePadding}>
22
+ <ChSection>
23
+ <ChUserDetails>
24
+ <Placeholder Animation={Fade}>
25
+ <PlaceholderLine height={20} />
26
+ <PlaceholderLine height={12} />
27
+ <PlaceholderLine height={12} />
28
+ <PlaceholderLine height={12} style={{ marginBottom: 20 }} />
29
+ </Placeholder>
30
+ </ChUserDetails>
31
+ <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40 }} />
32
+ </ChSection>
33
+ <DeliveryOptionsContainer>
34
+ <View style={{ height: 110 }}>
35
+ <Placeholder Animation={Fade}>
36
+ <PlaceholderLine height={20} />
37
+ <PlaceholderLine height={40} />
38
+ </Placeholder>
39
+ </View>
40
+ </DeliveryOptionsContainer>
41
+ <ChSection>
42
+ <ChAddress>
43
+ <Placeholder Animation={Fade}>
44
+ <PlaceholderLine height={20} style={{ marginBottom: 50 }} />
45
+ <PlaceholderLine height={100} />
46
+ </Placeholder>
47
+ </ChAddress>
48
+ <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginTop: 13, marginHorizontal: -40 }} />
49
+ </ChSection>
50
+ </ChContainer>
51
+ </Container>
52
+
53
+ </>
54
+ )
55
+ }
56
+
57
+ export const MultiCart = (props : any) => {
58
+ const mulcartProps = {
59
+ ...props,
60
+ UIComponent: MultiCartUI
61
+ }
62
+ return <MultiCartCreate {...mulcartProps} />
63
+ }
@@ -7,7 +7,7 @@ import {
7
7
  } from 'ordering-components/native'
8
8
  import { useTheme } from 'styled-components/native'
9
9
  import { View, TouchableOpacity, FlatList, StyleSheet, KeyboardAvoidingView, Platform } from 'react-native'
10
- import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder'
10
+ import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder'
11
11
  import { OText, OIcon, OModal, OButton } from '../shared'
12
12
  import { getIconCard, flatArray } from '../../utils'
13
13
  import { StripeElementsForm } from '../StripeElementsForm'
@@ -25,7 +25,6 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
25
25
  businessIds,
26
26
  paymethodsAndWallets,
27
27
  walletsState,
28
- businessPaymethods,
29
28
  paymethodSelected,
30
29
  handleSelectPaymethod,
31
30
  handleSelectWallet,
@@ -37,7 +36,7 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
37
36
  const [{ configs }] = useConfig()
38
37
  const [{ parsePrice }] = useUtils()
39
38
 
40
- const [addCardOpen, setAddCardOpen] = useState({ stripe: false, stripeConnect: false });
39
+ const [addCardOpen, setAddCardOpen] = useState({ stripe: false, stripeConnect: false });
41
40
 
42
41
  const isWalletCashEnabled = configs?.wallet_cash_enabled?.value === '1'
43
42
  const isWalletPointsEnabled = configs?.wallet_credit_point_enabled?.value === '1'
@@ -54,52 +53,52 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
54
53
  }
55
54
 
56
55
  const getPayIcon = (method: string) => {
57
- switch (method) {
58
- case 'cash':
59
- return theme.images.general.cash
60
- case 'card_delivery':
61
- return theme.images.general.carddelivery
62
- case 'paypal':
63
- return theme.images.general.paypal
64
- case 'stripe':
65
- return theme.images.general.stripe
66
- case 'stripe_direct':
67
- return theme.images.general.stripecc
68
- case 'stripe_connect':
69
- return theme.images.general.stripes
70
- case 'stripe_redirect':
71
- return theme.images.general.stripesb
72
- default:
73
- return theme.images.general.creditCard
74
- }
75
- }
56
+ switch (method) {
57
+ case 'cash':
58
+ return theme.images.general.cash
59
+ case 'card_delivery':
60
+ return theme.images.general.carddelivery
61
+ case 'paypal':
62
+ return theme.images.general.paypal
63
+ case 'stripe':
64
+ return theme.images.general.stripe
65
+ case 'stripe_direct':
66
+ return theme.images.general.stripecc
67
+ case 'stripe_connect':
68
+ return theme.images.general.stripes
69
+ case 'stripe_redirect':
70
+ return theme.images.general.stripesb
71
+ default:
72
+ return theme.images.general.creditCard
73
+ }
74
+ }
76
75
 
77
76
  const renderPaymethods = ({ item }: any) => {
78
- return (
79
- <TouchableOpacity
80
- onPress={() => handleSelectPaymethod(item)}
81
- >
82
- <PMItem
83
- key={item.id}
84
- isActive={paymethodSelected?.paymethod_id === item.paymethod_id}
85
- >
86
- <OIcon
87
- src={getPayIcon(item.paymethod?.gateway)}
88
- width={20}
89
- height={20}
90
- color={paymethodSelected?.paymethod_id === item.paymethod_id ? theme.colors.white : theme.colors.backgroundDark}
91
- />
92
- <OText
93
- size={10}
94
- style={{ margin: 0, marginTop: 4 }}
95
- color={paymethodSelected?.paymethod_id === item.paymethod_id ? theme.colors.white : '#000'}
96
- >
97
- {t(item?.paymethod?.gateway.toUpperCase(), item?.paymethod?.name)}
98
- </OText>
99
- </PMItem>
100
- </TouchableOpacity>
101
- )
102
- }
77
+ return (
78
+ <TouchableOpacity
79
+ onPress={() => handleSelectPaymethod({ ...item, paymethod: { gateway: item.gateway }, paymethod_id: item?.id })}
80
+ >
81
+ <PMItem
82
+ key={item.id}
83
+ isActive={paymethodSelected?.id === item.id}
84
+ >
85
+ <OIcon
86
+ src={getPayIcon(item.paymethod?.gateway)}
87
+ width={20}
88
+ height={20}
89
+ color={paymethodSelected?.id === item.id ? theme.colors.white : theme.colors.backgroundDark}
90
+ />
91
+ <OText
92
+ size={10}
93
+ style={{ margin: 0, marginTop: 4 }}
94
+ color={paymethodSelected?.id === item.id ? theme.colors.white : '#000'}
95
+ >
96
+ {t(item?.gateway.toUpperCase(), item?.name)}
97
+ </OText>
98
+ </PMItem>
99
+ </TouchableOpacity>
100
+ )
101
+ }
103
102
 
104
103
  return (
105
104
  <PMContainer>
@@ -123,10 +122,10 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
123
122
  ) : (
124
123
  <FlatList
125
124
  horizontal
126
- showsHorizontalScrollIndicator={false}
127
- data={businessPaymethods.result.filter((paymethod: any) => paymethodsAndWallets.paymethods.find((item: any) => item.id === paymethod.paymethod_id))}
128
- renderItem={renderPaymethods}
129
- keyExtractor={(paymethod: any) => paymethod?.id?.toString?.()}
125
+ showsHorizontalScrollIndicator={false}
126
+ data={paymethodsAndWallets.paymethods}
127
+ renderItem={renderPaymethods}
128
+ keyExtractor={(paymethod: any) => paymethod?.id?.toString?.()}
130
129
  />
131
130
  )}
132
131
  {!paymethodsAndWallets.loading && !paymethodsAndWallets.error && paymethodsAndWallets.paymethods.length === 0 && (
@@ -138,22 +137,22 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
138
137
  {paymethodSelected?.paymethod?.gateway === 'stripe' && (
139
138
  <View>
140
139
  <OButton
141
- text={t('ADD_PAYMENT_CARD', 'Add New Payment Card')}
142
- bgColor={theme.colors.white}
143
- borderColor={theme.colors.primary}
144
- style={styles.btnAddStyle}
145
- textStyle={{ color: theme.colors.primary, fontSize: 12 }}
146
- imgRightSrc={null}
147
- onClick={() => setAddCardOpen({ ...addCardOpen, stripe: true })}
148
- />
140
+ text={t('ADD_PAYMENT_CARD', 'Add New Payment Card')}
141
+ bgColor={theme.colors.white}
142
+ borderColor={theme.colors.primary}
143
+ style={styles.btnAddStyle}
144
+ textStyle={{ color: theme.colors.primary, fontSize: 12 }}
145
+ imgRightSrc={null}
146
+ onClick={() => setAddCardOpen({ ...addCardOpen, stripe: true })}
147
+ />
149
148
  <StripeCardsList
150
- paymethod={paymethodSelected?.paymethod}
151
- businessId={businessIds[0]}
149
+ paymethod={paymethodSelected?.paymethod}
150
+ businessId={businessIds[0]}
152
151
  businessIds={businessIds}
153
- publicKey={paymethodSelected?.data?.publishable}
154
- payType={paymethodSelected?.paymethod?.name}
155
- onSelectCard={handlePaymethodDataChange}
156
- />
152
+ publicKey={paymethodSelected?.data?.publishable}
153
+ payType={paymethodSelected?.paymethod?.name}
154
+ onSelectCard={handlePaymethodDataChange}
155
+ />
157
156
  </View>
158
157
  )}
159
158
 
@@ -170,7 +169,7 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
170
169
  </>
171
170
  ) : (
172
171
  <>
173
- {walletsState.result.filter((wallet: any) => paymethodsAndWallets.wallets.find((item: any) => item.type === wallet.type)).map((wallet: any, idx: any) => walletName[wallet.type]?.isActive && (
172
+ {walletsState?.result?.filter((wallet: any) => paymethodsAndWallets.wallets.find((item: any) => item.type === wallet.type)).map((wallet: any, idx: any) => walletName[wallet.type]?.isActive && (
174
173
  <WalletItem
175
174
  key={wallet.type}
176
175
  isBottomBorder={idx === paymethodsAndWallets.wallets?.length - 1}
@@ -197,40 +196,40 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
197
196
  )}
198
197
 
199
198
  <OModal
200
- entireModal
201
- title={t('ADD_CREDIT_OR_DEBIT_CARD', 'Add credit or debit card')}
202
- open={addCardOpen.stripe}
203
- onClose={() => setAddCardOpen({ ...addCardOpen, stripe: false })}
204
- style={{ backgroundColor: 'red' }}
205
- >
206
- <KeyboardAvoidingView
207
- behavior={Platform.OS == 'ios' ? 'padding' : 'height'}
208
- keyboardVerticalOffset={Platform.OS == 'ios' ? 0 : 0}
209
- enabled={Platform.OS === 'ios' ? true : false}
210
- >
211
- <StripeElementsForm
212
- toSave
213
- businessId={businessIds[0]}
199
+ entireModal
200
+ title={t('ADD_CREDIT_OR_DEBIT_CARD', 'Add credit or debit card')}
201
+ open={addCardOpen.stripe}
202
+ onClose={() => setAddCardOpen({ ...addCardOpen, stripe: false })}
203
+ style={{ backgroundColor: 'red' }}
204
+ >
205
+ <KeyboardAvoidingView
206
+ behavior={Platform.OS == 'ios' ? 'padding' : 'height'}
207
+ keyboardVerticalOffset={Platform.OS == 'ios' ? 0 : 0}
208
+ enabled={Platform.OS === 'ios' ? true : false}
209
+ >
210
+ <StripeElementsForm
211
+ toSave
212
+ businessId={businessIds[0]}
214
213
  businessIds={businessIds}
215
214
  publicKey={paymethodSelected?.data?.publishable}
216
- requirements={props.clientSecret}
217
- onSelectCard={handlePaymethodDataChange}
218
- onCancel={() => setAddCardOpen({ ...addCardOpen, stripe: false })}
219
- />
220
- </KeyboardAvoidingView>
221
- </OModal>
215
+ requirements={props.clientSecret}
216
+ onSelectCard={handlePaymethodDataChange}
217
+ onCancel={() => setAddCardOpen({ ...addCardOpen, stripe: false })}
218
+ />
219
+ </KeyboardAvoidingView>
220
+ </OModal>
222
221
  </PMContainer>
223
222
  )
224
223
  }
225
224
 
226
225
  const styles = StyleSheet.create({
227
- btnAddStyle: {
228
- marginVertical: 20,
229
- borderRadius: 7.6,
230
- shadowOpacity: 0,
231
- height: 44,
232
- borderWidth: 1
233
- },
226
+ btnAddStyle: {
227
+ marginVertical: 20,
228
+ borderRadius: 7.6,
229
+ shadowOpacity: 0,
230
+ height: 44,
231
+ borderWidth: 1
232
+ },
234
233
  })
235
234
 
236
235
 
@@ -53,7 +53,8 @@ const MultiCheckoutUI = (props: any) => {
53
53
  paymethodSelected,
54
54
  handleSelectPaymethod,
55
55
  handleSelectWallet,
56
- handlePaymethodDataChange
56
+ handlePaymethodDataChange,
57
+ cartUuid
57
58
  } = props
58
59
 
59
60
  const theme = useTheme();
@@ -78,7 +79,8 @@ const MultiCheckoutUI = (props: any) => {
78
79
  const configTypes = configs?.order_types_allowed?.value.split('|').map((value: any) => Number(value)) || []
79
80
  const isPreOrder = configs?.preorder_status_enabled?.value === '1'
80
81
  const maximumCarts = 5
81
- const isDisablePlaceOrderButton = !(paymethodSelected?.paymethod_id || paymethodSelected?.wallet_id) || openCarts.length > maximumCarts
82
+ const isDisablePlaceOrderButton = !(paymethodSelected?.paymethod_id || paymethodSelected?.wallet_id) || openCarts.length > maximumCarts || (paymethodSelected?.paymethod?.gateway === 'stripe' && !paymethodSelected?.paymethod_data)
83
+ const walletCarts = (Object.values(carts)?.filter((cart: any) => cart?.products && cart?.products?.length && cart?.status !== 2 && cart?.valid_schedule && cart?.valid_products && cart?.valid_address && cart?.valid_maximum && cart?.valid_minimum && cart?.wallets) || null) || []
82
84
 
83
85
  const [isUserDetailsEdit, setIsUserDetailsEdit] = useState(false);
84
86
  const [phoneUpdate, setPhoneUpdate] = useState(false);
@@ -224,6 +226,7 @@ const MultiCheckoutUI = (props: any) => {
224
226
  handleSelectPaymethod={handleSelectPaymethod}
225
227
  handleSelectWallet={handleSelectWallet}
226
228
  handlePaymethodDataChange={handlePaymethodDataChange}
229
+ cartUuid={cartUuid}
227
230
  />
228
231
  <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginTop: 13, marginHorizontal: -40 }} />
229
232
  </ChSection>
@@ -253,6 +256,11 @@ const MultiCheckoutUI = (props: any) => {
253
256
  </OText>
254
257
  </CCNotCarts>
255
258
  )}
259
+ {walletCarts.length > 0 && (
260
+ <OText size={14} color={theme.colors.danger5} style={{ marginVertical: 20 }}>
261
+ {t('WARNING_PARTIAL_WALLET_CARTS', 'Important: One or more carts can`t be completed due a partial payment with cash/points wallet and requires to be paid individually')}
262
+ </OText>
263
+ )}
256
264
  {openCarts.length > 0 && (
257
265
  <ChCartsTotal>
258
266
  <View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>
@@ -1,11 +1,12 @@
1
1
  import React, { useEffect } from 'react'
2
- import { useLanguage, useUtils, useToast, ToastType, MultiOrdersDetails as MultiOrdersDetailsController } from 'ordering-components/native'
3
- import { View, StyleSheet, BackHandler } from 'react-native'
2
+ import { useLanguage, useUtils, useToast, ToastType, MultiOrdersDetails as MultiOrdersDetailsController } from 'ordering-components/native'
3
+ import { View, StyleSheet, BackHandler, TouchableOpacity } from 'react-native'
4
4
  import { useTheme } from 'styled-components/native'
5
5
  import { OText, OButton } from '../shared'
6
6
  import { Container } from '../../layouts/Container'
7
7
  import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder'
8
8
  import { SingleOrderCard } from './SingleOrderCard'
9
+ import AntDesignIcon from 'react-native-vector-icons/AntDesign'
9
10
 
10
11
  import {
11
12
  OrdersDetailsContainer,
@@ -18,6 +19,7 @@ import {
18
19
  OrdersSummary,
19
20
  BorderLine
20
21
  } from './styles'
22
+ import { NotFoundSource } from '../NotFoundSource'
21
23
 
22
24
  export const MultiOrdersDetailsUI = (props: any) => {
23
25
  const {
@@ -29,20 +31,20 @@ export const MultiOrdersDetailsUI = (props: any) => {
29
31
  } = props
30
32
 
31
33
  const theme = useTheme()
32
- const styles = StyleSheet.create({
34
+ const styles = StyleSheet.create({
33
35
  btnBackArrow: {
34
- borderWidth: 0,
35
- backgroundColor: theme.colors.clear,
36
- shadowColor: theme.colors.clear,
37
- padding: 0,
36
+ borderWidth: 0,
37
+ backgroundColor: theme.colors.clear,
38
+ shadowColor: theme.colors.clear,
39
+ padding: 0,
38
40
  marginLeft: -20
39
- },
40
- })
41
-
41
+ },
42
+ })
43
+
42
44
  const { loading, orders, error } = props.ordersList
43
45
  const [, t] = useLanguage()
44
46
  const [{ parsePrice, parseNumber, parseDate }] = useUtils();
45
- const [, { showToast }] = useToast();
47
+ const [, { showToast }] = useToast();
46
48
 
47
49
  const walletName: any = {
48
50
  cash: {
@@ -60,7 +62,7 @@ export const MultiOrdersDetailsUI = (props: any) => {
60
62
  }
61
63
  navigation.navigate('BusinessList');
62
64
  return true
63
- }
65
+ }
64
66
 
65
67
  const handleGoToOrderDetails = (uuid: any) => {
66
68
  navigation.navigate('OrderDetails', { orderId: uuid })
@@ -68,7 +70,7 @@ export const MultiOrdersDetailsUI = (props: any) => {
68
70
 
69
71
  useEffect(() => {
70
72
  if (error) {
71
- showToast(ToastType.Error, error)
73
+ showToast(ToastType.Error, error)
72
74
  }
73
75
  }, [error])
74
76
 
@@ -83,11 +85,14 @@ export const MultiOrdersDetailsUI = (props: any) => {
83
85
  <OrdersDetailsContainer keyboardShouldPersistTaps="handled" contentContainerStyle={{ paddingHorizontal: 40 }}>
84
86
  <View style={{ flexDirection: 'row' }}>
85
87
  <OButton
86
- imgLeftSrc={theme.images.general.arrow_left}
87
88
  imgRightSrc={null}
88
89
  style={styles.btnBackArrow}
89
90
  onClick={() => handleArrowBack()}
90
- imgLeftStyle={{ tintColor: theme.colors.textNormal, width: 16 }}
91
+ icon={AntDesignIcon}
92
+ iconProps={{
93
+ name: 'arrowleft',
94
+ size: 26
95
+ }}
91
96
  />
92
97
  </View>
93
98
  <Header>
@@ -202,7 +207,7 @@ export const MultiOrdersDetailsUI = (props: any) => {
202
207
  </Row>
203
208
  <Row>
204
209
  <OText size={12} lineHeight={18} weight={'400'} color={theme.colors.textNormal}>
205
- {t('ESTIMATED_TAX_TO_BE_COLLECTED', 'Estimated tax to be collected')}:
210
+ {t('ESTIMATED_TAX_TO_BE_COLLECTED', 'Estimated tax to be collected')}:
206
211
  </OText>
207
212
  <OText size={12} lineHeight={18} weight={'400'} color={theme.colors.textNormal}>
208
213
  {parsePrice(ordersSummary?.tax)}
@@ -244,6 +249,19 @@ export const MultiOrdersDetailsUI = (props: any) => {
244
249
  ))}
245
250
  </>
246
251
  )}
252
+ {!loading && (error || orders?.length === 0) && (
253
+ error?.includes('ERROR_ACCESS_EXPIRED') ? (
254
+ <NotFoundSource
255
+ content={t(error[0], 'Sorry, the order has expired.')}
256
+ />
257
+ ) : (
258
+ <NotFoundSource
259
+ content={t('NOT_FOUND_ORDER', theme?.defaultLanguages?.NOT_FOUND_ORDER || 'Sorry, we couldn\'t find the requested order.')}
260
+ btnTitle={t('ORDERS_REDIRECT', theme?.defaultLanguages?.ORDERS_REDIRECT || 'Go to Orders')}
261
+ onClickButton={navigation.navigate('BusinessList')}
262
+ />
263
+ )
264
+ )}
247
265
  <Divider />
248
266
  </OrdersDetailsContainer>
249
267
  )