ordering-ui-react-native 0.15.37 → 0.15.38-release

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/package.json +4 -2
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/AddressForm/index.tsx +18 -2
  4. package/src/components/BusinessController/index.tsx +8 -2
  5. package/src/components/BusinessTypeFilter/index.tsx +4 -1
  6. package/src/components/BusinessesListing/index.tsx +1 -1
  7. package/src/components/Checkout/index.tsx +23 -3
  8. package/src/components/DriverTips/index.tsx +11 -6
  9. package/src/components/LanguageSelector/index.tsx +7 -2
  10. package/src/components/LoginForm/index.tsx +3 -1
  11. package/src/components/OrderDetails/index.tsx +2 -2
  12. package/src/components/PaymentOptions/index.tsx +9 -16
  13. package/src/components/PaymentOptionsWebView/index.tsx +123 -124
  14. package/src/components/SignupForm/index.tsx +3 -1
  15. package/src/components/SingleProductCard/index.tsx +16 -4
  16. package/src/components/StripeElementsForm/index.tsx +27 -48
  17. package/src/components/StripeMethodForm/index.tsx +1 -2
  18. package/src/components/UpsellingProducts/index.tsx +1 -1
  19. package/src/components/UserProfileForm/index.tsx +63 -6
  20. package/src/components/UserProfileForm/styles.tsx +8 -0
  21. package/src/components/VerifyPhone/styles.tsx +1 -2
  22. package/src/components/shared/OModal.tsx +1 -1
  23. package/src/config.json +0 -2
  24. package/src/hooks/useCountdownTimer.tsx +26 -0
  25. package/src/navigators/CheckoutNavigator.tsx +6 -0
  26. package/src/navigators/HomeNavigator.tsx +12 -0
  27. package/src/pages/BusinessProductsList.tsx +1 -0
  28. package/src/pages/BusinessesListing.tsx +1 -1
  29. package/src/pages/Checkout.tsx +1 -1
  30. package/src/pages/MultiCheckout.tsx +31 -0
  31. package/src/pages/MultiOrdersDetails.tsx +27 -0
  32. package/src/pages/Sessions.tsx +22 -0
  33. package/src/theme.json +0 -1
  34. package/src/types/index.tsx +5 -11
  35. package/src/utils/index.tsx +68 -1
  36. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +103 -15
  37. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -0
  38. package/themes/business/src/components/Chat/index.tsx +38 -86
  39. package/themes/business/src/components/DriverMap/index.tsx +6 -5
  40. package/themes/business/src/components/Home/index.tsx +128 -55
  41. package/themes/business/src/components/Home/styles.tsx +8 -1
  42. package/themes/business/src/components/LoginForm/index.tsx +89 -2
  43. package/themes/business/src/components/LoginForm/styles.tsx +6 -0
  44. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  45. package/themes/business/src/components/NewOrderNotification/index.tsx +79 -105
  46. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  47. package/themes/business/src/components/OrderDetails/Delivery.tsx +32 -15
  48. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +157 -89
  49. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +6 -0
  50. package/themes/business/src/components/OrderDetails/styles.tsx +7 -0
  51. package/themes/business/src/components/OrdersListManager/index.tsx +52 -49
  52. package/themes/business/src/components/OrdersOption/index.tsx +57 -50
  53. package/themes/business/src/components/PreviousOrders/index.tsx +50 -14
  54. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  55. package/themes/business/src/components/shared/OModal.tsx +1 -1
  56. package/themes/business/src/types/index.tsx +5 -1
  57. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  58. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  59. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  60. package/themes/kiosk/src/components/Cart/index.tsx +99 -25
  61. package/themes/kiosk/src/components/Cart/styles.tsx +6 -0
  62. package/themes/kiosk/src/components/Checkout/index.tsx +34 -22
  63. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  64. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  65. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  66. package/themes/kiosk/src/components/OrderDetails/index.tsx +165 -65
  67. package/themes/kiosk/src/components/OrderDetails/styles.tsx +5 -0
  68. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +10 -12
  69. package/themes/kiosk/src/components/PaymentOptions/index.tsx +1 -1
  70. package/themes/kiosk/src/components/ProductForm/index.tsx +2 -2
  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 +180 -1
  74. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  75. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  76. package/themes/original/src/components/AddressForm/index.tsx +15 -10
  77. package/themes/original/src/components/AddressList/index.tsx +56 -18
  78. package/themes/original/src/components/AppleLogin/index.tsx +117 -78
  79. package/themes/original/src/components/BusinessBasicInformation/index.tsx +96 -45
  80. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +28 -1
  81. package/themes/original/src/components/BusinessController/index.tsx +56 -19
  82. package/themes/original/src/components/BusinessController/styles.tsx +27 -0
  83. package/themes/original/src/components/BusinessFeaturedController/index.tsx +20 -1
  84. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +23 -0
  85. package/themes/original/src/components/BusinessItemAccordion/index.tsx +8 -5
  86. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  87. package/themes/original/src/components/BusinessListingSearch/index.tsx +200 -58
  88. package/themes/original/src/components/BusinessListingSearch/styles.tsx +22 -2
  89. package/themes/original/src/components/BusinessMenuList/index.tsx +11 -4
  90. package/themes/original/src/components/BusinessPreorder/index.tsx +142 -122
  91. package/themes/original/src/components/BusinessProductsCategories/index.tsx +9 -7
  92. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  93. package/themes/original/src/components/BusinessProductsList/index.tsx +139 -36
  94. package/themes/original/src/components/BusinessProductsList/styles.tsx +29 -2
  95. package/themes/original/src/components/BusinessProductsListing/index.tsx +116 -26
  96. package/themes/original/src/components/BusinessProductsListing/styles.tsx +22 -0
  97. package/themes/original/src/components/BusinessReviews/index.tsx +4 -25
  98. package/themes/original/src/components/BusinessTypeFilter/index.tsx +1 -2
  99. package/themes/original/src/components/BusinessesListing/index.tsx +127 -67
  100. package/themes/original/src/components/BusinessesListing/styles.tsx +11 -3
  101. package/themes/original/src/components/Cart/index.tsx +60 -43
  102. package/themes/original/src/components/CartContent/index.tsx +2 -2
  103. package/themes/original/src/components/Checkout/index.tsx +49 -35
  104. package/themes/original/src/components/DriverTips/index.tsx +17 -12
  105. package/themes/original/src/components/Favorite/index.tsx +91 -0
  106. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  107. package/themes/original/src/components/FavoriteList/index.tsx +287 -0
  108. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  109. package/themes/original/src/components/ForgotPasswordForm/index.tsx +84 -4
  110. package/themes/original/src/components/GPSButton/index.tsx +15 -8
  111. package/themes/original/src/components/GoogleMap/index.tsx +1 -0
  112. package/themes/original/src/components/Help/index.tsx +21 -4
  113. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  114. package/themes/original/src/components/Home/index.tsx +1 -1
  115. package/themes/original/src/components/LastOrders/index.tsx +12 -1
  116. package/themes/original/src/components/LoginForm/Otp/index.tsx +90 -0
  117. package/themes/original/src/components/LoginForm/Otp/styles.tsx +7 -0
  118. package/themes/original/src/components/LoginForm/index.tsx +394 -155
  119. package/themes/original/src/components/LoginForm/styles.tsx +7 -4
  120. package/themes/original/src/components/LogoutButton/index.tsx +7 -1
  121. package/themes/original/src/components/MessageListing/index.tsx +10 -1
  122. package/themes/original/src/components/Messages/index.tsx +6 -1
  123. package/themes/original/src/components/Messages/styles.tsx +1 -3
  124. package/themes/original/src/components/MomentOption/index.tsx +10 -1
  125. package/themes/original/src/components/MomentOption/styles.tsx +1 -1
  126. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  127. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  128. package/themes/original/src/components/MultiCheckout/index.tsx +298 -0
  129. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  130. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  131. package/themes/original/src/components/MultiOrdersDetails/index.tsx +258 -0
  132. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  133. package/themes/original/src/components/MyOrders/index.tsx +120 -32
  134. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  135. package/themes/original/src/components/OrderDetails/index.tsx +50 -35
  136. package/themes/original/src/components/OrderDetails/styles.tsx +1 -2
  137. package/themes/original/src/components/OrderProgress/index.tsx +3 -3
  138. package/themes/original/src/components/OrderProgress/styles.tsx +1 -0
  139. package/themes/original/src/components/OrderSummary/index.tsx +3 -3
  140. package/themes/original/src/components/OrderTypeSelector/index.tsx +4 -2
  141. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +153 -0
  142. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  143. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +53 -0
  144. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  145. package/themes/original/src/components/OrdersOption/index.tsx +133 -41
  146. package/themes/original/src/components/OrdersOption/styles.tsx +4 -7
  147. package/themes/original/src/components/PaymentOptionCash/index.tsx +2 -2
  148. package/themes/original/src/components/PaymentOptionWallet/index.tsx +22 -24
  149. package/themes/original/src/components/PaymentOptionWallet/styles.tsx +1 -1
  150. package/themes/original/src/components/PaymentOptions/index.tsx +9 -21
  151. package/themes/original/src/components/PhoneInputNumber/index.tsx +1 -1
  152. package/themes/original/src/components/PreviousOrders/index.tsx +18 -145
  153. package/themes/original/src/components/ProductForm/index.tsx +74 -66
  154. package/themes/original/src/components/ProductForm/styles.tsx +0 -1
  155. package/themes/original/src/components/ProductItemAccordion/index.tsx +2 -2
  156. package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -12
  157. package/themes/original/src/components/Promotions/index.tsx +250 -0
  158. package/themes/original/src/components/Promotions/styles.tsx +60 -0
  159. package/themes/original/src/components/SearchBar/index.tsx +10 -4
  160. package/themes/original/src/components/Sessions/index.tsx +160 -0
  161. package/themes/original/src/components/Sessions/styles.tsx +15 -0
  162. package/themes/original/src/components/SignupForm/index.tsx +9 -4
  163. package/themes/original/src/components/SingleOrderCard/index.tsx +282 -0
  164. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  165. package/themes/original/src/components/SingleProductCard/index.tsx +95 -32
  166. package/themes/original/src/components/SingleProductCard/styles.tsx +28 -1
  167. package/themes/original/src/components/StripeElementsForm/index.tsx +10 -2
  168. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  169. package/themes/original/src/components/TaxInformation/index.tsx +10 -4
  170. package/themes/original/src/components/UpsellingProducts/index.tsx +86 -74
  171. package/themes/original/src/components/UserDetails/index.tsx +5 -96
  172. package/themes/original/src/components/UserFormDetails/index.tsx +34 -24
  173. package/themes/original/src/components/UserProfile/index.tsx +62 -8
  174. package/themes/original/src/components/UserProfileForm/index.tsx +20 -18
  175. package/themes/original/src/components/UserVerification/index.tsx +178 -192
  176. package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
  177. package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
  178. package/themes/original/src/components/Wallets/index.tsx +76 -9
  179. package/themes/original/src/components/Wallets/styles.tsx +21 -0
  180. package/themes/original/src/components/shared/HeaderTitle.tsx +21 -0
  181. package/themes/original/src/components/shared/OModal.tsx +4 -2
  182. package/themes/original/src/components/shared/index.tsx +2 -0
  183. package/themes/original/src/config/constants.tsx +6 -6
  184. package/themes/original/src/types/index.tsx +132 -9
  185. package/themes/original/src/utils/index.tsx +28 -2
  186. package/themes/single-business/src/components/AddressList/index.tsx +1 -1
  187. package/themes/single-business/src/components/OrderTypeSelector/index.tsx +1 -1
  188. package/themes/single-business/src/components/UserProfile/index.tsx +1 -1
  189. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ordering-ui-react-native",
