ordering-ui-react-native 0.15.33 → 0.15.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 (169) hide show
  1. package/package.json +4 -2
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessController/index.tsx +8 -2
  4. package/src/components/BusinessTypeFilter/index.tsx +4 -1
  5. package/src/components/BusinessesListing/index.tsx +1 -1
  6. package/src/components/Checkout/index.tsx +23 -3
  7. package/src/components/DriverTips/index.tsx +11 -6
  8. package/src/components/LanguageSelector/index.tsx +7 -2
  9. package/src/components/LoginForm/index.tsx +3 -1
  10. package/src/components/OrderDetails/index.tsx +2 -2
  11. package/src/components/PaymentOptions/index.tsx +9 -16
  12. package/src/components/PaymentOptionsWebView/index.tsx +123 -124
  13. package/src/components/SignupForm/index.tsx +3 -1
  14. package/src/components/SingleProductCard/index.tsx +16 -4
  15. package/src/components/StripeElementsForm/index.tsx +27 -48
  16. package/src/components/UpsellingProducts/index.tsx +1 -1
  17. package/src/components/UserProfileForm/index.tsx +63 -6
  18. package/src/components/UserProfileForm/styles.tsx +8 -0
  19. package/src/components/VerifyPhone/styles.tsx +1 -2
  20. package/src/components/shared/OModal.tsx +1 -1
  21. package/src/config.json +0 -2
  22. package/src/hooks/useCountdownTimer.tsx +26 -0
  23. package/src/navigators/HomeNavigator.tsx +6 -0
  24. package/src/pages/BusinessProductsList.tsx +1 -0
  25. package/src/pages/BusinessesListing.tsx +1 -1
  26. package/src/pages/Checkout.tsx +1 -1
  27. package/src/pages/Sessions.tsx +22 -0
  28. package/src/types/index.tsx +5 -11
  29. package/src/utils/index.tsx +68 -1
  30. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +103 -15
  31. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -0
  32. package/themes/business/src/components/Chat/index.tsx +38 -86
  33. package/themes/business/src/components/DriverMap/index.tsx +6 -5
  34. package/themes/business/src/components/Home/index.tsx +128 -55
  35. package/themes/business/src/components/Home/styles.tsx +8 -1
  36. package/themes/business/src/components/LoginForm/index.tsx +89 -2
  37. package/themes/business/src/components/LoginForm/styles.tsx +6 -0
  38. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  39. package/themes/business/src/components/NewOrderNotification/index.tsx +79 -105
  40. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  41. package/themes/business/src/components/OrderDetails/Delivery.tsx +32 -15
  42. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +157 -89
  43. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +6 -0
  44. package/themes/business/src/components/OrderDetails/styles.tsx +7 -0
  45. package/themes/business/src/components/OrdersListManager/index.tsx +52 -49
  46. package/themes/business/src/components/OrdersOption/index.tsx +57 -50
  47. package/themes/business/src/components/PreviousOrders/index.tsx +50 -14
  48. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  49. package/themes/business/src/components/shared/OModal.tsx +1 -1
  50. package/themes/business/src/types/index.tsx +5 -1
  51. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  52. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  53. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  54. package/themes/kiosk/src/components/Cart/index.tsx +99 -25
  55. package/themes/kiosk/src/components/Cart/styles.tsx +6 -0
  56. package/themes/kiosk/src/components/Checkout/index.tsx +34 -22
  57. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  58. package/themes/kiosk/src/components/Intro/index.tsx +12 -12
  59. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  60. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  61. package/themes/kiosk/src/components/OrderDetails/index.tsx +165 -65
  62. package/themes/kiosk/src/components/OrderDetails/styles.tsx +5 -0
  63. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +10 -12
  64. package/themes/kiosk/src/components/PaymentOptions/index.tsx +1 -1
  65. package/themes/kiosk/src/components/ProductForm/index.tsx +2 -2
  66. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +48 -34
  67. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  68. package/themes/kiosk/src/types/index.d.ts +2 -0
  69. package/themes/original/index.tsx +184 -1
  70. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  71. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  72. package/themes/original/src/components/AddressForm/index.tsx +15 -10
  73. package/themes/original/src/components/AddressList/index.tsx +56 -18
  74. package/themes/original/src/components/AppleLogin/index.tsx +117 -78
  75. package/themes/original/src/components/BusinessBasicInformation/index.tsx +96 -45
  76. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +28 -1
  77. package/themes/original/src/components/BusinessController/index.tsx +56 -16
  78. package/themes/original/src/components/BusinessController/styles.tsx +27 -0
  79. package/themes/original/src/components/BusinessFeaturedController/index.tsx +20 -1
  80. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +23 -0
  81. package/themes/original/src/components/BusinessListingSearch/index.tsx +125 -7
  82. package/themes/original/src/components/BusinessListingSearch/styles.tsx +14 -1
  83. package/themes/original/src/components/BusinessMenuList/index.tsx +11 -4
  84. package/themes/original/src/components/BusinessPreorder/index.tsx +142 -122
  85. package/themes/original/src/components/BusinessProductsCategories/index.tsx +9 -7
  86. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  87. package/themes/original/src/components/BusinessProductsList/index.tsx +139 -36
  88. package/themes/original/src/components/BusinessProductsList/styles.tsx +29 -2
  89. package/themes/original/src/components/BusinessProductsListing/index.tsx +111 -14
  90. package/themes/original/src/components/BusinessProductsListing/styles.tsx +22 -0
  91. package/themes/original/src/components/BusinessReviews/index.tsx +4 -25
  92. package/themes/original/src/components/BusinessTypeFilter/index.tsx +1 -2
  93. package/themes/original/src/components/BusinessesListing/index.tsx +85 -45
  94. package/themes/original/src/components/Cart/index.tsx +21 -17
  95. package/themes/original/src/components/CartContent/index.tsx +2 -2
  96. package/themes/original/src/components/Checkout/index.tsx +59 -48
  97. package/themes/original/src/components/DriverTips/index.tsx +17 -12
  98. package/themes/original/src/components/Favorite/index.tsx +91 -0
  99. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  100. package/themes/original/src/components/FavoriteList/index.tsx +287 -0
  101. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  102. package/themes/original/src/components/ForgotPasswordForm/index.tsx +84 -4
  103. package/themes/original/src/components/GPSButton/index.tsx +15 -8
  104. package/themes/original/src/components/GoogleMap/index.tsx +1 -0
  105. package/themes/original/src/components/Help/index.tsx +21 -4
  106. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  107. package/themes/original/src/components/Home/index.tsx +1 -1
  108. package/themes/original/src/components/LastOrders/index.tsx +12 -1
  109. package/themes/original/src/components/LoginForm/Otp/index.tsx +90 -0
  110. package/themes/original/src/components/LoginForm/Otp/styles.tsx +7 -0
  111. package/themes/original/src/components/LoginForm/index.tsx +394 -155
  112. package/themes/original/src/components/LoginForm/styles.tsx +7 -4
  113. package/themes/original/src/components/LogoutButton/index.tsx +7 -1
  114. package/themes/original/src/components/MessageListing/index.tsx +10 -1
  115. package/themes/original/src/components/Messages/index.tsx +6 -1
  116. package/themes/original/src/components/Messages/styles.tsx +1 -3
  117. package/themes/original/src/components/MomentOption/index.tsx +10 -1
  118. package/themes/original/src/components/MomentOption/styles.tsx +1 -1
  119. package/themes/original/src/components/OrderDetails/index.tsx +56 -33
  120. package/themes/original/src/components/OrderDetails/styles.tsx +1 -2
  121. package/themes/original/src/components/OrderProgress/index.tsx +3 -3
  122. package/themes/original/src/components/OrderProgress/styles.tsx +1 -0
  123. package/themes/original/src/components/OrderSummary/index.tsx +3 -3
  124. package/themes/original/src/components/OrderTypeSelector/index.tsx +4 -2
  125. package/themes/original/src/components/OrdersOption/index.tsx +57 -56
  126. package/themes/original/src/components/OrdersOption/styles.tsx +0 -6
  127. package/themes/original/src/components/PaymentOptionCash/index.tsx +2 -2
  128. package/themes/original/src/components/PaymentOptionWallet/index.tsx +22 -24
  129. package/themes/original/src/components/PaymentOptionWallet/styles.tsx +1 -1
  130. package/themes/original/src/components/PaymentOptions/index.tsx +9 -21
  131. package/themes/original/src/components/PhoneInputNumber/index.tsx +1 -1
  132. package/themes/original/src/components/PreviousOrders/index.tsx +18 -145
  133. package/themes/original/src/components/ProductForm/index.tsx +76 -61
  134. package/themes/original/src/components/ProductForm/styles.tsx +0 -1
  135. package/themes/original/src/components/ProductItemAccordion/index.tsx +2 -2
  136. package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -12
  137. package/themes/original/src/components/Promotions/index.tsx +250 -0
  138. package/themes/original/src/components/Promotions/styles.tsx +60 -0
  139. package/themes/original/src/components/SearchBar/index.tsx +4 -1
  140. package/themes/original/src/components/Sessions/index.tsx +160 -0
  141. package/themes/original/src/components/Sessions/styles.tsx +15 -0
  142. package/themes/original/src/components/SignupForm/index.tsx +9 -4
  143. package/themes/original/src/components/SingleOrderCard/index.tsx +282 -0
  144. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  145. package/themes/original/src/components/SingleProductCard/index.tsx +82 -30
  146. package/themes/original/src/components/SingleProductCard/styles.tsx +28 -1
  147. package/themes/original/src/components/StripeElementsForm/index.tsx +55 -74
  148. package/themes/original/src/components/TaxInformation/index.tsx +10 -4
  149. package/themes/original/src/components/UpsellingProducts/index.tsx +86 -74
  150. package/themes/original/src/components/UserDetails/index.tsx +4 -95
  151. package/themes/original/src/components/UserFormDetails/index.tsx +34 -24
  152. package/themes/original/src/components/UserProfile/index.tsx +62 -8
  153. package/themes/original/src/components/UserProfileForm/index.tsx +20 -18
  154. package/themes/original/src/components/UserVerification/index.tsx +178 -192
  155. package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
  156. package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
  157. package/themes/original/src/components/Wallets/index.tsx +76 -9
  158. package/themes/original/src/components/Wallets/styles.tsx +21 -0
  159. package/themes/original/src/components/shared/HeaderTitle.tsx +21 -0
  160. package/themes/original/src/components/shared/OModal.tsx +4 -2
  161. package/themes/original/src/components/shared/index.tsx +2 -0
  162. package/themes/original/src/config/constants.tsx +6 -6
  163. package/themes/original/src/types/index.tsx +107 -9
  164. package/themes/original/src/utils/index.tsx +28 -2
  165. package/themes/single-business/src/components/AddressList/index.tsx +1 -1
  166. package/themes/single-business/src/components/OrderTypeSelector/index.tsx +6 -6
  167. package/themes/single-business/src/components/UserProfile/index.tsx +1 -1
  168. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  169. package/src/components/StripeMethodForm/index.tsx +0 -174
