ordering-ui-react-native 0.16.4 → 0.16.5-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 (223) 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/BusinessTypeFilter/index.tsx +1 -2
  10. package/src/components/BusinessesListing/index.tsx +1 -1
  11. package/src/components/Checkout/index.tsx +2 -1
  12. package/src/components/DriverTips/index.tsx +11 -6
  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 +25 -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 +18 -3
  85. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  86. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  87. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  88. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  89. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  90. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  91. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  92. package/themes/kiosk/src/components/OrderDetails/index.tsx +2 -2
  93. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  94. package/themes/kiosk/src/components/PaymentOptions/index.tsx +1 -1
  95. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  96. package/themes/kiosk/src/types/index.d.ts +2 -0
  97. package/themes/original/index.tsx +22 -0
  98. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  99. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  100. package/themes/original/src/components/AddressForm/index.tsx +136 -133
  101. package/themes/original/src/components/AddressList/index.tsx +1 -1
  102. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  103. package/themes/original/src/components/BusinessBasicInformation/index.tsx +302 -160
  104. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
  105. package/themes/original/src/components/BusinessController/index.tsx +179 -96
  106. package/themes/original/src/components/BusinessController/styles.tsx +5 -0
  107. package/themes/original/src/components/BusinessItemAccordion/index.tsx +12 -9
  108. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  109. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  110. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  111. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  112. package/themes/original/src/components/BusinessListingSearch/index.tsx +106 -126
  113. package/themes/original/src/components/BusinessListingSearch/styles.tsx +18 -13
  114. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  115. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  116. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  117. package/themes/original/src/components/BusinessProductsList/index.tsx +66 -73
  118. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  119. package/themes/original/src/components/BusinessProductsListing/index.tsx +290 -178
  120. package/themes/original/src/components/BusinessProductsListing/styles.tsx +18 -0
  121. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  122. package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -38
  123. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  124. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +561 -0
  125. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
  126. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +673 -0
  127. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
  128. package/themes/original/src/components/BusinessesListing/index.tsx +102 -464
  129. package/themes/original/src/components/Cart/index.tsx +81 -36
  130. package/themes/original/src/components/Cart/styles.tsx +4 -0
  131. package/themes/original/src/components/CartContent/index.tsx +22 -16
  132. package/themes/original/src/components/Checkout/index.tsx +107 -67
  133. package/themes/original/src/components/Checkout/styles.tsx +0 -1
  134. package/themes/original/src/components/DriverTips/index.tsx +11 -6
  135. package/themes/original/src/components/Favorite/index.tsx +92 -0
  136. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  137. package/themes/original/src/components/FavoriteList/index.tsx +317 -0
  138. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  139. package/themes/original/src/components/GPSButton/index.tsx +25 -17
  140. package/themes/original/src/components/GoogleMap/index.tsx +20 -12
  141. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +8 -3
  142. package/themes/original/src/components/HelpGuide/index.tsx +8 -3
  143. package/themes/original/src/components/HelpOrder/index.tsx +8 -3
  144. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  145. package/themes/original/src/components/LoginForm/Otp/index.tsx +3 -2
  146. package/themes/original/src/components/LoginForm/index.tsx +83 -42
  147. package/themes/original/src/components/Messages/index.tsx +17 -17
  148. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  149. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  150. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  151. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  152. package/themes/original/src/components/MultiCheckout/index.tsx +304 -0
  153. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  154. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  155. package/themes/original/src/components/MultiOrdersDetails/index.tsx +262 -0
  156. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  157. package/themes/original/src/components/MyOrders/index.tsx +132 -27
  158. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  159. package/themes/original/src/components/NavBar/index.tsx +11 -5
  160. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  161. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  162. package/themes/original/src/components/OrderDetails/index.tsx +125 -40
  163. package/themes/original/src/components/OrderDetails/styles.tsx +5 -2
  164. package/themes/original/src/components/OrderItAgain/index.tsx +75 -0
  165. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  166. package/themes/original/src/components/OrderProgress/index.tsx +8 -2
  167. package/themes/original/src/components/OrderSummary/index.tsx +1 -34
  168. package/themes/original/src/components/OrderTypeSelector/index.tsx +84 -36
  169. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  170. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +140 -0
  171. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  172. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +56 -0
  173. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  174. package/themes/original/src/components/OrdersOption/index.tsx +128 -37
  175. package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
  176. package/themes/original/src/components/PaymentOptionWallet/index.tsx +15 -23
  177. package/themes/original/src/components/PaymentOptions/index.tsx +57 -37
  178. package/themes/original/src/components/PhoneInputNumber/index.tsx +4 -10
  179. package/themes/original/src/components/PlaceSpot/index.tsx +243 -47
  180. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  181. package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
  182. package/themes/original/src/components/ProductForm/index.tsx +697 -649
  183. package/themes/original/src/components/ProductForm/styles.tsx +9 -7
  184. package/themes/original/src/components/ProductItemAccordion/index.tsx +37 -24
  185. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  186. package/themes/original/src/components/ProfessionalFilter/index.tsx +129 -0
  187. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  188. package/themes/original/src/components/ProfessionalProfile/index.tsx +309 -0
  189. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  190. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  191. package/themes/original/src/components/ReviewOrder/index.tsx +18 -3
  192. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  193. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  194. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  195. package/themes/original/src/components/SearchBar/index.tsx +13 -5
  196. package/themes/original/src/components/ServiceForm/index.tsx +608 -0
  197. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  198. package/themes/original/src/components/SignupForm/index.tsx +305 -158
  199. package/themes/original/src/components/SingleOrderCard/index.tsx +316 -0
  200. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  201. package/themes/original/src/components/SingleProductCard/index.tsx +215 -95
  202. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
  203. package/themes/original/src/components/SingleProductReview/index.tsx +30 -3
  204. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  205. package/themes/original/src/components/StripeElementsForm/index.tsx +25 -9
  206. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  207. package/themes/original/src/components/UpsellingProducts/index.tsx +14 -4
  208. package/themes/original/src/components/UserDetails/index.tsx +32 -18
  209. package/themes/original/src/components/UserFormDetails/index.tsx +107 -73
  210. package/themes/original/src/components/UserProfile/index.tsx +4 -0
  211. package/themes/original/src/components/UserProfileForm/index.tsx +15 -10
  212. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  213. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  214. package/themes/original/src/components/Wallets/index.tsx +176 -162
  215. package/themes/original/src/components/Wallets/styles.tsx +10 -8
  216. package/themes/original/src/components/shared/OBottomPopup.tsx +47 -14
  217. package/themes/original/src/components/shared/OButton.tsx +10 -3
  218. package/themes/original/src/components/shared/OInput.tsx +3 -2
  219. package/themes/original/src/components/shared/OModal.tsx +3 -1
  220. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  221. package/themes/original/src/types/index.tsx +197 -46
  222. package/themes/original/src/utils/index.tsx +77 -0
  223. 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>
