ordering-ui-react-native 0.16.18 → 0.16.19-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 (204) hide show
  1. package/package.json +7 -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 +33 -4
  9. package/src/components/BusinessInformation/styles.tsx +2 -2
  10. package/src/components/BusinessProductsList/index.tsx +10 -10
  11. package/src/components/BusinessTypeFilter/index.tsx +1 -2
  12. package/src/components/BusinessesListing/index.tsx +1 -1
  13. package/src/components/Checkout/index.tsx +2 -1
  14. package/src/components/LanguageSelector/index.tsx +21 -16
  15. package/src/components/LoginForm/index.tsx +118 -30
  16. package/src/components/LoginForm/styles.tsx +6 -0
  17. package/src/components/Messages/index.tsx +2 -2
  18. package/src/components/NotificationSetting/index.tsx +85 -0
  19. package/src/components/OrderDetails/index.tsx +2 -20
  20. package/src/components/OrdersOption/index.tsx +54 -56
  21. package/src/components/PaymentOptions/index.tsx +335 -365
  22. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  23. package/src/components/ReviewDriver/index.tsx +1 -1
  24. package/src/components/ReviewOrder/index.tsx +2 -1
  25. package/src/components/ReviewProducts/index.tsx +11 -0
  26. package/src/components/SignupForm/index.tsx +143 -61
  27. package/src/components/SingleProductReview/index.tsx +8 -5
  28. package/src/components/StripeElementsForm/index.tsx +25 -16
  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/pages/BusinessesListing.tsx +7 -6
  33. package/src/pages/OrderDetails.tsx +1 -1
  34. package/src/pages/ReviewDriver.tsx +2 -2
  35. package/src/pages/ReviewOrder.tsx +2 -2
  36. package/src/theme.json +0 -1
  37. package/src/types/@fatnlazycat/react-native-recaptcha-v3/index.d.ts +1 -0
  38. package/src/types/index.tsx +13 -9
  39. package/src/utils/index.tsx +0 -1
  40. package/themes/business/index.tsx +4 -0
  41. package/themes/business/src/components/BusinessController/index.tsx +2 -2
  42. package/themes/business/src/components/Chat/index.tsx +42 -34
  43. package/themes/business/src/components/DriverMap/index.tsx +7 -5
  44. package/themes/business/src/components/DriverSchedule/index.tsx +71 -0
  45. package/themes/business/src/components/DriverSchedule/styles.tsx +6 -0
  46. package/themes/business/src/components/LoginForm/index.tsx +111 -74
  47. package/themes/business/src/components/MapView/index.tsx +12 -1
  48. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  49. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  50. package/themes/business/src/components/OrderDetails/Delivery.tsx +3 -3
  51. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +25 -19
  52. package/themes/business/src/components/OrdersListManager/index.tsx +10 -3
  53. package/themes/business/src/components/OrdersOption/index.tsx +65 -21
  54. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  55. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  56. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  57. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  58. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  59. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  60. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  61. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  62. package/themes/business/src/components/PreviousMessages/index.tsx +17 -18
  63. package/themes/business/src/components/PreviousOrders/index.tsx +21 -23
  64. package/themes/business/src/components/ProductItemAccordion/index.tsx +5 -4
  65. package/themes/business/src/components/ReviewCustomer/index.tsx +1 -1
  66. package/themes/business/src/components/ScheduleBlocked/index.tsx +53 -0
  67. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  68. package/themes/business/src/components/UserProfileForm/index.tsx +28 -4
  69. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  70. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  71. package/themes/business/src/components/shared/OModal.tsx +40 -37
  72. package/themes/business/src/types/index.tsx +15 -9
  73. package/themes/business/src/utils/index.tsx +10 -0
  74. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  75. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  76. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  77. package/themes/kiosk/src/components/BusinessMenu/index.tsx +2 -1
  78. package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
  79. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +1 -0
  80. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  81. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  82. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  83. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  84. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  85. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  86. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  87. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  88. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  89. package/themes/kiosk/src/types/index.d.ts +2 -0
  90. package/themes/original/index.tsx +12 -0
  91. package/themes/original/src/components/AddressForm/index.tsx +136 -133
  92. package/themes/original/src/components/AddressList/index.tsx +1 -1
  93. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  94. package/themes/original/src/components/BusinessBasicInformation/index.tsx +302 -160
  95. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
  96. package/themes/original/src/components/BusinessController/index.tsx +173 -108
  97. package/themes/original/src/components/BusinessItemAccordion/index.tsx +8 -6
  98. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  99. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  100. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  101. package/themes/original/src/components/BusinessListingSearch/index.tsx +106 -126
  102. package/themes/original/src/components/BusinessListingSearch/styles.tsx +18 -13
  103. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  104. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  105. package/themes/original/src/components/BusinessProductsList/index.tsx +49 -52
  106. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  107. package/themes/original/src/components/BusinessProductsListing/index.tsx +287 -175
  108. package/themes/original/src/components/BusinessProductsListing/styles.tsx +22 -8
  109. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  110. package/themes/original/src/components/BusinessTypeFilter/index.tsx +109 -40
  111. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  112. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +561 -0
  113. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
  114. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +676 -0
  115. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
  116. package/themes/original/src/components/BusinessesListing/index.tsx +103 -495
  117. package/themes/original/src/components/Cart/index.tsx +42 -10
  118. package/themes/original/src/components/Cart/styles.tsx +4 -0
  119. package/themes/original/src/components/CartContent/index.tsx +22 -16
  120. package/themes/original/src/components/Checkout/index.tsx +106 -66
  121. package/themes/original/src/components/Checkout/styles.tsx +0 -1
  122. package/themes/original/src/components/DriverTips/index.tsx +4 -4
  123. package/themes/original/src/components/DriverTips/styles.tsx +2 -1
  124. package/themes/original/src/components/Favorite/index.tsx +1 -0
  125. package/themes/original/src/components/Favorite/styles.tsx +1 -0
  126. package/themes/original/src/components/FavoriteList/index.tsx +142 -93
  127. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  128. package/themes/original/src/components/GPSButton/index.tsx +20 -19
  129. package/themes/original/src/components/GoogleMap/index.tsx +20 -12
  130. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +8 -3
  131. package/themes/original/src/components/HelpGuide/index.tsx +8 -3
  132. package/themes/original/src/components/HelpOrder/index.tsx +8 -3
  133. package/themes/original/src/components/LanguageSelector/index.tsx +19 -14
  134. package/themes/original/src/components/LoginForm/Otp/index.tsx +3 -2
  135. package/themes/original/src/components/LoginForm/index.tsx +82 -44
  136. package/themes/original/src/components/Messages/index.tsx +17 -17
  137. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  138. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  139. package/themes/original/src/components/MultiCheckout/index.tsx +6 -0
  140. package/themes/original/src/components/MultiOrdersDetails/index.tsx +20 -16
  141. package/themes/original/src/components/MyOrders/index.tsx +68 -6
  142. package/themes/original/src/components/NavBar/index.tsx +15 -9
  143. package/themes/original/src/components/NetworkError/index.tsx +5 -3
  144. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  145. package/themes/original/src/components/Notifications/index.tsx +148 -0
  146. package/themes/original/src/components/Notifications/styles.tsx +17 -0
  147. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  148. package/themes/original/src/components/OrderDetails/index.tsx +200 -42
  149. package/themes/original/src/components/OrderDetails/styles.tsx +15 -2
  150. package/themes/original/src/components/OrderItAgain/index.tsx +75 -0
  151. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  152. package/themes/original/src/components/OrderProgress/index.tsx +8 -2
  153. package/themes/original/src/components/OrderSummary/index.tsx +1 -34
  154. package/themes/original/src/components/OrderTypeSelector/index.tsx +85 -36
  155. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  156. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +100 -106
  157. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +17 -12
  158. package/themes/original/src/components/OrdersOption/index.tsx +71 -55
  159. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  160. package/themes/original/src/components/PaymentOptions/index.tsx +57 -37
  161. package/themes/original/src/components/PhoneInputNumber/index.tsx +4 -10
  162. package/themes/original/src/components/PlaceSpot/index.tsx +243 -47
  163. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  164. package/themes/original/src/components/PreviousOrders/index.tsx +3 -2
  165. package/themes/original/src/components/ProductForm/index.tsx +712 -655
  166. package/themes/original/src/components/ProductForm/styles.tsx +9 -7
  167. package/themes/original/src/components/ProductItemAccordion/index.tsx +170 -128
  168. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  169. package/themes/original/src/components/ProfessionalFilter/index.tsx +129 -0
  170. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  171. package/themes/original/src/components/ProfessionalProfile/index.tsx +309 -0
  172. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  173. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  174. package/themes/original/src/components/ReviewOrder/index.tsx +18 -3
  175. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  176. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  177. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  178. package/themes/original/src/components/SearchBar/index.tsx +10 -5
  179. package/themes/original/src/components/ServiceForm/index.tsx +631 -0
  180. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  181. package/themes/original/src/components/SignupForm/index.tsx +350 -206
  182. package/themes/original/src/components/SingleOrderCard/index.tsx +214 -179
  183. package/themes/original/src/components/SingleProductCard/index.tsx +194 -108
  184. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
  185. package/themes/original/src/components/SingleProductReview/index.tsx +38 -5
  186. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  187. package/themes/original/src/components/StripeElementsForm/index.tsx +15 -7
  188. package/themes/original/src/components/UpsellingProducts/index.tsx +14 -4
  189. package/themes/original/src/components/UserDetails/index.tsx +31 -17
  190. package/themes/original/src/components/UserFormDetails/index.tsx +74 -81
  191. package/themes/original/src/components/UserProfile/index.tsx +57 -29
  192. package/themes/original/src/components/UserProfile/styles.ts +17 -0
  193. package/themes/original/src/components/UserProfileForm/index.tsx +15 -10
  194. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  195. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  196. package/themes/original/src/components/Wallets/index.tsx +174 -162
  197. package/themes/original/src/components/Wallets/styles.tsx +10 -8
  198. package/themes/original/src/components/shared/OBottomPopup.tsx +47 -14
  199. package/themes/original/src/components/shared/OButton.tsx +10 -3
  200. package/themes/original/src/components/shared/OInput.tsx +3 -2
  201. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  202. package/themes/original/src/types/index.tsx +124 -30
  203. package/themes/original/src/utils/index.tsx +77 -0
  204. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -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')}
