ordering-ui-react-native 0.16.33 → 0.16.34-release

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/package.json +7 -5
  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/BusinessBasicInformation/index.tsx +11 -19
  6. package/src/components/BusinessInformation/index.tsx +33 -4
  7. package/src/components/BusinessInformation/styles.tsx +2 -2
  8. package/src/components/BusinessProductsList/index.tsx +10 -10
  9. package/src/components/BusinessesListing/index.tsx +1 -1
  10. package/src/components/Checkout/index.tsx +2 -1
  11. package/src/components/LanguageSelector/index.tsx +21 -16
  12. package/src/components/LoginForm/index.tsx +15 -0
  13. package/src/components/Messages/index.tsx +2 -2
  14. package/src/components/NotificationSetting/index.tsx +85 -0
  15. package/src/components/OrderDetails/index.tsx +2 -20
  16. package/src/components/OrdersOption/index.tsx +54 -56
  17. package/src/components/PaymentOptions/index.tsx +335 -365
  18. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  19. package/src/components/ReviewDriver/index.tsx +1 -1
  20. package/src/components/ReviewOrder/index.tsx +2 -1
  21. package/src/components/ReviewProducts/index.tsx +11 -0
  22. package/src/components/SignupForm/index.tsx +15 -0
  23. package/src/components/SingleProductReview/index.tsx +8 -5
  24. package/src/components/StripeElementsForm/index.tsx +25 -16
  25. package/src/components/VerifyPhone/styles.tsx +1 -2
  26. package/src/components/shared/OBottomPopup.tsx +6 -2
  27. package/src/index.tsx +2 -0
  28. package/src/pages/BusinessesListing.tsx +7 -6
  29. package/src/pages/OrderDetails.tsx +1 -1
  30. package/src/pages/ReviewDriver.tsx +2 -2
  31. package/src/pages/ReviewOrder.tsx +2 -2
  32. package/src/types/@fatnlazycat/react-native-recaptcha-v3/index.d.ts +1 -0
  33. package/src/utils/index.tsx +2 -1
  34. package/themes/business/index.tsx +4 -0
  35. package/themes/business/src/components/BusinessController/index.tsx +2 -2
  36. package/themes/business/src/components/Chat/index.tsx +38 -30
  37. package/themes/business/src/components/DriverMap/index.tsx +7 -5
  38. package/themes/business/src/components/DriverSchedule/index.tsx +71 -0
  39. package/themes/business/src/components/DriverSchedule/styles.tsx +6 -0
  40. package/themes/business/src/components/LoginForm/index.tsx +111 -74
  41. package/themes/business/src/components/MapView/index.tsx +12 -1
  42. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  43. package/themes/business/src/components/NewOrderNotification/index.tsx +26 -41
  44. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  45. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +25 -19
  46. package/themes/business/src/components/OrdersListManager/index.tsx +10 -3
  47. package/themes/business/src/components/OrdersOption/index.tsx +65 -21
  48. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  49. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  50. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  51. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  52. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  53. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  54. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  55. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  56. package/themes/business/src/components/PreviousMessages/index.tsx +17 -18
  57. package/themes/business/src/components/PreviousOrders/index.tsx +21 -23
  58. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  59. package/themes/business/src/components/ReviewCustomer/index.tsx +27 -13
  60. package/themes/business/src/components/ScheduleBlocked/index.tsx +53 -0
  61. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  62. package/themes/business/src/components/UserProfileForm/index.tsx +28 -4
  63. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  64. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  65. package/themes/business/src/components/shared/OModal.tsx +40 -37
  66. package/themes/business/src/types/index.tsx +15 -9
  67. package/themes/business/src/utils/index.tsx +10 -0
  68. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  69. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  70. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  71. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -1
  72. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  73. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  74. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  75. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  76. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  77. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  78. package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
  79. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  80. package/themes/kiosk/src/types/index.d.ts +2 -0
  81. package/themes/original/index.tsx +4 -0
  82. package/themes/original/src/components/AddressDetails/index.tsx +2 -2
  83. package/themes/original/src/components/AddressForm/index.tsx +151 -140
  84. package/themes/original/src/components/AddressList/index.tsx +1 -1
  85. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  86. package/themes/original/src/components/BusinessBasicInformation/index.tsx +311 -161
  87. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
  88. package/themes/original/src/components/BusinessController/index.tsx +190 -113
  89. package/themes/original/src/components/BusinessController/styles.tsx +0 -7
  90. package/themes/original/src/components/BusinessItemAccordion/index.tsx +4 -4
  91. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  92. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  93. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  94. package/themes/original/src/components/BusinessListingSearch/index.tsx +80 -128
  95. package/themes/original/src/components/BusinessListingSearch/styles.tsx +10 -12
  96. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  97. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  98. package/themes/original/src/components/BusinessProductsList/index.tsx +49 -52
  99. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  100. package/themes/original/src/components/BusinessProductsListing/index.tsx +173 -104
  101. package/themes/original/src/components/BusinessProductsListing/styles.tsx +18 -11
  102. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  103. package/themes/original/src/components/BusinessTypeFilter/index.tsx +3 -2
  104. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +37 -25
  105. package/themes/original/src/components/BusinessesListing/Layout/Appointment/styles.tsx +5 -4
  106. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +278 -104
  107. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +47 -10
  108. package/themes/original/src/components/BusinessesListing/index.tsx +95 -7
  109. package/themes/original/src/components/Cart/index.tsx +44 -12
  110. package/themes/original/src/components/Cart/styles.tsx +4 -0
  111. package/themes/original/src/components/CartContent/index.tsx +22 -16
  112. package/themes/original/src/components/Checkout/index.tsx +101 -61
  113. package/themes/original/src/components/Checkout/styles.tsx +0 -1
  114. package/themes/original/src/components/DriverTips/index.tsx +4 -4
  115. package/themes/original/src/components/DriverTips/styles.tsx +2 -1
  116. package/themes/original/src/components/Favorite/index.tsx +1 -0
  117. package/themes/original/src/components/FavoriteList/index.tsx +32 -2
  118. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  119. package/themes/original/src/components/GPSButton/index.tsx +20 -19
  120. package/themes/original/src/components/GoogleMap/index.tsx +20 -12
  121. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +25 -10
  122. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +4 -0
  123. package/themes/original/src/components/HelpGuide/index.tsx +9 -8
  124. package/themes/original/src/components/HelpOrder/index.tsx +9 -8
  125. package/themes/original/src/components/LanguageSelector/index.tsx +19 -14
  126. package/themes/original/src/components/LoginForm/Otp/index.tsx +95 -72
  127. package/themes/original/src/components/LoginForm/index.tsx +90 -46
  128. package/themes/original/src/components/LottieAnimation/index.tsx +69 -0
  129. package/themes/original/src/components/Messages/index.tsx +17 -17
  130. package/themes/original/src/components/MomentOption/index.tsx +8 -6
  131. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +92 -92
  132. package/themes/original/src/components/MultiCheckout/index.tsx +6 -0
  133. package/themes/original/src/components/MultiOrdersDetails/index.tsx +20 -16
  134. package/themes/original/src/components/MyOrders/index.tsx +70 -6
  135. package/themes/original/src/components/NavBar/index.tsx +15 -9
  136. package/themes/original/src/components/NetworkError/index.tsx +5 -3
  137. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  138. package/themes/original/src/components/Notifications/index.tsx +148 -0
  139. package/themes/original/src/components/Notifications/styles.tsx +17 -0
  140. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  141. package/themes/original/src/components/OrderDetails/index.tsx +200 -37
  142. package/themes/original/src/components/OrderDetails/styles.tsx +15 -2
  143. package/themes/original/src/components/OrderItAgain/index.tsx +75 -0
  144. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  145. package/themes/original/src/components/OrderProgress/index.tsx +77 -66
  146. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  147. package/themes/original/src/components/OrderSummary/index.tsx +3 -36
  148. package/themes/original/src/components/OrderTypeSelector/index.tsx +85 -36
  149. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  150. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +97 -106
  151. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +3 -0
  152. package/themes/original/src/components/OrdersOption/index.tsx +71 -55
  153. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  154. package/themes/original/src/components/PaymentOptions/index.tsx +41 -23
  155. package/themes/original/src/components/PhoneInputNumber/index.tsx +5 -11
  156. package/themes/original/src/components/PlaceSpot/index.tsx +243 -47
  157. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  158. package/themes/original/src/components/PreviousOrders/index.tsx +3 -2
  159. package/themes/original/src/components/ProductForm/index.tsx +635 -664
  160. package/themes/original/src/components/ProductForm/styles.tsx +9 -8
  161. package/themes/original/src/components/ProductItemAccordion/index.tsx +199 -128
  162. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  163. package/themes/original/src/components/ProfessionalFilter/index.tsx +2 -1
  164. package/themes/original/src/components/ProfessionalProfile/index.tsx +26 -14
  165. package/themes/original/src/components/ReviewDriver/index.tsx +7 -7
  166. package/themes/original/src/components/ReviewOrder/index.tsx +18 -3
  167. package/themes/original/src/components/ReviewProducts/index.tsx +2 -2
  168. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  169. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  170. package/themes/original/src/components/SearchBar/index.tsx +5 -3
  171. package/themes/original/src/components/ServiceForm/index.tsx +410 -258
  172. package/themes/original/src/components/SignupForm/index.tsx +350 -206
  173. package/themes/original/src/components/SingleOrderCard/index.tsx +229 -181
  174. package/themes/original/src/components/SingleOrderCard/styles.tsx +0 -7
  175. package/themes/original/src/components/SingleProductCard/index.tsx +200 -110
  176. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -10
  177. package/themes/original/src/components/SingleProductReview/index.tsx +38 -5
  178. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  179. package/themes/original/src/components/StripeElementsForm/index.tsx +18 -7
  180. package/themes/original/src/components/UpsellingProducts/index.tsx +15 -5
  181. package/themes/original/src/components/UserDetails/index.tsx +31 -17
  182. package/themes/original/src/components/UserFormDetails/index.tsx +74 -81
  183. package/themes/original/src/components/UserProfile/index.tsx +54 -29
  184. package/themes/original/src/components/UserProfile/styles.ts +17 -0
  185. package/themes/original/src/components/UserProfileForm/index.tsx +15 -10
  186. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  187. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  188. package/themes/original/src/components/Wallets/index.tsx +176 -164
  189. package/themes/original/src/components/Wallets/styles.tsx +12 -8
  190. package/themes/original/src/components/shared/CardAnimation.tsx +47 -0
  191. package/themes/original/src/components/shared/OBottomPopup.tsx +48 -15
  192. package/themes/original/src/components/shared/OButton.tsx +10 -3
  193. package/themes/original/src/components/shared/OIcon.tsx +8 -1
  194. package/themes/original/src/components/shared/OInput.tsx +13 -3
  195. package/themes/original/src/layouts/Container.tsx +13 -9
  196. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  197. package/themes/original/src/types/index.tsx +91 -30
  198. package/themes/original/src/utils/index.tsx +121 -10
  199. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -5,6 +5,7 @@ import { useForm, Controller } from 'react-hook-form';