@@ -323,6 +323,12 @@ export const OrderContentComponent = (props: OrderContent) => {
323
323
  {order?.customer?.zipcode}
324
324
  </OText>
325
325
  )}
326
+
327
+ {!!order?.on_behalf_of && (
328
+ <OText numberOfLines={1} mBottom={4} ellipsizeMode="tail">
329
+ {t('ON_BEHALF_OF', 'On behalf of')}{': '} {order?.on_behalf_of}
330
+ </OText>
331
+ )}
326
332
  {((order?.delivery_option !== undefined && order?.delivery_type === 1) || !!order?.comment) && (
327
333
  <View style={{ marginTop: 10 }}>
328
334
  {order?.delivery_option !== undefined && order?.delivery_type === 1 && (
@@ -358,6 +364,7 @@ export const OrderContentComponent = (props: OrderContent) => {
358
364
  <ProductItemAccordion
359
365
  key={product?.id || i}
360
366
  product={product}
367
+ currency={order?.currency}
361
368
  />
362
369
  ))}
363
370
  </OrderProducts>
@@ -366,7 +373,7 @@ export const OrderContentComponent = (props: OrderContent) => {
366
373
  <Table>
367
374
  <OText mBottom={4}>{t('SUBTOTAL', 'Subtotal')}</OText>
368
375
  <OText mBottom={4}>
369
- {parsePrice(((order?.summary?.subtotal ?? order?.subtotal) + getIncludedTaxes()))}
376
+ {parsePrice(((order?.summary?.subtotal ?? order?.subtotal) + getIncludedTaxes()), { currency: order?.currency})}
370
377
  </OText>
371
378
  </Table>
372
379
  {(order?.summary?.discount > 0 ?? order?.discount > 0) && order?.offers?.length === 0 && (
@@ -379,7 +386,7 @@ export const OrderContentComponent = (props: OrderContent) => {
379
386
  ) : (
380
387
  <OText mBottom={4}>{t('DISCOUNT', theme?.defaultLanguages?.DISCOUNT || 'Discount')}</OText>
381
388
  )}
382
- <OText>- {parsePrice(order?.summary?.discount ?? order?.discount)}</OText>
389
+ <OText>- {parsePrice(order?.summary?.discount ?? order?.discount, { currency: order?.currency})}</OText>
383
390
  </Table>
384
391
  )}
385
392
  {
@@ -393,7 +400,7 @@ export const OrderContentComponent = (props: OrderContent) => {
393
400
  )}
394
401
  </OText>
395
402
  </OSRow>
396
- <OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
403
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency})}</OText>
397
404
  </Table>