3
- "version": "0.15.37",
3
+ "version": "0.15.38-release",
4
4
  "description": "Reusable components made in react native",
5
5
  "main": "src/index.tsx",
6
6
  "author": "ordering.inc",
@@ -57,7 +57,7 @@
57
57
  "@types/styled-components": "^5.1.3",
58
58
  "axios": "^0.21.0",
59
59
  "moment": "^2.29.1",
60
- "ordering-components": "github:Ordering-Inc/ordering-components#development",
60
+ "ordering-components": "github:Ordering-Inc/ordering-components#release",
61
61
  "patch-package": "^6.4.7",
62
62
  "postinstall-postinstall": "^2.1.0",
63
63
  "prop-types": "^15.7.2",
@@ -99,6 +99,7 @@
99
99
  "react-native-picker-select": "^8.0.4",
100
100
  "react-native-print": "^0.9.0",
101
101
  "react-native-reanimated": "^1.13.1",
102
+ "react-native-recaptcha-that-works": "^1.2.0",
102
103
  "react-native-restart": "^0.0.22",
103
104
  "react-native-safe-area-context": "^3.1.8",
104
105
  "react-native-screens": "^2.11.0",
@@ -108,6 +109,7 @@
108
109
  "react-native-sound": "^0.11.1",
109
110
  "react-native-swipe-gestures": "^1.0.5",