@@ -21,6 +21,7 @@ const MapViewComponent = (props: MapViewParams) => {
21
21
  customerMarkerGroups,
22
22
  alertState,
23
23
  setAlertState,
24
+ setDriverLocation,
24
25
  onNavigationRedirect,
25
26
  getBusinessLocations,
26
27
  } = props;
@@ -191,7 +192,7 @@ const MapViewComponent = (props: MapViewParams) => {
191
192
  {((customer && marker?.business?.zipcode) || (!customer && marker?.business?.zipcode)) && (
192
193
  <OText>{customer ? marker?.customer?.zipcode : marker?.business?.zipcode}</OText>
193
194
  )}
194
- {customer && marker?.customer?.internal_number && (
195
+ {customer && !!marker?.customer?.internal_number && (
195
196
  <OText>{marker?.customer?.internal_number}</OText>
196
197
  )}
197
198
  <OText textDecorationLine='underline' color={theme.colors.primary}>
@@ -211,6 +212,16 @@ const MapViewComponent = (props: MapViewParams) => {
211
212
  )
212
213
  }
213
214
 
215
+ useEffect(() => {
216
+ if (userLocation.latitude !== 0 && userLocation.longitude !== 0) {
217
+ const location = {
218
+ lat: userLocation.latitude,
219
+ lng: userLocation.longitude
220
+ }
221
+ setDriverLocation({ location })
222
+ }
223
+ }, [userLocation])
224
+
214
225
  return (
215
226
  <SafeAreaView style={{ flex: 1 }}>
216
227
  <View style={{ flex: 1 }}>
@@ -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;
@@ -337,9 +337,14 @@ export const OrderContentComponent = (props: OrderContent) => {
337
337
  </OText>
338
338
  )}
339
339
  {!!order?.comment && (
340
- <OText style={{ fontStyle: 'italic', opacity: 0.6, marginBottom: 5 }}>
341
- {order?.comment}
342
- </OText>
340
+ <>
341
+ <OText weight='500' style={{ marginBottom: 5 }}>
342
+ {t('ORDER_COMMENT', 'Order Comment')}
343
+ </OText>
344
+ <OText style={{ fontStyle: 'italic', opacity: 0.6, marginBottom: 20 }}>
345
+ {order?.comment}
346
+ </OText>
347
+ </>
343
348
  )}
344
349
  </View>
345
350
  )}