@@ -1,6 +1,6 @@
1
1
  import React, { useState, useEffect } from 'react';
2
2
  import { View, StyleSheet, useWindowDimensions, Keyboard } from 'react-native';
3
- import { useLanguage, useSession, useConfig } from 'ordering-components/native';
3
+ import { useLanguage, useSession } from 'ordering-components/native';
4
4
  import {
5
5
  StripeProvider,
6
6
  CardField,
@@ -13,7 +13,6 @@ import { ErrorMessage } from './styles';
13
13
  import { StripeElementsForm as StripeFormController } from './naked';
14
14
  import { OButton, OText } from '../shared';
15
15
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
16
- import { StripeMethodForm } from '../../../../../src/components/StripeMethodForm';
17
16
 
18
17
  const StripeElementsFormUI = (props: any) => {
19
18
  const {
@@ -23,18 +22,12 @@ const StripeElementsFormUI = (props: any) => {
23
22
  businessId,
24
23
  requirements,
25
24
  stripeTokenHandler,
26
- methodsPay,
27
- paymethod,
28
- onCancel,
29
- cart,
30
- merchantId
31
25
  } = props;
32
26
 
33
27
  const theme = useTheme();
34
28
 
35
29
  const [, t] = useLanguage();
36
30
  const [{ user }] = useSession();
37
- const [{ configs }] = useConfig();
38
31
  const [card, setCard] = useState<any>(null);
39
32
  const [isCompleted, setIsCompleted] = useState(false);
40
33
  const [errors, setErrors] = useState('')
@@ -44,30 +37,30 @@ const StripeElementsFormUI = (props: any) => {
44
37
  const { top, bottom } = useSafeAreaInsets();
45
38
  const [isKeyboardShow, setIsKeyboardShow] = useState(false);
46
39
 
47
- let billingDetails: any = {}
40
+ let billingDetails: any = {}
48
41
 
49
- if (user?.name || user?.lastname) {
50
- if (user?.name) {
51
- billingDetails.name = user?.name
52
- }
53
- if (user?.lastname) {
54
- billingDetails.name = `${billingDetails?.name} ${user?.lastname}`
55
- }
56
- }
42
+ if (user?.name || user?.lastname) {
43
+ if (user?.name) {
44
+ billingDetails.name = user?.name
45
+ }
46
+ if (user?.lastname) {
47
+ billingDetails.name = `${billingDetails?.name} ${user?.lastname}`
48
+ }
49
+ }
57
50
 
58
- if (user?.email) {
59
- billingDetails.email = user?.email
60
- }
51
+ if (user?.email) {
52
+ billingDetails.email = user?.email
53
+ }
61
54
 
62
- if (user?.address) {
63
- billingDetails.addressLine1 = user?.address
64
- }
55
+ if (user?.address) {
56
+ billingDetails.addressLine1 = user?.address
57
+ }
65
58
 
66
59
  const createPayMethod = async () => {
67
- const params: any = { type: 'Card' }
68
- if (Object.keys(billingDetails).length > 0) {
69
- params.billingDetails = billingDetails
70
- }
60
+ const params: any = { type: 'Card' }
61
+ if (Object.keys(billingDetails).length > 0) {
62
+ params.billingDetails = billingDetails
63
+ }
71
64
  try {
72
65
  setCreatePmLoading(true)
73
66
  const { paymentMethod } = await createPaymentMethod(params);
@@ -100,10 +93,10 @@ const StripeElementsFormUI = (props: any) => {
100
93
  createPayMethod();
101
94
  return
102
95
  }
103
- const params: any = { type: 'Card' }
104
- if (Object.keys(billingDetails).length > 0) {
105
- params.billingDetails = billingDetails
106
- }
96
+ const params: any = { type: 'Card' }
97
+ if (Object.keys(billingDetails).length > 0) {
98
+ params.billingDetails = billingDetails
99
+ }
107
100
  try {
108
101
  const { setupIntent, error } = await confirmSetupIntent(requirements, params);
109
102
 
@@ -159,36 +152,27 @@ const StripeElementsFormUI = (props: any) => {
159
152
  <View style={{ ...styles.container, height: height - top - bottom - 60 - (isKeyboardShow ? 250 : 0) }}>
160
153
  {publicKey ? (
161
154
  <View style={{ flex: 1 }}>
162
- <StripeProvider
163
- publishableKey={publicKey}
164
- merchantIdentifier={`merchant.${merchantId}`}
165
- urlScheme={merchantId}
166
- >
167
- {methodsPay?.includes(paymethod) ? (
168
- <StripeMethodForm
169
- handleSource={handleSource}
170
- onCancel={onCancel}
171
- cart={cart}
172
- setErrors={setErrors}
173
- paymethod={paymethod}
174
- devMode={publicKey?.includes('test')}
175
- />
176
- ) : (
177
- <CardField
178
- postalCodeEnabled={true}
179
- cardStyle={{
180
- backgroundColor: '#FFFFFF',
181
- textColor: '#000000',
182
- }}
183
- style={{
184
- width: '100%',
185
- height: 50,
186
- marginVertical: 30,
187
- zIndex: 9999,
188
- }}
189
- onCardChange={(cardDetails: any) => setCard(cardDetails)}
190
- />
191
- )}
155
+ <StripeProvider publishableKey={publicKey}>
156
+ <CardField
157
+ postalCodeEnabled={false}
158
+ cardStyle={{
159
+ backgroundColor: '#FFFFFF',
160
+ textColor: '#000000',
161
+ fontSize: 17,
162
+ styles: {
163
+
164
+ }
165
+ }}
166
+ style={{
167
+ width: '100%',
168
+ height: 50,
169
+ marginVertical: 50,
170
+ borderWidth: 1,
171
+ borderColor: theme.colors.border,
172
+ borderRadius: 7.6,
173
+ }}
174
+ onCardChange={(cardDetails: any) => setCard(cardDetails)}
175
+ />
192
176
  </StripeProvider>
193
177
  {!!errors && (
194
178
  <ErrorMessage>
@@ -213,19 +197,16 @@ const StripeElementsFormUI = (props: any) => {
213
197
  </OText>
214
198
  </ErrorMessage>
215
199
  )}
216
- {!methodsPay?.includes(paymethod) && (
217
- <OButton
218
- text={t('SAVE_CARD', 'Save card')}
219
- bgColor={isCompleted ? theme.colors.primary : theme.colors.backgroundGray}
220
- borderColor={isCompleted ? theme.colors.primary : theme.colors.backgroundGray}
221
- style={styles.btnAddStyle}
222
- textStyle={{ color: 'white' }}
223
- imgRightSrc={null}
224
- onClick={() => handleSaveCard()}
225
- isDisabled={!isCompleted}
226
- isLoading={confirmSetupLoading || values.loadingAdd || createPmLoading}
227
- />
228
- )}
200
+ <OButton
201
+ text={t('SAVE_CARD', 'Save card')}
202
+ bgColor={isCompleted ? theme.colors.primary : theme.colors.backgroundGray}
203
+ borderColor={isCompleted ? theme.colors.primary : theme.colors.backgroundGray}
204
+ style={styles.btnAddStyle}
205
+ textStyle={{ color: 'white', fontSize: 14 }}
206
+ imgRightSrc={null}
207
+ onClick={isCompleted ? () => handleSaveCard() : () => { }}
208
+ isLoading={confirmSetupLoading || values.loadingAdd || createPmLoading}
209
+ />
229
210
  </View>
230
211
  )
231
212
  }
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { useLanguage } from 'ordering-components/native'
2
+ import { useLanguage, useUtils } from 'ordering-components/native'
3
3
  import { SingleProductCard } from '../SingleProductCard'
4
4
  import { TaxInformationContainer, ProductContainer } from './styles'
5
5
  import { OText } from '../shared'
@@ -13,8 +13,9 @@ interface taxInformationParams {
13
13
  fixed?: number,
14
14
  percentage?: number,
15
15
  id: number,
16
- discounts?: any
17
- } | null,
16
+ discounts?: any,
17
+ rate_type?: number
18
+ },
18
19
  products: Array<any>,
19
20
  type: string
20
21
  }
@@ -27,6 +28,7 @@ export const TaxInformation = (props: taxInformationParams) => {
27
28
  } = props
28
29
 
29
30
  const [, t] = useLanguage()
31
+ const [{ parsePrice }] = useUtils()
30
32
 
31
33
  const includedOnPriceString = data?.type === 1 ? `(${t('INCLUDED_ON_PRICE', 'Included on price')})` : `(${t('NOT_INCLUDED_ON_PRICE', 'Not included on price')})`
32
34
  const offersHideArray = ['offer_target_2', 'offer_target_3']
@@ -56,8 +58,12 @@ export const TaxInformation = (props: taxInformationParams) => {
56
58
 
57
59
  return (
58
60
  <TaxInformationContainer>
61
+ <OText size={24} style={{ alignSelf: 'center', textAlign: 'center' }} mBottom={10}>
62
+ {`${data?.name ||
63
+ t('INHERIT_FROM_BUSINESS', 'Inherit from business')} ${data?.rate_type !== 2 ? `(${typeof data?.rate === 'number' ? `${data?.rate}%` : `${parsePrice(data?.fixed ?? 0)} + ${data?.percentage}%`})` : ''} `}
64
+ </OText>
59
65
  {!!data?.description ? (
60
- <OText size={24} style={{ alignSelf: 'center', textAlign: 'center' }} mBottom={10}>
66
+ <OText size={20} style={{ alignSelf: 'center', textAlign: 'center' }} mBottom={10}>
61
67
  {t('DESCRIPTION', 'Description')}: {data?.description} {data?.type && !type?.includes('offer') && includedOnPriceString}
62
68
  </OText>
63
69
  ) : (
@@ -4,7 +4,7 @@ import {
4
4
  UpsellingPage as UpsellingPageController,
5
5
  useUtils,
6
6
  useLanguage,
7
- useOrder
7
+ useOrder
8
8
  } from 'ordering-components/native'
9
9
  import { useTheme } from 'styled-components/native';
10
10
  import { OText, OIcon, OBottomPopup, OButton } from '../shared'
@@ -62,7 +62,19 @@ const UpsellingProductsUI = (props: UpsellingProductsParams) => {
62
62
  borderRadius: 7.6,
63
63
  borderColor: theme.colors.textSecondary,
64
64
  height: 38
65
- }
65
+ },
66
+ headerItem: {
67
+ flexDirection: 'row',
68
+ alignItems: 'center',
69
+ marginVertical: 2,
70
+ marginHorizontal: 20,
71
+ },
72
+ btnBackArrow: {
73
+ borderWidth: 0,
74
+ backgroundColor: theme.colors.clear,
75
+ shadowColor: theme.colors.clear,
76
+ padding: 40,
77
+ },
66
78
  })
67
79
 
68
80
  const [modalIsOpen, setModalIsOpen] = useState(false)
@@ -77,11 +89,11 @@ const UpsellingProductsUI = (props: UpsellingProductsParams) => {
77
89
  ? cart?.products.map((product: any) => product.id)
78
90
  : []
79
91
 
80
- const productsList = !upsellingProducts.loading && !upsellingProducts.error
81
- ? upsellingProducts?.products?.length
82
- ? upsellingProducts?.products.filter((product: any) => !cartProducts.includes(product.id))
83
- : (props?.products ?? []).filter((product: any) => !cartProducts.includes(product.id)) ?? []
84
- : []
92
+ const productsList = !upsellingProducts.loading && !upsellingProducts.error
93
+ ? upsellingProducts?.products?.length
94
+ ? upsellingProducts?.products.filter((product: any) => !cartProducts.includes(product.id))
95
+ : (props?.products ?? []).filter((product: any) => !cartProducts.includes(product.id)) ?? []
96
+ : []
85
97
 
86
98
  useEffect(() => {
87
99
  if (!isCustomMode && !props.products) {
@@ -95,15 +107,11 @@ const UpsellingProductsUI = (props: UpsellingProductsParams) => {
95
107
  }
96
108
  }, [upsellingProducts.loading, upsellingProducts?.products.length])
97
109
 
98
- useEffect(() => {
99
- isCheckout && Object.keys(cart).length === 0 && onNavigationRedirect && onNavigationRedirect('MyOrders')
100
- }, [cart, isCheckout])
101
-
102
110
  const handleFormProduct = (product: any) => {
103
- onNavigationRedirect && onNavigationRedirect('ProductDetails', {
104
- product: product,
105
- businessId: product?.api?.businessId,
106
- businessSlug: business.slug,
111
+ onNavigationRedirect && onNavigationRedirect('ProductDetails', {
112
+ product: product,
113
+ businessId: product?.api?.businessId,
114
+ businessSlug: business.slug,
107
115
  })
108
116
  }
109
117
 
@@ -119,8 +127,8 @@ const UpsellingProductsUI = (props: UpsellingProductsParams) => {
119
127
  !upsellingProducts.loading && (
120
128
  <>
121
129
  {
122
- !upsellingProducts.error ? productsList.map((product: any) => (
123
- <Item key={product.id}>
130
+ !upsellingProducts.error ? productsList.map((product: any, i: number) => (
131
+ <Item key={`${product.id}_${i}`}>
124
132
  <View style={{ flexBasis: '57%' }}>
125
133
  <Details>
126
134
  <OText size={12} lineHeight={18} numberOfLines={1} ellipsizeMode='tail'>{product.name}</OText>
@@ -148,50 +156,54 @@ const UpsellingProductsUI = (props: UpsellingProductsParams) => {
148
156
  )
149
157
  }
150
158
 
151
- const UpsellingContent = () => {
152
- return (
153
- <>
154
- <TopBar style={{ paddingTop: Platform.OS == 'ios' ? 10 : 30 }}>
155
- <TopActions onPress={() => onGoBack()}>
156
- <OIcon src={theme.images.general.arrow_left} width={15} />
157
- </TopActions>
158
- </TopBar>
159
- <ScrollView style={{ marginBottom: props.isPage ? 40 : bottom + (Platform.OS == 'ios' ? 96 : 130) }} showsVerticalScrollIndicator={false}>
159
+ const UpsellingContent = () => {
160
+ return (
161
+ <>
162
+ <View style={{ ...styles.headerItem, flex: 1, marginTop: Platform.OS == 'ios' ? 35 : 70 }}>
163
+ <OButton
164
+ imgLeftSrc={theme.images.general.arrow_left}
165
+ imgRightSrc={null}
166
+ style={styles.btnBackArrow}
167
+ onClick={() => onGoBack()}
168
+ imgLeftStyle={{ tintColor: theme.colors.textNormal, width: 16 }}
169
+ />
170
+ </View>
171
+ <ScrollView style={{ marginTop: 10, marginBottom: props.isPage ? 40 : bottom + (Platform.OS == 'ios' ? 96 : 130) }} showsVerticalScrollIndicator={false}>
160
172
  {productsList.length > 0 &&
161
- <View style={{ paddingHorizontal: 40, overflow: 'visible' }}>
162
- <OText size={16} lineHeight={24} weight={'500'}>{t('WANT_SOMETHING_ELSE', 'Do you want something else?')}</OText>
163
- <UpsellingLayout />
164
- </View>
165
- }
166
- <View style={{ paddingHorizontal: 40 }}>
167
- <OText size={20} lineHeight={30} weight={600} style={{ marginTop: 10, marginBottom: 17 }}>{t('YOUR_CART', 'Your cart')}</OText>
168
- <OrderSummary
169
- cart={cart}
170
- isCartPending={cart?.status === 2}
171
- onNavigationRedirect={onNavigationRedirect}
172
- />
173
- </View>
174
- </ScrollView>
175
- <View
176
- style={{
177
- alignItems: 'center',
178
- bottom: props.isPage ? Platform.OS === 'ios' ? 0 : 20 : Platform.OS === 'ios' ? bottom + 59 : bottom + 125
179
- }}
180
- >
181
- <OButton
182
- imgRightSrc=''
183
- text={t('CHECKOUT', 'Checkout')}
184
- style={{...styles.closeUpsellingButton}}
185
- textStyle={{ color: theme.colors.white, fontSize: 14 }}
186
- onClick={() => {
187
- handleUpsellingPage()
188
- setIsCheckout(true)
189
- }}
190
- />
191
- </View>
192
- </>
193
- )
194
- }
173
+ <View style={{ paddingHorizontal: 40, overflow: 'visible' }}>
174
+ <OText size={16} lineHeight={24} weight={'500'}>{t('WANT_SOMETHING_ELSE', 'Do you want something else?')}</OText>
175
+ <UpsellingLayout />
176
+ </View>
177
+ }
178
+ <View style={{ paddingHorizontal: 40 }}>
179
+ <OText size={20} lineHeight={30} weight={600} style={{ marginTop: 10, marginBottom: 17 }}>{t('YOUR_CART', 'Your cart')}</OText>
180
+ <OrderSummary
181
+ cart={cart}
182
+ isCartPending={cart?.status === 2}
183
+ onNavigationRedirect={onNavigationRedirect}
184
+ />
185
+ </View>
186
+ </ScrollView>
187
+ <View
188
+ style={{
189
+ alignItems: 'center',
190
+ bottom: props.isPage ? Platform.OS === 'ios' ? 0 : 20 : Platform.OS === 'ios' ? bottom + 59 : bottom + 125
191
+ }}
192
+ >
193
+ <OButton
194
+ imgRightSrc=''
195
+ text={t('CHECKOUT', 'Checkout')}
196
+ style={{ ...styles.closeUpsellingButton }}
197
+ textStyle={{ color: theme.colors.white, fontSize: 14 }}
198
+ onClick={() => {
199
+ handleUpsellingPage()
200
+ setIsCheckout(true)
201
+ }}
202
+ />
203
+ </View>
204
+ </>
205
+ )
206
+ }
195
207
 
196
208
  return (
197
209
  <>
@@ -199,20 +211,20 @@ const UpsellingProductsUI = (props: UpsellingProductsParams) => {
199
211
  <UpsellingLayout />
200
212
  ) : (
201
213
  <>
202
- {props.isPage ? (
203
- <UpsellingContent />
204
- ) : (
205
- canOpenUpselling && !modalIsOpen && (
206
- <OBottomPopup
207
- title={''}
208
- open={openUpselling}
209
- onClose={() => handleUpsellingPage()}
210
- isStatusBar
211
- >
212
- <UpsellingContent />
213
- </OBottomPopup>
214
- )
215
- )}
214
+ {props.isPage ? (
215
+ <UpsellingContent />
216
+ ) : (
217
+ canOpenUpselling && !modalIsOpen && (
218
+ <OBottomPopup
219
+ title={''}
220
+ open={openUpselling}
221
+ onClose={() => handleUpsellingPage()}
222
+ isStatusBar
223
+ >
224
+ <UpsellingContent />
225
+ </OBottomPopup>
226
+ )
227
+ )}
216
228
  </>
217
229
  )}
218
230
  </>
@@ -3,17 +3,14 @@ import { TouchableOpacity, View } from 'react-native';
3
3
  import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons';
4
4
 
5
5
  import { UDContainer, UDHeader, UDForm, UDInfo, EditBtn } from './styles';
6
+
6
7
  import {
7
8
  UserFormDetails as UserFormController,
8
9
  useLanguage,
9
10
  useSession,
10
- ToastType,
11
- useToast
12
11
  } from 'ordering-components/native';
13
12
  import { useTheme } from 'styled-components/native';
14
- import { OIcon, OText, OModal } from '../shared';
15
- import { VerifyPhone } from '../VerifyPhone';
16
- import Spinner from 'react-native-loading-spinner-overlay';
13
+ import { OIcon, OText } from '../shared';
17
14
 
18
15
  import { UserFormDetailsUI } from '../UserFormDetails';
19
16
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
@@ -29,33 +26,15 @@ const UserDetailsUI = (props: any) => {
29
26
  isUserDetailsEdit,
30
27
  phoneUpdate,
31
28
  togglePhoneUpdate,
32
- isCheckout,
33
- checkPhoneCodeState,
34
- handleSendVerifyCode,
35
- handleCheckPhoneCode,
36
- verifyPhoneState,
37
- isVerifiedPhone,
38
- setCheckPhoneCodeState
29
+ isCheckout
39
30
  } = props
40
31
 
41
32
  const theme = useTheme();
42
33
 
43
34
  const [, t] = useLanguage()
44
35
  const [{ user }] = useSession()
45
- const [, { showToast }] = useToast();
46
-
47
36
  const userData = props.userData || (!formState.result.error && formState.result?.result) || user
48
37
 
49
- const [isModalVisible, setIsModalVisible] = useState(false);
50
- const [willVerifyOtpState, setWillVerifyOtpState] = useState(false);
51
- const [phoneInputData, setPhoneInputData] = useState({
52
- error: '',
53
- phone: {
54
- country_phone_code: null,
55
- cellphone: null,
56
- },
57
- });
58
-
59
38
 
60
39
  useEffect(() => {
61
40
  if (isUserDetailsEdit) {
@@ -76,54 +55,6 @@ const UserDetailsUI = (props: any) => {
76
55
  }
77
56
  }, [user?.country_phone_code])
78
57
 
79
- const handleVerifyCodeClick = () => {
80
- if (formState?.changes?.cellphone && formState?.changes?.country_phone_code) {
81
- const { cellphone, country_phone_code: countryPhoneCode } = formState?.changes
82
-
83
- setPhoneInputData({
84
- error: '',
85
- phone: {
86
- country_phone_code: countryPhoneCode,
87
- cellphone: cellphone,
88
- },
89
- });
90
- handleSendVerifyCode({
91
- cellphone: cellphone,
92
- country_phone_code: countryPhoneCode
93
- })
94
- }
95
- }
96
-
97
- useEffect(() => {
98
- if (willVerifyOtpState) handleVerifyCodeClick()
99
- }, [willVerifyOtpState])
100
-
101
- useEffect(() => {
102
- if (verifyPhoneState && !verifyPhoneState?.loading) {
103
- if (verifyPhoneState.result?.error) {
104
- const message = typeof verifyPhoneState?.result?.result === 'string'
105
- ? verifyPhoneState?.result?.result
106
- : verifyPhoneState?.result?.result[0]
107
- verifyPhoneState.result?.result && showToast(
108
- ToastType.Error,
109
- message
110
- )
111
- setWillVerifyOtpState(false)
112
- return
113
- }
114
-
115
- const okResult = verifyPhoneState.result?.result === 'OK'
116
- if (okResult) {
117
- !isModalVisible && setIsModalVisible(true)
118
- setWillVerifyOtpState(false)
119
- }
120
- }
121
- }, [verifyPhoneState])
122
-
123
- useEffect(() => {
124
- if (isVerifiedPhone) setIsModalVisible(false)
125
- }, [isVerifiedPhone])
126
-
127
58
  return (
128
59
  <>
129
60
  {(validationFields.loading || formState.loading) && (
@@ -186,32 +117,10 @@ const UserDetailsUI = (props: any) => {
186
117
  )}
187
118
  </UDInfo>
188
119
  ) : (
189
- <UserFormDetailsUI
190
- {...props}
191
- phoneUpdate={phoneUpdate}
192
- togglePhoneUpdate={togglePhoneUpdate}
193
- isCheckout={isCheckout}
194
- setWillVerifyOtpState={setWillVerifyOtpState}
195
- />
120
+ <UserFormDetailsUI {...props} phoneUpdate={phoneUpdate} togglePhoneUpdate={togglePhoneUpdate} isCheckout={isCheckout} />
196
121
  )}
197
122
  </UDContainer>
198
123
  )}
199
- <OModal
200
- open={isModalVisible}
201
- onClose={() => setIsModalVisible(false)}
202
- entireModal
203
- >
204
- <VerifyPhone
205
- phone={phoneInputData.phone}
206
- verifyPhoneState={verifyPhoneState}
207
- checkPhoneCodeState={checkPhoneCodeState}
208
- handleCheckPhoneCode={handleCheckPhoneCode}
209
- setCheckPhoneCodeState={setCheckPhoneCodeState}
210
- handleVerifyCodeClick={handleVerifyCodeClick}
211
- onClose={() => setIsModalVisible(false)}
212
- />
213
- </OModal>
214
- <Spinner visible={verifyPhoneState?.loading} />
215
124
  </>
216
125
  )
217
126
  }