ordering-ui-react-native 0.16.10 → 0.16.11-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 (213) hide show
  1. package/package.json +8 -4
  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/AddressForm/index.tsx +18 -2
  6. package/src/components/BusinessBasicInformation/index.tsx +11 -19
  7. package/src/components/BusinessController/index.tsx +10 -8
  8. package/src/components/BusinessInformation/index.tsx +22 -0
  9. package/src/components/BusinessProductsList/index.tsx +7 -7
  10. package/src/components/BusinessTypeFilter/index.tsx +1 -2
  11. package/src/components/BusinessesListing/index.tsx +1 -1
  12. package/src/components/Checkout/index.tsx +2 -1
  13. package/src/components/LanguageSelector/index.tsx +21 -16
  14. package/src/components/LoginForm/index.tsx +118 -30
  15. package/src/components/LoginForm/styles.tsx +6 -0
  16. package/src/components/Messages/index.tsx +2 -2
  17. package/src/components/NotificationSetting/index.tsx +85 -0
  18. package/src/components/OrderDetails/index.tsx +7 -21
  19. package/src/components/OrdersOption/index.tsx +54 -56
  20. package/src/components/PaymentOptions/index.tsx +335 -365
  21. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  22. package/src/components/ReviewDriver/index.tsx +1 -1
  23. package/src/components/ReviewOrder/index.tsx +2 -1
  24. package/src/components/ReviewProducts/index.tsx +11 -0
  25. package/src/components/SignupForm/index.tsx +143 -61
  26. package/src/components/SingleProductReview/index.tsx +8 -5
  27. package/src/components/StripeElementsForm/index.tsx +25 -16
  28. package/src/components/StripeMethodForm/index.tsx +1 -2
  29. package/src/components/VerifyPhone/styles.tsx +1 -2
  30. package/src/components/shared/OBottomPopup.tsx +6 -2
  31. package/src/index.tsx +2 -0
  32. package/src/navigators/CheckoutNavigator.tsx +6 -0
  33. package/src/navigators/HomeNavigator.tsx +6 -0
  34. package/src/pages/BusinessesListing.tsx +7 -6
  35. package/src/pages/MultiCheckout.tsx +31 -0
  36. package/src/pages/MultiOrdersDetails.tsx +27 -0
  37. package/src/pages/OrderDetails.tsx +1 -1
  38. package/src/pages/ReviewDriver.tsx +2 -2
  39. package/src/pages/ReviewOrder.tsx +2 -2
  40. package/src/theme.json +0 -1
  41. package/src/types/@fatnlazycat/react-native-recaptcha-v3/index.d.ts +1 -0
  42. package/src/types/index.tsx +13 -9
  43. package/src/utils/index.tsx +0 -1
  44. package/themes/business/index.tsx +4 -0
  45. package/themes/business/src/components/BusinessController/index.tsx +2 -2
  46. package/themes/business/src/components/Chat/index.tsx +42 -34
  47. package/themes/business/src/components/DriverMap/index.tsx +13 -10
  48. package/themes/business/src/components/DriverSchedule/index.tsx +71 -0
  49. package/themes/business/src/components/DriverSchedule/styles.tsx +6 -0
  50. package/themes/business/src/components/LoginForm/index.tsx +111 -74
  51. package/themes/business/src/components/MapView/index.tsx +1 -1
  52. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  53. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  54. package/themes/business/src/components/OrderDetails/Delivery.tsx +3 -3
  55. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +19 -18
  56. package/themes/business/src/components/OrdersListManager/index.tsx +10 -3
  57. package/themes/business/src/components/OrdersOption/index.tsx +65 -21
  58. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  59. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  60. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  61. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  62. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  63. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  64. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  65. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  66. package/themes/business/src/components/PreviousMessages/index.tsx +17 -18
  67. package/themes/business/src/components/PreviousOrders/index.tsx +21 -23
  68. package/themes/business/src/components/ProductItemAccordion/index.tsx +5 -4
  69. package/themes/business/src/components/ReviewCustomer/index.tsx +1 -1
  70. package/themes/business/src/components/ScheduleBlocked/index.tsx +53 -0
  71. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  72. package/themes/business/src/components/UserProfileForm/index.tsx +28 -4
  73. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  74. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  75. package/themes/business/src/components/shared/OModal.tsx +40 -37
  76. package/themes/business/src/types/index.tsx +14 -9
  77. package/themes/business/src/utils/index.tsx +10 -0
  78. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  79. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  80. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  81. package/themes/kiosk/src/components/BusinessMenu/index.tsx +2 -1
  82. package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
  83. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +1 -0
  84. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  85. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  86. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  87. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  88. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  89. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  90. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  91. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  92. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  93. package/themes/kiosk/src/types/index.d.ts +2 -0
  94. package/themes/original/index.tsx +16 -0
  95. package/themes/original/src/components/AddressForm/index.tsx +136 -133
  96. package/themes/original/src/components/AddressList/index.tsx +1 -1
  97. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  98. package/themes/original/src/components/BusinessBasicInformation/index.tsx +302 -160
  99. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
  100. package/themes/original/src/components/BusinessController/index.tsx +173 -108
  101. package/themes/original/src/components/BusinessItemAccordion/index.tsx +12 -9
  102. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  103. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  104. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  105. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  106. package/themes/original/src/components/BusinessListingSearch/index.tsx +106 -126
  107. package/themes/original/src/components/BusinessListingSearch/styles.tsx +18 -13
  108. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  109. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  110. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  111. package/themes/original/src/components/BusinessProductsList/index.tsx +61 -72
  112. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  113. package/themes/original/src/components/BusinessProductsListing/index.tsx +290 -181
  114. package/themes/original/src/components/BusinessProductsListing/styles.tsx +18 -0
  115. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  116. package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -38
  117. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  118. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +561 -0
  119. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
  120. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +673 -0
  121. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
  122. package/themes/original/src/components/BusinessesListing/index.tsx +100 -484
  123. package/themes/original/src/components/Cart/index.tsx +81 -36
  124. package/themes/original/src/components/Cart/styles.tsx +4 -0
  125. package/themes/original/src/components/CartContent/index.tsx +22 -16
  126. package/themes/original/src/components/Checkout/index.tsx +106 -66
  127. package/themes/original/src/components/Checkout/styles.tsx +0 -1
  128. package/themes/original/src/components/DriverTips/index.tsx +4 -4
  129. package/themes/original/src/components/DriverTips/styles.tsx +2 -1
  130. package/themes/original/src/components/Favorite/index.tsx +1 -0
  131. package/themes/original/src/components/Favorite/styles.tsx +1 -0
  132. package/themes/original/src/components/FavoriteList/index.tsx +143 -94
  133. package/themes/original/src/components/GPSButton/index.tsx +25 -17
  134. package/themes/original/src/components/GoogleMap/index.tsx +20 -12
  135. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +8 -3
  136. package/themes/original/src/components/HelpGuide/index.tsx +8 -3
  137. package/themes/original/src/components/HelpOrder/index.tsx +8 -3
  138. package/themes/original/src/components/LoginForm/Otp/index.tsx +3 -2
  139. package/themes/original/src/components/LoginForm/index.tsx +79 -42
  140. package/themes/original/src/components/Messages/index.tsx +17 -17
  141. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  142. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  143. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  144. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  145. package/themes/original/src/components/MultiCheckout/index.tsx +304 -0
  146. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  147. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  148. package/themes/original/src/components/MultiOrdersDetails/index.tsx +262 -0
  149. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  150. package/themes/original/src/components/MyOrders/index.tsx +177 -27
  151. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  152. package/themes/original/src/components/NavBar/index.tsx +11 -5
  153. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  154. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  155. package/themes/original/src/components/OrderDetails/index.tsx +125 -40
  156. package/themes/original/src/components/OrderDetails/styles.tsx +5 -2
  157. package/themes/original/src/components/OrderItAgain/index.tsx +75 -0
  158. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  159. package/themes/original/src/components/OrderProgress/index.tsx +8 -2
  160. package/themes/original/src/components/OrderSummary/index.tsx +1 -34
  161. package/themes/original/src/components/OrderTypeSelector/index.tsx +84 -36
  162. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  163. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +144 -0
  164. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  165. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +56 -0
  166. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  167. package/themes/original/src/components/OrdersOption/index.tsx +126 -37
  168. package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
  169. package/themes/original/src/components/PaymentOptions/index.tsx +57 -37
  170. package/themes/original/src/components/PhoneInputNumber/index.tsx +4 -10
  171. package/themes/original/src/components/PlaceSpot/index.tsx +243 -47
  172. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  173. package/themes/original/src/components/ProductForm/index.tsx +712 -655
  174. package/themes/original/src/components/ProductForm/styles.tsx +9 -7
  175. package/themes/original/src/components/ProductItemAccordion/index.tsx +37 -24
  176. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  177. package/themes/original/src/components/ProfessionalFilter/index.tsx +129 -0
  178. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  179. package/themes/original/src/components/ProfessionalProfile/index.tsx +309 -0
  180. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  181. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  182. package/themes/original/src/components/ReviewOrder/index.tsx +18 -3
  183. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  184. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  185. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  186. package/themes/original/src/components/SearchBar/index.tsx +10 -5
  187. package/themes/original/src/components/ServiceForm/index.tsx +608 -0
  188. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  189. package/themes/original/src/components/SignupForm/index.tsx +301 -158
  190. package/themes/original/src/components/SingleOrderCard/index.tsx +213 -177
  191. package/themes/original/src/components/SingleProductCard/index.tsx +198 -110
  192. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
  193. package/themes/original/src/components/SingleProductReview/index.tsx +30 -3
  194. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  195. package/themes/original/src/components/StripeElementsForm/index.tsx +25 -9
  196. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  197. package/themes/original/src/components/UpsellingProducts/index.tsx +14 -4
  198. package/themes/original/src/components/UserDetails/index.tsx +32 -18
  199. package/themes/original/src/components/UserFormDetails/index.tsx +107 -73
  200. package/themes/original/src/components/UserProfile/index.tsx +8 -1
  201. package/themes/original/src/components/UserProfileForm/index.tsx +15 -10
  202. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  203. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  204. package/themes/original/src/components/Wallets/index.tsx +176 -162
  205. package/themes/original/src/components/Wallets/styles.tsx +10 -8
  206. package/themes/original/src/components/shared/OBottomPopup.tsx +47 -14
  207. package/themes/original/src/components/shared/OButton.tsx +10 -3
  208. package/themes/original/src/components/shared/OInput.tsx +3 -2
  209. package/themes/original/src/components/shared/OModal.tsx +3 -1
  210. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  211. package/themes/original/src/types/index.tsx +160 -47
  212. package/themes/original/src/utils/index.tsx +77 -0
  213. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -0,0 +1,71 @@