@@ -364,6 +369,7 @@ export const OrderContentComponent = (props: OrderContent) => {
364
369
  <ProductItemAccordion
365
370
  key={product?.id || i}
366
371
  product={product}
372
+ currency={order?.currency}
367
373
  />
368
374
  ))}
369
375
  </OrderProducts>
@@ -372,7 +378,7 @@ export const OrderContentComponent = (props: OrderContent) => {
372
378
  <Table>
373
379
  <OText mBottom={4}>{t('SUBTOTAL', 'Subtotal')}</OText>
374
380
  <OText mBottom={4}>
375
- {parsePrice(((order?.summary?.subtotal ?? order?.subtotal) + getIncludedTaxes()))}
381
+ {parsePrice(((order?.summary?.subtotal ?? order?.subtotal) + getIncludedTaxes()), { currency: order?.currency})}
376
382
  </OText>
377
383
  </Table>
378
384
  {(order?.summary?.discount > 0 ?? order?.discount > 0) && order?.offers?.length === 0 && (
@@ -385,7 +391,7 @@ export const OrderContentComponent = (props: OrderContent) => {
385
391
  ) : (
386
392
  <OText mBottom={4}>{t('DISCOUNT', theme?.defaultLanguages?.DISCOUNT || 'Discount')}</OText>
387
393
  )}
388
- <OText>- {parsePrice(order?.summary?.discount ?? order?.discount)}</OText>
394
+ <OText>- {parsePrice(order?.summary?.discount ?? order?.discount, { currency: order?.currency})}</OText>
389
395
  </Table>
390
396
  )}