398
405
  ))
399
406
  }
@@ -401,9 +408,9 @@ export const OrderContentComponent = (props: OrderContent) => {
401
408
  <Table>
402
409
  <OText mBottom={4}>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
403
410
  {order?.tax_type === 1 ? (
404
- <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>
405
412
  ) : (
406
- <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>
407
414
  )}
408
415
  </Table>
409
416
  )}
@@ -413,7 +420,7 @@ export const OrderContentComponent = (props: OrderContent) => {
413
420
  {t('TAX', 'Tax')} {`(${verifyDecimals(order?.tax, parseNumber)}%)`}
414
421
  </OText>
415
422
  <OText mBottom={4}>
416
- {parsePrice(order?.summary?.tax ?? 0)}
423
+ {parsePrice(order?.summary?.tax ?? 0, { currency: order?.currency})}
417
424
  </OText>
418
425
  </Table>
419
426
  )}
@@ -424,7 +431,7 @@ export const OrderContentComponent = (props: OrderContent) => {
424
431
  {t('SERVICE_FEE', 'Service fee')}
425
432
  {`(${verifyDecimals(order?.service_fee, parseNumber)}%)`}
426
433
  </OText>
427
- <OText mBottom={4}>{parsePrice(order?.summary?.service_fee ?? 0)}</OText>
434
+ <OText mBottom={4}>{parsePrice(order?.summary?.service_fee ?? 0, { currency: order?.currency})}</OText>
428
435
  </Table>
429
436
  )
430
437
  }
@@ -437,7 +444,7 @@ export const OrderContentComponent = (props: OrderContent) => {
437
444
  {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
438
445
  </OText>
439
446
  </OSRow>
440
- <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>
441
448
  </Table>
442
449
  ))
443
450
  }
@@ -447,10 +454,10 @@ export const OrderContentComponent = (props: OrderContent) => {
447
454
  <OSRow>
448
455
  <OText mBottom={4}>
449
456
  {fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
450
- ({fee?.fixed > 0 && `${parsePrice(fee?.fixed)} + `}{fee.percentage}%){' '}
457
+ ({fee?.fixed > 0 && `${parsePrice(fee?.fixed, { currency: order?.currency})} + `}{fee.percentage}%){' '}
451
458
  </OText>
452
459
  </OSRow>
453
- <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>
454
461
  </Table>
455
462
  ))
456
463
  }
@@ -465,7 +472,7 @@ export const OrderContentComponent = (props: OrderContent) => {
465
472
  )}
466
473
  </OText>
467
474
  </OSRow>
468
- <OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
475
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency})}</OText>
469
476
  </Table>
470
477
  ))
471
478
  }
@@ -477,7 +484,7 @@ export const OrderContentComponent = (props: OrderContent) => {
477
484
  </OText>
478
485
 
479
486
  <OText mBottom={4}>
480
- {parsePrice(order?.summary?.delivery_price)}
487
+ {parsePrice(order?.summary?.delivery_price, { currency: order?.currency})}
481
488
  </OText>
482
489
  </Table>
483
490
  )
@@ -493,7 +500,7 @@ export const OrderContentComponent = (props: OrderContent) => {
493
500
  )}
494
501
  </OText>
495
502
  </OSRow>
496
- <OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
503
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency})}</OText>
497
504
  </Table>
498
505
  ))
499
506
  }
@@ -508,7 +515,7 @@ export const OrderContentComponent = (props: OrderContent) => {
508
515
  `(${verifyDecimals(order?.summary?.driver_tip, parseNumber)}%)`
509
516
  )}
510
517
  </OText>
511
- <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>
512
519
  </Table>
513
520
  )}
514
521
 
@@ -522,7 +529,7 @@ export const OrderContentComponent = (props: OrderContent) => {
522
529
  mBottom={4}
523
530
  style={styles.textBold}
524
531
  color={theme.colors.primary}>
525
- {parsePrice(order?.summary?.total ?? order?.total)}
532
+ {parsePrice(order?.summary?.total ?? order?.total, { currency: order?.currency})}
526
533
  </OText>
527
534
  </Table>
528
535
  </Total>
@@ -565,7 +572,7 @@ export const OrderContentComponent = (props: OrderContent) => {
565
572
  )}
566
573
  </View>
567
574
  <OText>
568
- -{parsePrice(event.amount)}
575
+ -{parsePrice(event.amount, { currency: order?.currency})}
569
576
  </OText>
570
577
  </View>
571
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
  };