1
+ import React, { useState } from 'react'
2
+ import { RefreshControl, ScrollView, View } from 'react-native'
3
+ import { OText } from '../shared'
4
+ import { useLanguage, useSession } from 'ordering-components/native'
5
+ import { DayContainer } from './styles'
6
+ import { useTheme } from 'styled-components/native'
7
+ export const DriverSchedule = (props: any) => {
8
+ const { schedule } = props
9
+ const [, t] = useLanguage()
10
+ const theme = useTheme()
11
+ const [, { refreshUserInfo }] = useSession()
12
+ const [refreshing] = useState(false);
13
+
14
+ const daysOfWeek = [
15
+ t('SUNDAY_ABBREVIATION', 'Sun'),
16
+ t('MONDAY_ABBREVIATION', 'Mon'),
17
+ t('TUESDAY_ABBREVIATION', 'Tues'),
18
+ t('WEDNESDAY_ABBREVIATION', 'Wed'),
19
+ t('THURSDAY_ABBREVIATION', 'Thur'),
20
+ t('FRIDAY_ABBREVIATION', 'Fri'),
21
+ t('SATURDAY_ABBREVIATION', 'Sat')
22
+ ]
23
+
24
+ const scheduleFormatted = ({ hour, minute }: any) => {
25
+ const checkTime = (val: number) => val < 10 ? `0${val}` : val
26
+ return `${checkTime(hour)}:${checkTime(minute)}`
27
+ }
28
+
29
+ return (
30
+ <ScrollView
31
+ refreshControl={<RefreshControl
32
+ refreshing={refreshing}
33
+ onRefresh={() => refreshUserInfo()}
34
+ />}
35
+ >
36
+ <OText size={24} style={{ paddingLeft: 30 }}>
37
+ {t('SCHEDULE', 'Schedule')}
38
+ </OText>
39
+ <View style={{ padding: 30 }}>
40
+ {schedule.map((item: any, i: number) => (
41
+ <DayContainer key={daysOfWeek[i]}>
42
+ <OText style={{ width: '20%' }} size={22} weight={700}>{daysOfWeek[i]}</OText>
43
+ <View style={{ width: '80%', alignItems: 'center' }}>
44
+ <>
45
+ {item?.enabled ? (
46
+ <View>
47
+ {item?.lapses.map((lapse: any, i: number) => (
48
+ <View key={`${daysOfWeek[i]}_${i}`} style={{ marginTop: 3, marginBottom: 20, flexDirection: 'row', justifyContent: 'space-between' }}>
49
+ <OText size={18} style={{ width: '30%' }}>
50
+ {scheduleFormatted(lapse.open)}
51
+ </OText>
52
+ <OText size={18} style={{ width: 15 }}>
53
+ -
54
+ </OText>
55
+ <OText size={18} style={{ width: '30%' }}>
56
+ {scheduleFormatted(lapse.close)}
57
+ </OText>
58
+ </View>
59
+ ))}
60
+ </View>
61
+ ) : (
62
+ <OText size={18} style={{ marginTop: 3, marginBottom: 10 }} color={theme.colors.red}>{t('NOT_AVAILABLE', 'Not available')}</OText>
63
+ )}
64
+ </>
65
+ </View>
66
+ </DayContainer>
67
+ ))}
68
+ </View>
69
+ </ScrollView>
70
+ )
71
+ }
@@ -0,0 +1,6 @@
1
+ import styled from "styled-components/native";
2
+
3
+ export const DayContainer = styled.View`
4
+ flex-direction: row;
5
+ width: 100%;
6
+ `
@@ -9,6 +9,7 @@ import {
9
9
  } from 'react-native';