391
397
  {
@@ -399,7 +405,7 @@ export const OrderContentComponent = (props: OrderContent) => {
399
405
  )}
400
406
  </OText>
401
407
  </OSRow>
402
- <OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
408
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency})}</OText>
403
409
  </Table>
404
410
  ))
405
411
  }
@@ -407,9 +413,9 @@ export const OrderContentComponent = (props: OrderContent) => {
407
413
  <Table>
408
414
  <OText mBottom={4}>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
409
415
  {order?.tax_type === 1 ? (
410
- <OText mBottom={4}>{parsePrice((order?.summary?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0))}</OText>
416
+ <OText mBottom={4}>{parsePrice((order?.summary?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0), { currency: order?.currency})}</OText>
411
417
  ) : (
412
- <OText mBottom={4}>{parsePrice(order?.summary?.subtotal_with_discount ?? 0)}</OText>
418
+ <OText mBottom={4}>{parsePrice(order?.summary?.subtotal_with_discount ?? 0, { currency: order?.currency})}</OText>
413
419
  )}
414
420
  </Table>
415
421
  )}
@@ -419,7 +425,7 @@ export const OrderContentComponent = (props: OrderContent) => {
419
425
  {t('TAX', 'Tax')} {`(${verifyDecimals(order?.tax, parseNumber)}%)`}
420
426
  </OText>
421
427
  <OText mBottom={4}>
422
- {parsePrice(order?.summary?.tax ?? 0)}
428
+ {parsePrice(order?.summary?.tax ?? 0, { currency: order?.currency})}
423
429
  </OText>
424
430
  </Table>
425
431
  )}