110
111
  "react-native-swiper": "^1.6.0",
112
+ "react-native-tracking-transparency": "^0.1.1",
111
113
  "react-native-uuid": "^2.0.1",
112
114
  "react-native-vector-icons": "^7.1.0",
113
115
  "react-native-webview": "^11.6.4",
@@ -7,7 +7,8 @@
7
7
  */
8
8
 
9
9
  import * as React from 'react';
10
- import { LogBox } from 'react-native';
10
+ import { LogBox, Platform } from 'react-native';
11
+ import * as Sentry from "@sentry/react-native";
11
12
  import { OrderingProvider } from 'ordering-components/native';
12
13
  import RNBootSplash from "react-native-bootsplash";
13
14
 
@@ -22,6 +23,47 @@ import theme from './theme.json';
22
23
  import AppContainer from './AppContainer';
23
24
  import { FacebookPixel } from './components/FacebookPixel';
24
25
 
26
+ Sentry.init({
27
+ environment: Platform.OS === 'ios' ? 'ios' : 'android',
28
+ dsn: 'https://e5e1115dc93b49109f4ab65f2098bef9@o460529.ingest.sentry.io/5722123',
29
+ release: 'ordering-ui-native@' + process.env.npm_package_version,
30
+ ignoreErrors: [
31
+ 'is not defined',
32
+ 'is not a function',
33
+ 'can\'t find variable',
34
+ 'objects are not valid',
35
+ 'element type is invalid',
36
+ 'requiring module',
37
+ 'has not been registered',
38
+ 'failed to connect to debugger!',
39
+ 'rendered more hooks than',
40
+ 'rendered fewer hooks than',
41
+ 'should have a queue',
42
+ 'the OS most likely terminated',
43
+ 'Connection timed out',
44
+ 'java.io.EOFException',
45
+ 'Abort',
46
+ 'Segfault',
47
+ 'Failed to allocate a',
48
+ 'Application Not Responding',
49
+ 'connection no longer valid',
50
+ 'IllegalInstruction',
51
+ 'React.Children.only expected to receive a single React element child.',
52
+ 'unrecognized selector sent to instance'
53
+ ],
54
+ tracesSampleRate: 0.2,
55
+ // Release health
56
+ enableAutoSessionTracking: true,
57
+ // Sessions close after app is 10 seconds in the background.
58
+ sessionTrackingIntervalMillis: 10000,
59
+
60
+ integrations: [
61
+ new Sentry.ReactNativeTracing({
62
+ routingInstrumentation: reactNavigationV5Instrumentation,
63
+ })
64
+ ]
65
+ });
66
+
25
67
  LogBox.ignoreLogs([
26
68
  'Sending \`onAnimatedValueUpdate` with no listeners registered.',
27
69
  'Non-serializable values were found in the navigation state.',
@@ -210,9 +210,25 @@ const AddressFormUI = (props: AddressFormParams) => {
210
210
  }
211
211
  if ( addressType === 'postal_code') {
212
212
  postalCode = component.short_name
213
+ if (isObjet) {
214
+ setValue('zipcode', postalCode)
215
+ handleChangeInput({ target: { name: 'zipcode', value: postalCode } })
216
+ }
213
217
  }
214
218
  }
215
219
  isObjet ? address = addressValue.join(', ') : address
220
+
221
+ if (isObjet) {
222
+ setValue('address', address)
223
+ googleInput?.current?.setAddressText(address)
224
+ setLoadingLocation(false)
225
+ updateChanges({
226
+ address: address,
227
+ location: json.results[0].geometry.location
228
+ })
229
+ return
230
+ }
231
+
216
232
  data.address = {
217
233
  address,
218
234
  location: json.results[0].geometry.location,
@@ -597,7 +613,7 @@ const AddressFormUI = (props: AddressFormParams) => {
597
613
  name='zipcode'
598
614
  rules={{ required: isRequiredField && isRequiredField('zipcode') ? t(`VALIDATION_ERROR_ZIP_CODE_REQUIRED`, `The field Zip Code is required`) : null }}
599
615
  defaultValue={address?.zipcode || formState.changes?.zipcode || addressState.address.zipcode || ''}
600
- render={() => (
616
+ render={({ value }) => (
601
617
  <OInput
602
618
  name='zipcode'
603
619
  placeholder={t('ZIP_CODE', 'Zip code')}
@@ -605,7 +621,7 @@ const AddressFormUI = (props: AddressFormParams) => {
605
621
  handleChangeInput(text)
606
622
  setValue('zipcode', text)
607
623
  }}
608
- value={address?.zipcode || formState.changes?.zipcode || addressState.address.zipcode || ''}
624
+ value={value || address?.zipcode || formState.changes?.zipcode || addressState.address.zipcode || ''}
609
625
  style={styles.inputsStyle}
610
626
  forwardRef={zipCodeRef}
611
627
  returnKeyType='next'
@@ -32,6 +32,7 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
32
32
  business,
33
33
  handleClick,
34
34
  isBusinessOpen,
35
+ getBusinessOffer,
35
36
  businessWillCloseSoonMinutes,
36
37
  isBusinessClose
37
38
  } = props;
@@ -145,9 +146,14 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
145
146
  />
146
147
  </BusinessLogo>
147
148
  <BusinessState>
148
- {!isBusinessOpen && (
149
+ {(isBusinessOpen || !!getBusinessOffer(business?.offers)) && (
149
150
  <View style={styles.businessStateView}>
150
- <OText color={theme.colors.white} size={20} style={styles.businessStateText}>
151
+ {getBusinessOffer(business?.offers) && (
152
+ <OText color={theme.colors.white} size={18} style={styles.businessStateText}>
153
+ {getBusinessOffer(business?.offers) || parsePrice(0)}
154
+ </OText>
155
+ )}
156
+ <OText color={theme.colors.white} size={18} style={styles.businessStateText}>
151
157
  {t('PREORDER', 'PREORDER')}
152
158
  </OText>
153
159
  </View>
@@ -1,5 +1,5 @@
1
1
  import React, { useState } from 'react'
2
- import { StyleSheet, View, ScrollView, TouchableOpacity, Dimensions, Platform, PlatformIOSStatic } from 'react-native'
2
+ import { StyleSheet, View, ScrollView, Dimensions, Platform, PlatformIOSStatic, Pressable } from 'react-native'
3
3
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder'
4
4
  import { BusinessTypeFilter as BusinessTypeFilterController, useLanguage } from 'ordering-components/native'
5
5
 
@@ -9,6 +9,7 @@ import { BusinessTypeFilterParams } from '../../types'
9
9
  import { useTheme } from 'styled-components/native'
10
10
  import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons';
11
11
  import DeviceInfo from 'react-native-device-info';
12
+ import { TouchableOpacity } from 'react-native-gesture-handler'
12
13
 
13
14
  const windowWidth = Dimensions.get('window').width;
14
15
 
@@ -71,11 +72,13 @@ export const BusinessTypeFilterUI = (props: BusinessTypeFilterParams) => {
71
72
  <OIcon
72
73
  url={item.image}
73
74
  style={styles.logo}
75
+ cover
74
76
  />
75
77
  ) : (
76
78
  <OIcon
77
79
  src={theme.images.categories.all}
78
80
  style={styles.logo}
81
+ cover
79
82
  />
80
83
  )}
81
84
  <OText
@@ -191,7 +191,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
191
191
  {isFarAway && (
192
192
  <FarAwayMessage style={styles.farAwayMsg}>
193
193
  <Ionicons name='md-warning-outline' style={styles.iconStyle} />
194
- <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'You are far from this address')}</OText>
194
+ <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'Your are far from this address')}</OText>
195
195
  </FarAwayMessage>
196
196
  )}
197
197
  </OrderControlContainer>
@@ -529,7 +529,6 @@ const CheckoutUI = (props: any) => {
529
529
  paySelected={paymethodSelected}
530
530
  handlePaymentMethodClickCustom={handlePaymentMethodClick}
531
531
  setCardData={setCardData}
532
- handlePlaceOrder={handlePlaceOrder}
533
532
  />
534
533
  </ChPaymethods>
535
534
  </ChSection>
@@ -592,6 +591,19 @@ const CheckoutUI = (props: any) => {
592
591
  {t('WARNING_INVALID_PRODUCTS', 'Some products are invalid, please check them.')}
593
592
  </OText>
594
593
  )}
594
+
595
+ {options.type === 1 &&
596
+ validationFields?.fields?.checkout?.driver_tip?.enabled &&
597
+ validationFields?.fields?.checkout?.driver_tip?.required &&
598
+ (Number(cart?.driver_tip) <= 0) && (
599
+ <OText
600
+ style={{ textAlign: 'center' }}
601
+ color={theme.colors.error}
602
+ size={14}
603
+ >
604
+ {t('WARNING_INVALID_DRIVER_TIP', 'Driver Tip is required.')}
605
+ </OText>
606
+ )}
595
607
  </ChErrors>
596
608
  </ChSection>
597
609
  )}
@@ -602,8 +614,16 @@ const CheckoutUI = (props: any) => {
602
614
  <>
603
615
  <FloatingButton
604
616
  handleClick={() => handlePlaceOrder()}
605
- isSecondaryBtn={loading || !cart?.valid || !paymethodSelected || placing || errorCash || cart?.subtotal_to_calculate < cart?.minimum || paymethodSelected?.gateway === 'paypal'}
606
- disabled={loading || !cart?.valid || !paymethodSelected || placing || errorCash || cart?.subtotal_to_calculate < cart?.minimum || paymethodSelected?.gateway === 'paypal'}
617
+ isSecondaryBtn={loading || !cart?.valid || !paymethodSelected || placing || errorCash || cart?.subtotal_to_calculate < cart?.minimum || paymethodSelected?.gateway === 'paypal' ||
618
+ (options.type === 1 &&
619
+ validationFields?.fields?.checkout?.driver_tip?.enabled &&
620
+ validationFields?.fields?.checkout?.driver_tip?.required &&
621
+ (Number(cart?.driver_tip) <= 0))}
622
+ disabled={loading || !cart?.valid || !paymethodSelected || placing || errorCash || cart?.subtotal_to_calculate < cart?.minimum || paymethodSelected?.gateway === 'paypal' ||
623
+ (options.type === 1 &&
624
+ validationFields?.fields?.checkout?.driver_tip?.enabled &&
625
+ validationFields?.fields?.checkout?.driver_tip?.required &&
626
+ (Number(cart?.driver_tip) <= 0))}
607
627
  btnText={cart?.subtotal_to_calculate >= cart?.minimum
608
628
  ? (
609
629
  placing
@@ -49,7 +49,7 @@ const DriverTipsUI = (props: any) => {
49
49
  const [{ configs }] = useConfig();
50
50
  const [{loading}] = useOrder()
51
51
 
52
- const [value, setvalue] = useState(0);
52
+ const [value, setvalue] = useState('');
53
53
  const [valueOption,setValueOption] = useState(0)
54
54
 
55
55
  const placeholderCurrency = (configs?.currency_position?.value || 'left') === 'left'
@@ -57,9 +57,12 @@ const DriverTipsUI = (props: any) => {
57
57
  : `0${configs?.format_number_currency?.value}`
58
58
 
59
59
  const handleChangeDriverTip = (val: any) => {
60
- let tip = parseFloat(val)
61
- tip = isNaN(tip) ? 0 : tip
62
- setvalue(tip)
60
+ const tip = Number(val)
61
+ if ((isNaN(tip) || tip < 0)) {
62
+ setvalue(value)
63
+ return
64
+ }
65
+ setvalue(val)
63
66
  }
64
67
 
65
68
  const handleChangeOptionCustom = (val : any) => {
@@ -110,6 +113,8 @@ const DriverTipsUI = (props: any) => {
110
113
  <OInput
111
114
  placeholder={placeholderCurrency}
112
115
  style={style.inputStyle}
116
+ value={value}
117
+ type={'numeric'}
113
118
  onChange={handleChangeDriverTip}
114
119
  autoCapitalize='none'
115
120
  autoCorrect={false}
@@ -121,10 +126,10 @@ const DriverTipsUI = (props: any) => {
121
126
  textStyle={{ color: 'white', fontSize: 18, maxWidth: 110, minWidth: 60 }}
122
127
  imgRightSrc={null}
123
128
  textProps={{numberOfLines: 1}}
124
- isDisabled={!(value > 0 && value !== driverTip) || !value}
129
+ isDisabled={parseFloat(value || '0') < 0 || parseFloat(value || '0') === driverTip || value === ''}
125
130
  onClick={() => {
126
131
  handlerChangeOption(value)
127
- setvalue(0)
132
+ setvalue('')
128
133
  }}
129
134
  />
130
135
  </DTWrapperInput>
@@ -1,4 +1,4 @@
1
- import React, { useState } from 'react'
1
+ import React, { useEffect, useState } from 'react'
2
2
  import { LanguageSelector as LanguageSelectorController, useOrder } from 'ordering-components/native'
3
3
  import { useTheme } from 'styled-components/native';
4
4
  import { I18nManager, Platform, StyleSheet, View } from 'react-native'
@@ -87,7 +87,11 @@ const LanguageSelectorUI = (props: LanguageSelectorParams) => {
87
87
  changeDirection(Platform.OS === 'ios' ? language : langCode)
88
88
  handleChangeLanguage(Platform.OS === 'ios' ? language : langCode)
89
89
  }
90
-
90
+
91
+ useEffect(() => {
92
+ changeDirection(currentLanguage)
93
+ }, [])
94
+
91
95
  return (
92
96
  <Container>
93
97
  {languagesState?.languages ? (
@@ -101,6 +105,7 @@ const LanguageSelectorUI = (props: LanguageSelectorParams) => {
101
105
  disabled={orderState.loading}
102
106
  onClose={() => Platform.OS === 'ios' ? handlerChangeLanguage() : {}}
103
107
  onDonePress={() => handlerChangeLanguage()}
108
+ fixAndroidTouchableBug={true}
104
109
  />
105
110
  ) : <DummyContainer />}
106
111
  </Container>
@@ -92,6 +92,8 @@ const LoginFormUI = (props: LoginParams) => {
92
92
 
93
93
  const inputRef = useRef<any>({})
94
94
 
95
+ const googleLoginEnabled = configs?.google_login_enabled?.value === '1' || !configs?.google_login_enabled?.enabled
96
+
95
97
  const anySocialButtonActivated = ((configs?.facebook_login?.value === 'true' || configs?.facebook_login?.value === '1') && configs?.facebook_id?.value) ||
96
98
  (configs?.google_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null) ||
97
99
  (configs?.apple_login_client_id?.value !== '' && configs?.apple_login_client_id?.value !== null)
@@ -381,7 +383,7 @@ const LoginFormUI = (props: LoginParams) => {
381
383
  handleSuccessFacebookLogin={handleSuccessFacebook}
382
384
  />
383
385
  )}
384
- {(configs?.google_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null) && (
386
+ {(configs?.google_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null) && googleLoginEnabled && (
385
387
  <GoogleLogin
386
388
  notificationState={notificationState}
387
389
  webClientId={configs?.google_login_client_id?.value}
@@ -514,7 +514,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
514
514
  </Table>
515
515
  )}
516
516
  {
517
- order?.taxes?.length === 0 && order?.tax_type === 2 && (
517
+ order?.taxes?.length === 0 && order?.tax_type === 2 && order?.summary?.tax > 0 && (
518
518
  <Table>
519
519
  <OText>
520
520
  {t('TAX', 'Tax')} {`(${verifyDecimals(order?.tax, parseNumber)}%)`}
@@ -524,7 +524,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
524
524
  )
525
525
  }
526
526
  {
527
- order?.fees?.length === 0 && (
527
+ order?.fees?.length === 0 && order?.summary?.service_fee > 0 && (
528
528
  <Table>
529
529
  <OText>
530
530
  {t('SERVICE_FEE', 'Service fee')}
@@ -61,13 +61,12 @@ const PaymentOptionsUI = (props: any) => {
61
61
  handlePaymethodDataChange,
62
62
  handlePaymentMethodClickCustom,
63
63
  isOpenMethod,
64
- setCardData,
65
- handlePlaceOrder
64
+ setCardData
66
65
  } = props
67
66
 
68
67
  const theme = useTheme();
69
68
  const [, t] = useLanguage();
70
- const methodsPay = ['google_pay', 'apple_pay']
69
+ const methodsPay = ['google_pay']
71
70
  const stripeDirectMethods = ['stripe_direct', ...methodsPay]
72
71
 
73
72
  const [addCardOpen, setAddCardOpen] = useState({ stripe: false, stripeConnect: false });
@@ -122,11 +121,8 @@ const PaymentOptionsUI = (props: any) => {
122
121
  }, [props.paySelected])
123
122
 
124
123
  useEffect(() => {
125
- setCardData && setCardData(paymethodData)
126
- if (methodsPay.includes(paymethodSelected?.gateway) && paymethodData?.id && paymethodSelected?.data?.card) {
127
- handlePlaceOrder()
128
- }
129
- }, [paymethodData, paymethodSelected])
124
+ setCardData(paymethodData)
125
+ }, [paymethodData])
130
126
 
131
127
  const renderPaymethods = ({ item }: any) => {
132
128
  return (
@@ -156,7 +152,7 @@ const PaymentOptionsUI = (props: any) => {
156
152
  )
157
153
  }
158
154
 
159
- const excludeGateway: any = ['stripe_connect', 'stripe_redirect']; //exclude connect & redirect
155
+ const excludeGateway: any = ['stripe_connect', 'stripe_redirect', 'apple_pay']; //exclude connect & redirect & apple pay
160
156
 
161
157
  return (
162
158
  <PMContainer>
@@ -285,11 +281,11 @@ const PaymentOptionsUI = (props: any) => {
285
281
  </KeyboardAvoidingView>
286
282
  </OModal>
287
283
 
288
- {/* Stripe direct, Google pay, Apple pay */}
284
+ {/* Stripe direct */}
289
285
  <OModal
290
286
  entireModal
291
287
  title={t('ADD_CREDIT_OR_DEBIT_CARD', 'Add credit or debit card')}
292
- open={stripeDirectMethods?.includes(isOpenMethod?.paymethod?.gateway) && !paymethodData.id}
288
+ open={isOpenMethod?.paymethod?.gateway === 'stripe_direct' && !paymethodData?.id}
293
289
  onClose={() => handlePaymethodClick(null)}
294
290
  >
295
291
  <KeyboardAvoidingView
@@ -298,13 +294,10 @@ const PaymentOptionsUI = (props: any) => {
298
294
  enabled={Platform.OS === 'ios' ? true : false}
299
295
  >
300
296
  <StripeElementsForm
301
- cart={cart}
302
- paymethod={isOpenMethod?.paymethod?.gateway}
303
- methodsPay={methodsPay}
304
297
  businessId={props.businessId}
305
- publicKey={isOpenMethod?.paymethod?.credentials?.publishable || isOpenMethod?.paymethod?.credentials?.publishable_key}
298
+ publicKey={isOpenMethod?.paymethod?.credentials?.publishable}
306
299
  handleSource={handlePaymethodDataChange}
307
- onCancel={() => handlePaymethodClick(null)}
300
+ onCancel={() => handlePaymethodClick(false)}
308
301
  />
309
302
  </KeyboardAvoidingView>
310
303
  </OModal>