10
10
  import { useForm, Controller } from 'react-hook-form';
11
11
  import Recaptcha from 'react-native-recaptcha-that-works'
12
+ import ReCaptcha from '@fatnlazycat/react-native-recaptcha-v3'
12
13
  import { TouchableOpacity } from 'react-native-gesture-handler';
13
14
  import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
14
15
  import {
@@ -52,8 +53,8 @@ const LoginFormUI = (props: LoginParams) => {
52
53
  allowedLevels,
53
54
  useRootPoint,
54
55
  notificationState,
55
- handleReCaptcha,
56
- enableReCaptcha
56
+ handleReCaptcha,
57
+ enableReCaptcha
57
58
  } = props;
58
59
 
59
60
  const [ordering, { setOrdering }] = useApi();
@@ -67,7 +68,7 @@ const LoginFormUI = (props: LoginParams) => {
67
68
  const inputRef = useRef<any>(null);
68
69
  const inputMailRef = useRef<any>(null);
69
70
 
70
- const [projectName, setProjectName] = useState({name: '', isFocued: false});
71
+ const [projectName, setProjectName] = useState({ name: '', isFocued: false });
71
72
  const [passwordSee, setPasswordSee] = useState(false);
72
73
  const [isLoadingVerifyModal, setIsLoadingVerifyModal] = useState(false);
73
74
  const [isModalVisible, setIsModalVisible] = useState(false);
@@ -92,36 +93,50 @@ const LoginFormUI = (props: LoginParams) => {
92
93
  const [formValues, setFormValues] = useState(null);
93
94
 
94
95
  const [recaptchaConfig, setRecaptchaConfig] = useState<any>({})
95
- const [recaptchaVerified, setRecaptchaVerified] = useState(false)
96
+ const [recaptchaVerified, setRecaptchaVerified] = useState(false)
96
97
 
97
98
  const recaptchaRef = useRef<any>({});
98
99
 
99
100
  const handleOpenRecaptcha = () => {
100
- setRecaptchaVerified(false)
101
- if (!recaptchaConfig?.siteKey) {
102
- showToast(ToastType.Error, t('NO_RECAPTCHA_SITE_KEY', 'The config doesn\'t have recaptcha site key'));
103
- return
104
- }
105
- if (!recaptchaConfig?.baseUrl) {
106
- showToast(ToastType.Error, t('NO_RECAPTCHA_BASE_URL', 'The config doesn\'t have recaptcha base url'));
107
- return
108
- }
109
- recaptchaRef.current.open()
110
- }
111
-
112
- const onRecaptchaVerify = (token: any) => {
113
- setRecaptchaVerified(true)
114
- handleReCaptcha(token)
115
- }
116
-
117
- useEffect(() => {
118
- if (configs && Object.keys(configs).length > 0 && enableReCaptcha) {
119
- setRecaptchaConfig({
120
- siteKey: configs?.security_recaptcha_site_key?.value || null,
121
- baseUrl: configs?.security_recaptcha_base_url?.value || null
122
- })
123
- }
124
- }, [configs, enableReCaptcha])
101
+ setRecaptchaVerified(false)
102
+ if (!recaptchaConfig?.siteKey) {
103
+ showToast(ToastType.Error, t('NO_RECAPTCHA_SITE_KEY', 'The config doesn\'t have recaptcha site key'));
104
+ return
105
+ }
106
+ if (!recaptchaConfig?.baseUrl) {
107
+ showToast(ToastType.Error, t('NO_RECAPTCHA_BASE_URL', 'The config doesn\'t have recaptcha base url'));
108
+ return
109
+ }
110
+ recaptchaRef.current.open()
111
+ }
112
+
113
+ const onRecaptchaVerify = (token: any) => {
114
+ setRecaptchaVerified(true)
115
+ handleReCaptcha({ code: token, version: recaptchaConfig?.version })
116
+ }
117
+
118
+ useEffect(() => {
119
+ if (configs && Object.keys(configs).length > 0 && enableReCaptcha) {
120
+ if (configs?.security_recaptcha_type?.value === 'v3' &&
121
+ configs?.security_recaptcha_score_v3?.value > 0 &&
122
+ configs?.security_recaptcha_site_key_v3?.value
123
+ ) {
124
+ setRecaptchaConfig({
125
+ version: 'v3',
126
+ siteKey: configs?.security_recaptcha_site_key_v3?.value || null,
127
+ baseUrl: configs?.security_recaptcha_base_url?.value || null
128
+ })
129
+ return
130
+ }
131
+ if (configs?.security_recaptcha_site_key?.value) {
132
+ setRecaptchaConfig({
133
+ version: 'v2',
134
+ siteKey: configs?.security_recaptcha_site_key?.value || null,
135
+ baseUrl: configs?.security_recaptcha_base_url?.value || null
136
+ })
137
+ }
138
+ }
139
+ }, [configs, enableReCaptcha])
125
140
 
126
141
  useEffect(() => {
127
142
  const projectInputInterval = setInterval(() => {
@@ -164,6 +179,7 @@ const LoginFormUI = (props: LoginParams) => {
164
179
  'An error occurred while trying to pay by PayPal',
165
180
  ERROR_ADD_PRODUCT_VERY_FAR_FOR_DELIVERY:
166
181
  'Error adding product, very far for delivery',
182
+ ERROR_AUTH_DRIVER_LOGIN_VALIDATION: 'Error auth driver login validation'
167
183
  };
168
184
 
169
185
  return keyList[key] ? t(key, keyList[key]) : t(key);
@@ -245,6 +261,17 @@ const LoginFormUI = (props: LoginParams) => {
245
261
 
246
262
  useEffect(() => {
247
263
  if (!formState?.loading && formState?.result?.error) {
264
+ if (formState.result?.result?.[0] === 'ERROR_AUTH_VERIFICATION_CODE') {
265
+ setRecaptchaVerified(false)
266
+ setSubmitted(false)
267
+ setRecaptchaConfig({
268
+ version: 'v2',
269
+ siteKey: configs?.security_recaptcha_site_key?.value || null,
270
+ baseUrl: configs?.security_recaptcha_base_url?.value || null
271
+ })
272
+ showToast(ToastType.Info, t('TRY_AGAIN', 'Please try again'))
273
+ return
274
+ }
248
275
  formState?.result?.result &&
249
276
  showToast(
250
277
  ToastType.Error,
@@ -252,17 +279,17 @@ const LoginFormUI = (props: LoginParams) => {
252
279
  ? getTraduction(formState.result?.result)
253
280
  : loginTab === 'email' &&
254
281
  typeof formState.result?.result !== 'string'
255
- ? getTraduction(formState.result?.result[0])
256
- : loginTab === 'cellphone' &&
257
- typeof formState.result?.result === 'string'
258
- ? getTraduction(formState.result?.result).replace(
259
- t('USER', 'user').toLowerCase(),
260
- t('PHONE_NUMER', 'Phone number'),
261
- )
262
- : getTraduction(formState.result?.result[0]).replace(
263
- t('USER', 'user').toLowerCase(),
264
- t('PHONE_NUMER', 'Phone number'),
265
- ),
282
+ ? getTraduction(formState.result?.result[0])
283
+ : loginTab === 'cellphone' &&
284
+ typeof formState.result?.result === 'string'
285
+ ? getTraduction(formState.result?.result).replace(
286
+ t('USER', 'user').toLowerCase(),
287
+ t('PHONE_NUMER', 'Phone number'),
288
+ )
289
+ : getTraduction(formState.result?.result[0]).replace(
290
+ t('USER', 'user').toLowerCase(),
291
+ t('PHONE_NUMER', 'Phone number'),
292
+ ),
266
293
  );
267
294
  setSubmitted(false)
268
295
  }
@@ -516,7 +543,7 @@ const LoginFormUI = (props: LoginParams) => {
516
543
  icon={theme.images.general.project}
517
544
  iconColor={theme.colors.arrowColor}
518
545
  onChange={(e: any) => {
519
- setProjectName({name: e?.target?.value, isFocued: true})
546
+ setProjectName({ name: e?.target?.value, isFocued: true })
520
547
  onChange(e?.target?.value);
521
548
  setSubmitted(false);
522
549
  }}
@@ -545,7 +572,7 @@ const LoginFormUI = (props: LoginParams) => {
545
572
  icon={theme.images.logos.emailInputIcon}
546
573
  iconColor={theme.colors.arrowColor}
547
574
  onChange={(e: any) => {
548
- setProjectName({...projectName, isFocued: false})
575
+ setProjectName({ ...projectName, isFocued: false })
549
576
  handleChangeInputEmail(e, onChange);
550
577
  }}
551
578
  selectionColor={theme.colors.primary}
@@ -650,40 +677,50 @@ const LoginFormUI = (props: LoginParams) => {
650
677
  </OText>
651
678
  </Pressable>
652
679
  )}
653
-
654
- {enableReCaptcha && (
680
+ {(enableReCaptcha && recaptchaConfig?.version) && (
655
681
  <>
656
- <TouchableOpacity
657
- style={{ marginBottom: 15 }}
658
- onPress={handleOpenRecaptcha}
659
- >
660
- <RecaptchaButton>
661
- {recaptchaVerified ? (
662
- <MaterialCommunityIcons
663
- name="checkbox-marked"
664
- size={26}
665
- color={theme.colors.primary}
666
- />
667
- ) : (
668
- <MaterialCommunityIcons
669
- name="checkbox-blank-outline"
670
- size={26}
671
- color={theme.colors.mediumGray}
672
- />
673
- )}
674
- <OText size={14} mLeft={8}>{t('VERIFY_ReCAPTCHA', 'Verify reCAPTCHA')}</OText>
675
- </RecaptchaButton>
676
- </TouchableOpacity>
677
- <Recaptcha
678
- ref={recaptchaRef}
679
- siteKey={recaptchaConfig?.siteKey}
680
- baseUrl={recaptchaConfig?.baseUrl}
681
- onVerify={onRecaptchaVerify}
682
- onExpire={() => setRecaptchaVerified(false)}
683
- />
682
+ {recaptchaConfig?.version === 'v3' ? (
683
+ <ReCaptcha
684
+ url={recaptchaConfig?.baseUrl}
685
+ siteKey={recaptchaConfig?.siteKey}
686
+ containerStyle={{ height: 40 }}
687
+ onExecute={onRecaptchaVerify}
688
+ reCaptchaType={1}
689
+ />
690
+ ) : (
691
+ <>
692
+ <TouchableOpacity
693
+ style={{ marginBottom: 15 }}
694
+ onPress={handleOpenRecaptcha}
695
+ >
696
+ <RecaptchaButton>
697
+ {recaptchaVerified ? (
698
+ <MaterialCommunityIcons
699
+ name="checkbox-marked"
700
+ size={26}
701
+ color={theme.colors.primary}
702
+ />
703
+ ) : (
704
+ <MaterialCommunityIcons
705
+ name="checkbox-blank-outline"
706
+ size={26}
707
+ color={theme.colors.mediumGray}
708
+ />
709
+ )}
710
+ <OText size={14} mLeft={8}>{t('VERIFY_ReCAPTCHA', 'Verify reCAPTCHA')}</OText>
711
+ </RecaptchaButton>
712
+ </TouchableOpacity>
713
+ <Recaptcha
714
+ ref={recaptchaRef}
715
+ siteKey={recaptchaConfig?.siteKey}
716
+ baseUrl={recaptchaConfig?.baseUrl}
717
+ onVerify={onRecaptchaVerify}
718
+ onExpire={() => setRecaptchaVerified(false)}
719
+ />
720
+ </>)
721
+ }
684
722
  </>
685
- )}
686
-
723
+ )}
687
724
  <OButton
688
725
  onClick={handleLogin}
689
726
  text={t('LOGIN', 'Login')}
@@ -191,7 +191,7 @@ const MapViewComponent = (props: MapViewParams) => {
191
191
  {((customer && marker?.business?.zipcode) || (!customer && marker?.business?.zipcode)) && (
192
192
  <OText>{customer ? marker?.customer?.zipcode : marker?.business?.zipcode}</OText>
193
193
  )}
194
- {customer && marker?.customer?.internal_number && (
194
+ {customer && !!marker?.customer?.internal_number && (
195
195
  <OText>{marker?.customer?.internal_number}</OText>
196
196
  )}
197
197
  <OText textDecorationLine='underline' color={theme.colors.primary}>
@@ -5,6 +5,7 @@ import {
5
5
  StyleSheet,
6
6
  Dimensions,
7
7
  ScrollView,
8
+ RefreshControl,
8
9
  } from 'react-native';
9
10
  import { Contacts, useLanguage } from 'ordering-components/native';
10
11
  import { useTheme } from 'styled-components/native';
@@ -24,6 +25,7 @@ const MessagesOptionUI = (props: MessagesOptionParams) => {
24
25
  messages,
25
26
  onNavigationRedirect,
26
27
  setSortBy,
28
+ getOrders
27
29
  } = props;
28
30
 
29
31
  const theme = useTheme();
@@ -55,6 +57,7 @@ const MessagesOptionUI = (props: MessagesOptionParams) => {
55
57
  const [tabsFilter, setTabsFilter] = useState(tabs[0].tags);
56
58
  const [activeTag, setActiveTag] = useState(tags[0].key);
57
59
  const [reload, setReload] = useState(false);
60
+ const [refreshing] = useState(false);
58
61
  const [unreadMessages, setUnreadMessages] = useState(
59
62
  values?.reduce(
60
63
  (total: number, order: any) => total + order.unread_count,
@@ -247,7 +250,14 @@ const MessagesOptionUI = (props: MessagesOptionParams) => {
247
250
  />
248
251
  )}
249
252
 
250
- <ScrollView showsVerticalScrollIndicator={false} style={{ flex: 1 }}>
253
+ <ScrollView
254
+ showsVerticalScrollIndicator={false}
255
+ style={{ flex: 1 }}
256
+ refreshControl={<RefreshControl
257
+ refreshing={refreshing}
258
+ onRefresh={() => getOrders?.()}
259
+ />}
260
+ >
251
261
  {!reload &&
252
262
  !error &&
253
263
  values.length > 0 &&
@@ -439,7 +439,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
439
439
  <>
440
440
  <OrderContentComponent order={order} />
441
441
  {(order?.status === 7 || order?.status === 4) &&
442
- order?.delivery_type === 1 && (
442
+ order?.delivery_type === 1 && configs?.assign_driver_enabled?.value === '1' && (
443
443
  <AssignDriver>
444
444
  <OText style={{ marginBottom: 5 }} size={16} weight="600">
445
445
  {t('ASSIGN_DRIVER', 'Assign driver')}
@@ -247,17 +247,17 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
247
247
  let isToFollow = false;
248
248
  let isBusinessMarker = false;
249
249
 
250
- if (order?.status === 7 || order?.status === 8) {
250
+ if (order?.status === 7 || order?.status === 8 || order?.status === 18) {
251
251
  const markerBusiness = 'Business';
252
252
  isBusinessMarker = true;
253
253
  locationMarker = locations.find(
254
254
  (location: any) => location.type === markerBusiness,
255
255
  );
256
256
 
257
- if (order?.status === 8) {
257
+ if (order?.status === 8 || order?.status === 18) {
258
258
  isToFollow = true;
259
259
  }
260
- } else if (order?.status === 3 || order?.status === 9) {
260
+ } else if (order?.status === 3 || order?.status === 9 || order?.status === 19 || order?.status === 23) {
261
261
  const markerCustomer = 'Customer';
262
262
  isToFollow = true;
263
263
  isBusinessMarker = false;
@@ -274,8 +274,8 @@ export const OrderContentComponent = (props: OrderContent) => {
274
274
  <View style={styles.linkWithIcons}>
275
275
  <OLink
276
276
  PressStyle={styles.linkWithIcons}
277
- url={`tel:${order?.customer?.cellphone}`}
278
- shorcut={order?.customer?.cellphone}
277
+ url={`tel:${!!order?.customer?.country_phone_code ? '+' + order?.customer?.country_phone_code : ''} ${order?.customer?.cellphone}`}
278
+ shorcut={`${!!order?.customer?.country_phone_code ? '+' + order?.customer?.country_phone_code : ''} ${order?.customer?.cellphone}`}
279
279
  TextStyle={styles.textLink}
280
280
  />
281
281
  </View>
@@ -364,6 +364,7 @@ export const OrderContentComponent = (props: OrderContent) => {
364
364
  <ProductItemAccordion
365
365
  key={product?.id || i}
366
366
  product={product}
367
+ currency={order?.currency}
367
368
  />
368
369
  ))}
369
370
  </OrderProducts>
@@ -372,7 +373,7 @@ export const OrderContentComponent = (props: OrderContent) => {
372
373
  <Table>
373
374
  <OText mBottom={4}>{t('SUBTOTAL', 'Subtotal')}</OText>
374
375
  <OText mBottom={4}>
375
- {parsePrice(((order?.summary?.subtotal ?? order?.subtotal) + getIncludedTaxes()))}
376
+ {parsePrice(((order?.summary?.subtotal ?? order?.subtotal) + getIncludedTaxes()), { currency: order?.currency})}
376
377
  </OText>
377
378
  </Table>
378
379
  {(order?.summary?.discount > 0 ?? order?.discount > 0) && order?.offers?.length === 0 && (
@@ -385,7 +386,7 @@ export const OrderContentComponent = (props: OrderContent) => {
385
386
  ) : (
386
387
  <OText mBottom={4}>{t('DISCOUNT', theme?.defaultLanguages?.DISCOUNT || 'Discount')}</OText>
387
388
  )}
388
- <OText>- {parsePrice(order?.summary?.discount ?? order?.discount)}</OText>
389
+ <OText>- {parsePrice(order?.summary?.discount ?? order?.discount, { currency: order?.currency})}</OText>
389
390
  </Table>
390
391
  )}
391
392
  {
@@ -399,7 +400,7 @@ export const OrderContentComponent = (props: OrderContent) => {
399
400
  )}
400
401
  </OText>
401
402
  </OSRow>
402
- <OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
403
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency})}</OText>
403
404
  </Table>
404
405
  ))
405
406
  }
@@ -407,9 +408,9 @@ export const OrderContentComponent = (props: OrderContent) => {
407
408
  <Table>
408
409
  <OText mBottom={4}>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
409
410
  {order?.tax_type === 1 ? (
410
- <OText mBottom={4}>{parsePrice((order?.summary?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0))}</OText>
411
+ <OText mBottom={4}>{parsePrice((order?.summary?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0), { currency: order?.currency})}</OText>
411
412
  ) : (
412
- <OText mBottom={4}>{parsePrice(order?.summary?.subtotal_with_discount ?? 0)}</OText>
413
+ <OText mBottom={4}>{parsePrice(order?.summary?.subtotal_with_discount ?? 0, { currency: order?.currency})}</OText>
413
414
  )}
414
415
  </Table>
415
416
  )}
@@ -419,7 +420,7 @@ export const OrderContentComponent = (props: OrderContent) => {
419
420
  {t('TAX', 'Tax')} {`(${verifyDecimals(order?.tax, parseNumber)}%)`}
420
421
  </OText>
421
422
  <OText mBottom={4}>
422
- {parsePrice(order?.summary?.tax ?? 0)}
423
+ {parsePrice(order?.summary?.tax ?? 0, { currency: order?.currency})}
423
424
  </OText>
424
425
  </Table>
425
426
  )}
@@ -430,7 +431,7 @@ export const OrderContentComponent = (props: OrderContent) => {
430
431
  {t('SERVICE_FEE', 'Service fee')}
431
432
  {`(${verifyDecimals(order?.service_fee, parseNumber)}%)`}
432
433
  </OText>
433
- <OText mBottom={4}>{parsePrice(order?.summary?.service_fee ?? 0)}</OText>
434
+ <OText mBottom={4}>{parsePrice(order?.summary?.service_fee ?? 0, { currency: order?.currency})}</OText>
434
435
  </Table>
435
436
  )
436
437
  }
@@ -443,7 +444,7 @@ export const OrderContentComponent = (props: OrderContent) => {
443
444
  {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
444
445
  </OText>
445
446
  </OSRow>
446
- <OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
447
+ <OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0, { currency: order?.currency})}</OText>
447
448
  </Table>
448
449
  ))
449
450
  }
@@ -453,10 +454,10 @@ export const OrderContentComponent = (props: OrderContent) => {
453
454
  <OSRow>
454
455
  <OText mBottom={4}>
455
456
  {fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
456
- ({fee?.fixed > 0 && `${parsePrice(fee?.fixed)} + `}{fee.percentage}%){' '}
457
+ ({fee?.fixed > 0 && `${parsePrice(fee?.fixed, { currency: order?.currency})} + `}{fee.percentage}%){' '}
457
458
  </OText>
458
459
  </OSRow>
459
- <OText mBottom={4}>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0)}</OText>
460
+ <OText mBottom={4}>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0, { currency: order?.currency})}</OText>
460
461
  </Table>
461
462
  ))
462
463
  }
@@ -471,7 +472,7 @@ export const OrderContentComponent = (props: OrderContent) => {
471
472
  )}
472
473
  </OText>
473
474
  </OSRow>
474
- <OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
475
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency})}</OText>
475
476
  </Table>
476
477
  ))