@@ -430,7 +436,7 @@ export const OrderContentComponent = (props: OrderContent) => {
430
436
  {t('SERVICE_FEE', 'Service fee')}
431
437
  {`(${verifyDecimals(order?.service_fee, parseNumber)}%)`}
432
438
  </OText>
433
- <OText mBottom={4}>{parsePrice(order?.summary?.service_fee ?? 0)}</OText>
439
+ <OText mBottom={4}>{parsePrice(order?.summary?.service_fee ?? 0, { currency: order?.currency})}</OText>
434
440
  </Table>
435
441
  )
436
442
  }
@@ -443,7 +449,7 @@ export const OrderContentComponent = (props: OrderContent) => {
443
449
  {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
444
450
  </OText>
445
451
  </OSRow>
446
- <OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
452
+ <OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0, { currency: order?.currency})}</OText>
447
453
  </Table>
448
454
  ))
449
455
  }
@@ -453,10 +459,10 @@ export const OrderContentComponent = (props: OrderContent) => {
453
459
  <OSRow>
454
460
  <OText mBottom={4}>
455
461
  {fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
456
- ({fee?.fixed > 0 && `${parsePrice(fee?.fixed)} + `}{fee.percentage}%){' '}
462
+ ({fee?.fixed > 0 && `${parsePrice(fee?.fixed, { currency: order?.currency})} + `}{fee.percentage}%){' '}
457
463
  </OText>
458
464
  </OSRow>
459
- <OText mBottom={4}>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0)}</OText>
465
+ <OText mBottom={4}>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0, { currency: order?.currency})}</OText>
460
466
  </Table>
461
467
  ))
462
468
  }
@@ -471,7 +477,7 @@ export const OrderContentComponent = (props: OrderContent) => {
471
477
  )}
472
478
  </OText>
473
479
  </OSRow>
474
- <OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
480
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency})}</OText>
475
481
  </Table>
476
482
  ))
477
483
  }
@@ -483,7 +489,7 @@ export const OrderContentComponent = (props: OrderContent) => {
483
489
  </OText>
484
490
 
485
491
  <OText mBottom={4}>
486
- {parsePrice(order?.summary?.delivery_price)}
492
+ {parsePrice(order?.summary?.delivery_price, { currency: order?.currency})}
487
493
  </OText>
488
494
  </Table>
489
495
  )
@@ -499,7 +505,7 @@ export const OrderContentComponent = (props: OrderContent) => {
499
505
  )}
500
506
  </OText>
501
507
  </OSRow>
502
- <OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
508
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency})}</OText>
503
509
  </Table>
504
510
  ))
505
511
  }
@@ -514,7 +520,7 @@ export const OrderContentComponent = (props: OrderContent) => {
514
520
  `(${verifyDecimals(order?.summary?.driver_tip, parseNumber)}%)`
515
521
  )}
516
522
  </OText>
517
- <OText mBottom={4}>{parsePrice(order?.summary?.driver_tip ?? order?.totalDriverTip)}</OText>
523
+ <OText mBottom={4}>{parsePrice(order?.summary?.driver_tip ?? order?.totalDriverTip, { currency: order?.currency})}</OText>
518
524
  </Table>
519
525
  )}
520
526
 
@@ -528,7 +534,7 @@ export const OrderContentComponent = (props: OrderContent) => {
528
534
  mBottom={4}
529
535
  style={styles.textBold}
530
536
  color={theme.colors.primary}>
531
- {parsePrice(order?.summary?.total ?? order?.total)}
537
+ {parsePrice(order?.summary?.total ?? order?.total, { currency: order?.currency})}
532
538
  </OText>
533
539
  </Table>
534
540
  </Total>
@@ -571,7 +577,7 @@ export const OrderContentComponent = (props: OrderContent) => {
571
577
  )}
572
578
  </View>
573
579
  <OText>
574
- -{parsePrice(event.amount)}
580
+ -{parsePrice(event.amount, { currency: order?.currency})}
575
581
  </OText>
576
582
  </View>
577
583
  ))}
@@ -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
  };