5
5
  import { PhoneInputNumber } from '../PhoneInputNumber';
6
6
  import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
7
7
  import Recaptcha from 'react-native-recaptcha-that-works'
8
+ import ReCaptcha from '@fatnlazycat/react-native-recaptcha-v3'
8
9
 
9
10
  import {
10
11
  LoginForm as LoginFormController,
@@ -95,14 +96,14 @@ const LoginFormUI = (props: LoginParams) => {
95
96
  const [alertState, setAlertState] = useState({ open: false, title: '', content: [] })
96
97
  const [tabLayouts, setTabLayouts] = useState<any>({})
97
98
  const tabsRef = useRef<any>(null)
98
-
99
+ const enabledPoweredByOrdering = configs?.powered_by_ordering_module?.value
99
100
  const theme = useTheme();
100
101
  const isOtpEmail = loginTab === 'otp' && otpType === 'email'
101
102
  const isOtpCellphone = loginTab === 'otp' && otpType === 'cellphone'
102
103
 
103
104
  const googleLoginEnabled = configs?.google_login_enabled?.value === '1' || !configs?.google_login_enabled?.enabled
104
105
  const facebookLoginEnabled = configs?.facebook_login_enabled?.value === '1' || !configs?.facebook_login_enabled?.enabled
105
- const appleLoginEnabled = configs?.apple_login_enabled?.value === '1' || !configs?.apple_login_enabled?.enabled
106
+ const appleLoginEnabled = configs?.apple_login_enabled?.value === '1' || !configs?.apple_login_enabled?.enabled
106
107
 
107
108
  const loginStyle = StyleSheet.create({
108
109
  btnOutline: {
@@ -235,7 +236,7 @@ const LoginFormUI = (props: LoginParams) => {
235
236
 
236
237
  const onRecaptchaVerify = (token: any) => {
237
238
  setRecaptchaVerified(true)
238
- handleReCaptcha(token)
239
+ handleReCaptcha({ code: token, version: recaptchaConfig?.version })
239
240
  }
240
241
 
241
242
  const handleChangeOtpType = (type: string) => {
@@ -256,7 +257,7 @@ const LoginFormUI = (props: LoginParams) => {
256
257
  })
257
258
  }
258
259
 
259
- const handleCategoryScroll = (opc : string) => {
260
+ const handleCategoryScroll = (opc: string) => {
260
261
  tabsRef.current.scrollTo({
261
262
  x: tabLayouts?.[opc]?.x - 40,
262
263
  animated: true
@@ -272,15 +273,39 @@ const LoginFormUI = (props: LoginParams) => {
272
273
 
273
274
  useEffect(() => {
274
275
  if (configs && Object.keys(configs).length > 0 && enableReCaptcha) {
275
- setRecaptchaConfig({
276
- siteKey: configs?.security_recaptcha_site_key?.value || null,
277
- baseUrl: configs?.security_recaptcha_base_url?.value || null
278
- })
276
+ if (configs?.security_recaptcha_type?.value === 'v3' &&
277
+ configs?.security_recaptcha_score_v3?.value > 0 &&
278
+ configs?.security_recaptcha_site_key_v3?.value
279
+ ) {
280
+ setRecaptchaConfig({
281
+ version: 'v3',
282
+ siteKey: configs?.security_recaptcha_site_key_v3?.value || null,
283
+ baseUrl: configs?.security_recaptcha_base_url?.value || null
284
+ })
285
+ return
286
+ }
287
+ if (configs?.security_recaptcha_site_key?.value) {
288
+ setRecaptchaConfig({
289
+ version: 'v2',
290
+ siteKey: configs?.security_recaptcha_site_key?.value || null,
291
+ baseUrl: configs?.security_recaptcha_base_url?.value || null
292
+ })
293
+ }
279
294
  }
280
295
  }, [configs, enableReCaptcha])
281
296
 
282
297
  useEffect(() => {
283
298
  if (!formState.loading && formState.result?.error) {
299
+ if (formState.result?.result?.[0] === 'ERROR_AUTH_VERIFICATION_CODE') {
300
+ setRecaptchaVerified(false)
301
+ setRecaptchaConfig({
302
+ version: 'v2',
303
+ siteKey: configs?.security_recaptcha_site_key?.value || null,
304
+ baseUrl: configs?.security_recaptcha_base_url?.value || null
305
+ })
306
+ showToast(ToastType.Info, t('TRY_AGAIN', 'Please try again'))
307
+ return
308
+ }
284
309
  formState.result?.result &&
285
310
  showToast(
286
311
  ToastType.Error,
@@ -351,15 +376,15 @@ const LoginFormUI = (props: LoginParams) => {
351
376
  titleStyle={{ marginRight: 0, marginLeft: 0 }}
352
377
  />
353
378
  <FormSide>
354
- {((useLoginByEmail && useLoginByCellphone) || useLoginOtp) && (
379
+ {(Number(useLoginByEmail) + Number(useLoginByCellphone) + Number(useLoginOtpEmail) + Number(useLoginOtpCellphone) > 1) && (
355
380
  <LoginWith>
356
381
  <OTabs
357
- horizontal
382
+ horizontal
358
383
  showsHorizontalScrollIndicator={false}
359
384
  ref={tabsRef}
360
385
  >
361
386
  {useLoginByEmail && (
362
- <TabBtn
387
+ <TabBtn
363
388
  onPress={() => handleChangeTab('email')}
364
389
  onLayout={(event: any) => handleOnLayout(event, 'email')}
365
390
  >
@@ -384,7 +409,7 @@ const LoginFormUI = (props: LoginParams) => {
384
409
  </TabBtn>
385
410
  )}
386
411
  {useLoginByCellphone && (
387
- <TabBtn
412
+ <TabBtn
388
413
  onPress={() => handleChangeTab('cellphone')}
389
414
  onLayout={(event: any) => handleOnLayout(event, 'cellphone')}
390
415
  >
@@ -409,7 +434,7 @@ const LoginFormUI = (props: LoginParams) => {
409
434
  </TabBtn>
410
435
  )}
411
436
  {useLoginOtpEmail && (
412
- <TabBtn
437
+ <TabBtn
413
438
  onPress={() => handleChangeOtpType('email')}
414
439
  onLayout={(event: any) => handleOnLayout(event, 'otp_email')}
415
440
  >
@@ -434,7 +459,7 @@ const LoginFormUI = (props: LoginParams) => {
434
459
  </TabBtn>
435
460
  )}
436
461
  {useLoginOtpCellphone && (
437
- <TabBtn
462
+ <TabBtn
438
463
  onPress={() => handleChangeOtpType('cellphone')}
439
464
  onLayout={(event: any) => handleOnLayout(event, 'otp_cellphone')}
440
465
  >
@@ -596,35 +621,47 @@ const LoginFormUI = (props: LoginParams) => {
596
621
  </TouchableOpacity>
597
622
  )}
598
623
 
599
- {enableReCaptcha && (
624
+ {(enableReCaptcha && recaptchaConfig?.version) && (
600
625
  <>
601
- <TouchableOpacity
602
- onPress={handleOpenRecaptcha}
603
- >
604
- <RecaptchaButton>
605
- {recaptchaVerified ? (
606
- <MaterialCommunityIcons
607
- name="checkbox-marked"
608
- size={26}
609
- color={theme.colors.primary}
610
- />
611
- ) : (
612
- <MaterialCommunityIcons
613
- name="checkbox-blank-outline"
614
- size={26}
615
- color={theme.colors.mediumGray}
616
- />
617
- )}
618
- <OText size={14} mLeft={8}>{t('VERIFY_ReCAPTCHA', 'Verify reCAPTCHA')}</OText>
619
- </RecaptchaButton>
620
- </TouchableOpacity>
621
- <Recaptcha
622
- ref={recaptchaRef}
623
- siteKey={recaptchaConfig?.siteKey}
624
- baseUrl={recaptchaConfig?.baseUrl}
625
- onVerify={onRecaptchaVerify}
626
- onExpire={() => setRecaptchaVerified(false)}
627
- />
626
+ {recaptchaConfig?.version === 'v3' ? (
627
+ <ReCaptcha
628
+ url={recaptchaConfig?.baseUrl}
629
+ siteKey={recaptchaConfig?.siteKey}
630
+ containerStyle={{ height: 40 }}
631
+ onExecute={onRecaptchaVerify}
632
+ reCaptchaType={1}
633
+ />
634
+ ) : (
635
+ <>
636
+ <TouchableOpacity
637
+ onPress={handleOpenRecaptcha}
638
+ >
639
+ <RecaptchaButton>
640
+ {recaptchaVerified ? (
641
+ <MaterialCommunityIcons
642
+ name="checkbox-marked"
643
+ size={26}
644
+ color={theme.colors.primary}
645
+ />
646
+ ) : (
647
+ <MaterialCommunityIcons
648
+ name="checkbox-blank-outline"
649
+ size={26}
650
+ color={theme.colors.mediumGray}
651
+ />
652
+ )}
653
+ <OText size={14} mLeft={8}>{t('VERIFY_ReCAPTCHA', 'Verify reCAPTCHA')}</OText>
654
+ </RecaptchaButton>
655
+ </TouchableOpacity>
656
+ <Recaptcha
657
+ ref={recaptchaRef}
658
+ siteKey={recaptchaConfig?.siteKey}
659
+ baseUrl={recaptchaConfig?.baseUrl}
660
+ onVerify={onRecaptchaVerify}
661
+ onExpire={() => setRecaptchaVerified(false)}
662
+ />
663
+ </>)
664
+ }
628
665
  </>
629
666
  )}
630
667
  <OButton
@@ -643,7 +680,7 @@ const LoginFormUI = (props: LoginParams) => {
643
680
  {t('NEW_ON_PLATFORM', 'New on Ordering?')}
644
681
  </OText>
645
682
  <TouchableOpacity onPress={() => onNavigationRedirect('Signup')}>
646
- <OText size={14} mLeft={5} color={theme.colors.skyBlue}>
683
+ <OText size={14} mLeft={5} color={theme.colors.primary}>
647
684
  {t('CREATE_ACCOUNT', 'Create account')}
648
685
  </OText>
649
686
  </TouchableOpacity>
@@ -682,8 +719,9 @@ const LoginFormUI = (props: LoginParams) => {
682
719
  )}
683
720
 
684
721
  {configs && Object.keys(configs).length > 0 ? (
685
- (((configs?.facebook_login?.value === 'true' || configs?.facebook_login?.value === '1') && configs?.facebook_id?.value) ||
686
- (configs?.google_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null)) &&
722
+ (((configs?.facebook_login?.value === 'true' || configs?.facebook_login?.value === '1') && configs?.facebook_id?.value && facebookLoginEnabled) ||
723
+ ((configs?.google_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null) && googleLoginEnabled) ||
724
+ ((configs?.apple_login_client_id?.value !== '' && configs?.apple_login_client_id?.value !== null) && appleLoginEnabled)) &&
687
725
  (
688
726
  <>
689
727
  <View
@@ -707,7 +745,7 @@ const LoginFormUI = (props: LoginParams) => {
707
745
  <ButtonsWrapper>
708
746
  <SocialButtons>
709
747
  {(configs?.facebook_login?.value === 'true' || configs?.facebook_login?.value === '1') &&
710
- configs?.facebook_id?.value &&
748
+ configs?.facebook_id?.value &&
711
749
  facebookLoginEnabled && (
712
750
  <FacebookLogin
713
751
  notificationState={notificationState}
@@ -751,6 +789,12 @@ const LoginFormUI = (props: LoginParams) => {
751
789
  </Placeholder>
752
790
  </SkeletonWrapper>
753
791
  )}
792
+
793
+ {enabledPoweredByOrdering && (
794
+ <OText>
795
+ Powered By Ordering.co
796
+ </OText>
797
+ )}
754
798
  </FormSide>
755
799
  <OModal
756
800
  open={isModalVisible}
@@ -0,0 +1,69 @@
1
+ import React, { useRef } from 'react'
2
+ import Lottie from 'lottie-react-native';
3
+ import { TouchableOpacity, Easing, ViewStyle, Animated } from 'react-native';
4
+ import IconAntDesign from 'react-native-vector-icons/AntDesign'
5
+ import { useTheme } from 'styled-components';
6
+
7
+ interface Props {
8
+ initialValue: number,
9
+ onClick: any,
10
+ disableAnimation?: boolean
11
+ toValue: number,
12
+ style?: ViewStyle,
13
+ duration?: number,
14
+ type: 'favorite', // animation types
15
+ isActive: boolean,
16
+ animationType?: ((value : number) => number);
17
+ useNativeDriver?: boolean,
18
+ iconProps?: {color?: string, size?: number, style?: ViewStyle}
19
+ }
20
+
21
+ export const LottieAnimation = (props: Props) => {
22
+ const {
23
+ initialValue,
24
+ onClick,
25
+ disableAnimation,
26
+ toValue,
27
+ style,
28
+ duration,
29
+ type,
30
+ isActive,
31
+ useNativeDriver,
32
+ animationType,
33
+ iconProps
34
+ } = props
35
+ const theme = useTheme()
36
+ const animationProgress = useRef(new Animated.Value(initialValue))
37
+ const favoriteArray = ['heart', 'hearto']
38
+ const icon = type === 'favorite' ? favoriteArray : []
39
+ const animationGif = type === 'favorite' ? theme.images?.general?.heart : ''
40
+ const onPressLottie = () => {
41
+ if (!disableAnimation) {
42
+ Animated.timing(animationProgress.current, {
43
+ toValue,
44
+ duration: duration || 5000,
45
+ easing: animationType || Easing.linear,
46
+ useNativeDriver: useNativeDriver ?? true
47
+ }).start();
48
+ }
49
+ onClick()
50
+ }
51
+
52
+ return (
53
+ <TouchableOpacity
54
+ onPress={onPressLottie}
55
+ style={style}
56
+ >
57
+ <Lottie
58
+ progress={animationProgress.current}
59
+ source={animationGif}
60
+ />
61
+ <IconAntDesign
62
+ name={isActive ? icon[0] : icon[1]}
63
+ color={iconProps?.color || theme.colors.danger5}
64
+ size={iconProps?.size || 16}
65
+ style={iconProps?.style}
66
+ />
67
+ </TouchableOpacity>
68
+ )
69
+ }
@@ -5,6 +5,7 @@ import { launchImageLibrary } from 'react-native-image-picker'
5
5
  import { GiftedChat, Actions, ActionsProps, InputToolbar, Composer, Send, Bubble, MessageImage, InputToolbarProps, ComposerProps } from 'react-native-gifted-chat'
6
6
  import { USER_TYPE } from '../../config/constants'
7
7
  import MaterialCommunityIcon from 'react-native-vector-icons/MaterialCommunityIcons'
8
+ import AntDesignIcon from 'react-native-vector-icons/AntDesign'
8
9
  import { OIcon, OIconButton, OText, OButton } from '../shared'
9
10
  import { TouchableOpacity, ActivityIndicator, StyleSheet, View, Platform, Keyboard } from 'react-native'
10
11
  import { Header, TitleHeader, Wrapper, QuickMessageContainer, ProfileMessageHeader, MessageTypeItem } from './styles'
@@ -36,7 +37,7 @@ const ORDER_STATUS: any = {
36
37
  20: 'ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS',
37
38
  21: 'ORDER_CUSTOMER_ARRIVED_BUSINESS',
38
39
  22: 'ORDER_LOOKING_FOR_DRIVER',
39
- 23: 'ORDER_DRIVER_ON_WAY'
40
+ 23: 'ORDER_DRIVER_ON_WAY'
40
41
  }
41
42
 
42
43
  const filterSpecialStatus = ['prepared_in', 'delivered_in', 'delivery_datetime']
@@ -122,18 +123,17 @@ const MessagesUI = (props: MessagesParams) => {
122
123
 
123
124
  const messageConsole = (message: any) => {
124
125
  return message.change?.attribute !== 'driver_id'
125
- ?
126
- `${t('ORDER', 'Order')} ${t(message.change.attribute.toUpperCase(), message.change.attribute.replace('_', ' '))} ${t('CHANGED_FROM', 'Changed from')} ${
127
- filterSpecialStatus.includes(message.change.attribute) ?
128
- `${message.change.old === null ? '0' : message.change.old} ${t('TO', 'to')} ${message.change.new} ${t('MINUTES', 'Minutes')}` :
129
- `${message.change.old !== null && t(ORDER_STATUS[parseInt(message.change.old, 10)])} ${t('TO', 'to')} ${t(ORDER_STATUS[parseInt(message.change.new, 10)])}`
130
- }`
131
- : message.change.new
132
126
  ?
133
- `${message.driver?.name} ${message.driver?.lastname !== null ? message.driver.lastname : ''} ${t('WAS_ASSIGNED_AS_DRIVER', 'Was assigned as driver')} ${message.comment ? message.comment.length : ''}`
134
- :
135
- `${t('DRIVER_UNASSIGNED', 'Driver unassigned')}`
136
- }
127
+ `${t('ORDER', 'Order')} ${t(message.change.attribute.toUpperCase(), message.change.attribute.replace('_', ' '))} ${t('CHANGED_FROM', 'Changed from')} ${filterSpecialStatus.includes(message.change.attribute) ?
128
+ `${message.change.old === null ? '0' : message.change.old} ${t('TO', 'to')} ${message.change.new} ${t('MINUTES', 'Minutes')}` :
129
+ `${message.change.old !== null && t(ORDER_STATUS[parseInt(message.change.old, 10)])} ${t('TO', 'to')} ${t(ORDER_STATUS[parseInt(message.change.new, 10)])}`
130
+ }`
131
+ : message.change.new
132
+ ?
133
+ `${message.driver?.name} ${message.driver?.lastname !== null ? message.driver.lastname : ''} ${t('WAS_ASSIGNED_AS_DRIVER', 'Was assigned as driver')} ${message.comment ? message.comment.length : ''}`
134
+ :
135
+ `${t('DRIVER_UNASSIGNED', 'Driver unassigned')}`
136
+ }
137
137
 
138
138
  useEffect(() => {
139
139
  let newMessages: Array<any> = []
@@ -402,7 +402,9 @@ const MessagesUI = (props: MessagesParams) => {
402
402
  <Wrapper>
403
403
  {!isMeesageListing ? (
404
404
  <Header>
405
- <OIconButton icon={theme.images.general.arrow_left} style={{ paddingStart: 10, borderColor: theme.colors.clear }} onClick={onClose} />
405
+ <TouchableOpacity onPress={onClose} style={{ paddingStart: 10, borderColor: theme.colors.clear }}>
406
+ <AntDesignIcon name='arrowleft' size={26} />
407
+ </TouchableOpacity>
406
408
  <View style={{ marginRight: 10, shadowColor: theme.colors.black, shadowOpacity: 0.1, shadowOffset: { width: 0, height: 1 }, shadowRadius: 2 }}>
407
409
  <OIcon
408
410
  url={type === USER_TYPE.DRIVER ? order?.driver?.photo : order?.business?.logo}
@@ -419,10 +421,8 @@ const MessagesUI = (props: MessagesParams) => {
419
421
  ) : (
420
422
  <ProfileMessageHeader>
421
423
  <View style={{ ...styles.headerTitle }}>
422
- <TouchableOpacity
423
- style={styles.headerItem}
424
- onPress={onClose}>
425
- <OIcon src={theme.images.general.arrow_left} width={16} />
424
+ <TouchableOpacity onPress={onClose} style={styles.headerItem}>
425
+ <AntDesignIcon name='arrowleft' size={26} />
426
426
  </TouchableOpacity>
427
427
  <OText size={18}>{t('ORDER', theme?.defaultLanguages?.ORDER || 'Order')} #{order?.id}</OText>
428
428
  </View>
@@ -28,6 +28,7 @@ import {
28
28
  TimeItem
29
29
  } from './styles';
30
30
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
31
+ import { locale, monthsEnum } from '../../utils';
31
32
 
32
33
  const MomentOptionUI = (props: MomentOptionParams) => {
33
34
  const {
@@ -258,7 +259,7 @@ const MomentOptionUI = (props: MomentOptionParams) => {
258
259
  onActionLeft={() => goToBack()}
259
260
  btnStyle={{ paddingLeft: 0 }}
260
261
  paddingTop={0}
261
- style={{ paddingBottom: 0, flexDirection: 'column', alignItems: 'flex-start' }}
262
+ style={{ paddingBottom: 0 }}
262
263
  title={t('QUESTION_WHEN_ORDER', 'When do you want your order?')}
263
264
  titleAlign={'center'}
264
265
  titleStyle={{ fontSize: 14, marginRight: 0, marginLeft: 0 }}
@@ -281,7 +282,7 @@ const MomentOptionUI = (props: MomentOptionParams) => {
281
282
  style={{ marginEnd: 24 }}
282
283
  />
283
284
  )}
284
- <OText color={optionSelected.isAsap ? theme.colors.textNormal : theme.colors.disabled}>{t('ASAP_ABBREVIATION', 'ASAP') + ` (${moment().format('dddd, MMM D, yyyy h:mm A')} + delivery time)`}</OText>
285
+ <OText color={optionSelected.isAsap ? theme.colors.textNormal : theme.colors.disabled}>{t('ASAP_ABBREVIATION', 'ASAP') + ` (${t(moment().format('dddd')?.toLocaleUpperCase(), moment().format('dddd'))}, ${t(monthsEnum[moment().format('MMM')], moment().format('MMM'))}${moment().format(' D, yyyy h:mm A')} + ${t('DELIVERY_TIME', 'delivery time')})`}</OText>
285
286
  </WrapSelectOption>
286
287
  <WrapSelectOption
287
288
  onPress={() => setOptionSelected({ isAsap: false, isSchedule: true })}
@@ -308,6 +309,7 @@ const MomentOptionUI = (props: MomentOptionParams) => {
308
309
  {selectDate && datesWhitelist[0]?.start !== null && (
309
310
  <CalendarStrip
310
311
  scrollable
312
+ locale={locale}
311
313
  style={styles.calendar}
312
314
  calendarHeaderContainerStyle={styles.calendarHeaderContainer}
313
315
  calendarHeaderStyle={styles.calendarHeader}
@@ -342,12 +344,12 @@ const MomentOptionUI = (props: MomentOptionParams) => {
342
344
  style={{
343
345
  lineHeight: 24
344
346
  }}
345
- >{is12hours ? (
346
- time.startTime.includes('12')
347
+ >{is12hours ? (
348
+ time.startTime.includes('12')
347
349
  ? `${time.startTime}PM`
348
350
  : parseTime(moment(time.startTime, 'HH:mm'), { outputFormat: 'hh:mma' })
349
- ) : time.startTime
350
- }</OText>
351
+ ) : time.startTime
352
+ }</OText>
351
353
  </TimeItem>
352
354
  </TouchableOpacity>
353
355
  ))}