477
478
  }
@@ -483,7 +484,7 @@ export const OrderContentComponent = (props: OrderContent) => {
483
484
  </OText>
484
485
 
485
486
  <OText mBottom={4}>
486
- {parsePrice(order?.summary?.delivery_price)}
487
+ {parsePrice(order?.summary?.delivery_price, { currency: order?.currency})}
487
488
  </OText>
488
489
  </Table>
489
490
  )
@@ -499,7 +500,7 @@ export const OrderContentComponent = (props: OrderContent) => {
499
500
  )}
500
501
  </OText>
501
502
  </OSRow>
502
- <OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
503
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency})}</OText>
503
504
  </Table>
504
505
  ))
505
506
  }
@@ -514,7 +515,7 @@ export const OrderContentComponent = (props: OrderContent) => {
514
515
  `(${verifyDecimals(order?.summary?.driver_tip, parseNumber)}%)`
515
516
  )}
516
517
  </OText>
517
- <OText mBottom={4}>{parsePrice(order?.summary?.driver_tip ?? order?.totalDriverTip)}</OText>
518
+ <OText mBottom={4}>{parsePrice(order?.summary?.driver_tip ?? order?.totalDriverTip, { currency: order?.currency})}</OText>
518
519
  </Table>
519
520
  )}
520
521
 
@@ -528,7 +529,7 @@ export const OrderContentComponent = (props: OrderContent) => {
528
529
  mBottom={4}
529
530
  style={styles.textBold}
530
531
  color={theme.colors.primary}>
531
- {parsePrice(order?.summary?.total ?? order?.total)}
532
+ {parsePrice(order?.summary?.total ?? order?.total, { currency: order?.currency})}
532
533
  </OText>
533
534
  </Table>
534
535
  </Total>
@@ -571,7 +572,7 @@ export const OrderContentComponent = (props: OrderContent) => {
571
572
  )}
572
573
  </View>
573
574
  <OText>
574
- -{parsePrice(event.amount)}
575
+ -{parsePrice(event.amount, { currency: order?.currency})}
575
576
  </OText>
576
577
  </View>
577
578
  ))}
@@ -6,7 +6,7 @@ import FontistoIcon from 'react-native-vector-icons/Fontisto'
6
6
  import FeatherIcon from 'react-native-vector-icons/Feather';
7
7
  import SelectDropdown from 'react-native-select-dropdown'
8
8
  import { useTheme } from 'styled-components/native';
9
-
9
+ import { NotificationSetting } from '../../../../../src/components/NotificationSetting'
10
10
  import {
11
11
  FiltersTab,
12
12
  TabsContainer,
@@ -611,7 +611,7 @@ const OrdersListManagerUI = (props: OrdersOptionParams) => {
611
611
  </LeftSide>
612
612
 
613
613
  <RightSide style={{ paddingBottom: 110, paddingHorizontal: 20 }}>
614
- {currentOrderSelected && (
614
+ {currentOrderSelected && (
615
615
  <OrderDetailsBusiness {...props.orderDetailsProps} order={currentOrderSelected} isCustomView />
616
616
  )}
617
617
  </RightSide>
@@ -756,6 +756,7 @@ const OrdersListManagerUI = (props: OrdersOptionParams) => {
756
756
 
757
757
  export const OrdersListManager = (props: OrdersOptionParams) => {
758
758
  const [, t] = useLanguage();
759
+ const [checkNotificationStatus, setCheckNotificationStatus] = useState({ open: false, checked: false })
759
760
  const ordersProps = {
760
761
  ...props,
761
762
  UIComponent: OrdersListManagerUI,
@@ -870,5 +871,11 @@ export const OrdersListManager = (props: OrdersOptionParams) => {
870
871
  ]
871
872
  };
872
873
 
873
- return <OrderListGroups {...ordersProps} />;
874
+ return (<>
875
+ <OrderListGroups {...ordersProps} />
876
+ {props?.checkNotification && (
877
+ <NotificationSetting checkNotificationStatus={checkNotificationStatus}
878
+ setCheckNotificationStatus={setCheckNotificationStatus} />
879
+ )}
880
+ </>);
874
881
  };