ordering-ui-react-native 0.21.74 → 0.21.75-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 (165) hide show
  1. package/package.json +6 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/PaymentOptionsWebView/index.tsx +1 -0
  5. package/src/components/StripeMethodForm/index.tsx +6 -4
  6. package/src/components/VerifyPhone/styles.tsx +1 -2
  7. package/src/types/index.tsx +3 -1
  8. package/themes/business/index.tsx +4 -0
  9. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
  10. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  11. package/themes/business/src/components/BusinessProductList/index.tsx +2 -1
  12. package/themes/business/src/components/Chat/index.tsx +3 -1
  13. package/themes/business/src/components/DriverMap/index.tsx +44 -27
  14. package/themes/business/src/components/GoogleMap/index.tsx +15 -8
  15. package/themes/business/src/components/Home/index.tsx +5 -1
  16. package/themes/business/src/components/LanguageSelector/index.tsx +2 -3
  17. package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
  18. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  19. package/themes/business/src/components/MapView/index.tsx +36 -17
  20. package/themes/business/src/components/NewOrderNotification/index.tsx +74 -24
  21. package/themes/business/src/components/OrderDetails/Business.tsx +65 -7
  22. package/themes/business/src/components/OrderDetails/Delivery.tsx +35 -20
  23. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +110 -40
  24. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +61 -35
  25. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  26. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +220 -0
  27. package/themes/business/src/components/OrderSummary/index.tsx +219 -71
  28. package/themes/business/src/components/OrdersListManager/index.tsx +9 -1
  29. package/themes/business/src/components/OrdersOption/index.tsx +247 -159
  30. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  31. package/themes/business/src/components/PreviousMessages/index.tsx +12 -0
  32. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +25 -15
  33. package/themes/business/src/components/PreviousOrders/index.tsx +5 -3
  34. package/themes/business/src/components/PrinterEdition/index.tsx +363 -0
  35. package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
  36. package/themes/business/src/components/PrinterSettings/index.tsx +267 -0
  37. package/themes/business/src/components/PrinterSettings/styles.tsx +30 -0
  38. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  39. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  40. package/themes/business/src/components/Sessions/index.tsx +187 -0
  41. package/themes/business/src/components/Sessions/styles.tsx +20 -0
  42. package/themes/business/src/components/StoresList/index.tsx +2 -2
  43. package/themes/business/src/components/UserFormDetails/index.tsx +111 -107
  44. package/themes/business/src/components/UserProfileForm/index.tsx +85 -49
  45. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  46. package/themes/business/src/components/shared/OInput.tsx +2 -0
  47. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  48. package/themes/business/src/hooks/useLocation.tsx +5 -4
  49. package/themes/business/src/types/index.tsx +22 -4
  50. package/themes/business/src/utils/index.tsx +19 -1
  51. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  52. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  53. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  54. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  55. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  56. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  57. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  58. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  59. package/themes/original/index.tsx +13 -1
  60. package/themes/original/src/components/AddressDetails/index.tsx +20 -10
  61. package/themes/original/src/components/AddressForm/index.tsx +32 -17
  62. package/themes/original/src/components/AddressList/index.tsx +8 -7
  63. package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
  64. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  65. package/themes/original/src/components/BusinessBasicInformation/index.tsx +6 -9
  66. package/themes/original/src/components/BusinessController/index.tsx +12 -7
  67. package/themes/original/src/components/BusinessItemAccordion/index.tsx +13 -5
  68. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +2 -3
  69. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +1 -3
  70. package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
  71. package/themes/original/src/components/BusinessPreorder/index.tsx +20 -15
  72. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +5 -5
  73. package/themes/original/src/components/BusinessProductsList/index.tsx +3 -3
  74. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  75. package/themes/original/src/components/BusinessProductsListing/index.tsx +15 -4
  76. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  77. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  78. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +1 -1
  79. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  80. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  81. package/themes/original/src/components/Cart/index.tsx +39 -12
  82. package/themes/original/src/components/CartContent/index.tsx +59 -44
  83. package/themes/original/src/components/Checkout/index.tsx +31 -25
  84. package/themes/original/src/components/CitiesControl/index.tsx +0 -3
  85. package/themes/original/src/components/CouponControl/index.tsx +1 -3
  86. package/themes/original/src/components/DriverTips/index.tsx +1 -3
  87. package/themes/original/src/components/Favorite/index.tsx +1 -5
  88. package/themes/original/src/components/FavoriteList/index.tsx +0 -1
  89. package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
  90. package/themes/original/src/components/GiftCard/GiftCardOrdersList/index.tsx +64 -0
  91. package/themes/original/src/components/GiftCard/GiftCardOrdersList/styles.tsx +8 -0
  92. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
  93. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
  94. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
  95. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
  96. package/themes/original/src/components/GiftCard/SingleGiftCard/index.tsx +101 -0
  97. package/themes/original/src/components/GiftCard/SingleGiftCard/styles.tsx +4 -0
  98. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +82 -0
  99. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/styles.tsx +9 -0
  100. package/themes/original/src/components/GoogleMap/index.tsx +39 -18
  101. package/themes/original/src/components/Help/index.tsx +2 -0
  102. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  103. package/themes/original/src/components/Home/index.tsx +2 -10
  104. package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
  105. package/themes/original/src/components/LoginForm/index.tsx +4 -7
  106. package/themes/original/src/components/MessageListing/index.tsx +1 -0
  107. package/themes/original/src/components/Messages/index.tsx +8 -7
  108. package/themes/original/src/components/MomentOption/index.tsx +13 -2
  109. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
  110. package/themes/original/src/components/MultiCheckout/index.tsx +123 -62
  111. package/themes/original/src/components/MultiCheckout/styles.tsx +17 -0
  112. package/themes/original/src/components/MultiOrdersDetails/index.tsx +20 -14
  113. package/themes/original/src/components/MyOrders/index.tsx +21 -26
  114. package/themes/original/src/components/NavBar/index.tsx +4 -2
  115. package/themes/original/src/components/NetworkError/index.tsx +0 -5
  116. package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
  117. package/themes/original/src/components/OrderDetails/OrderEta.tsx +1 -1
  118. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +5 -7
  119. package/themes/original/src/components/OrderDetails/index.tsx +26 -9
  120. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  121. package/themes/original/src/components/OrderProgress/index.tsx +22 -3
  122. package/themes/original/src/components/OrderSummary/index.tsx +23 -5
  123. package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
  124. package/themes/original/src/components/OrdersOption/index.tsx +2 -4
  125. package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
  126. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  127. package/themes/original/src/components/PaymentOptions/index.tsx +46 -5
  128. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  129. package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
  130. package/themes/original/src/components/ProductForm/ActionButton.tsx +16 -19
  131. package/themes/original/src/components/ProductForm/index.tsx +108 -105
  132. package/themes/original/src/components/ProductItemAccordion/index.tsx +55 -49
  133. package/themes/original/src/components/ProductItemAccordion/styles.tsx +3 -4
  134. package/themes/original/src/components/ProductOptionSubOption/index.tsx +8 -1
  135. package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
  136. package/themes/original/src/components/Promotions/index.tsx +6 -9
  137. package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
  138. package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
  139. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  140. package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
  141. package/themes/original/src/components/ServiceForm/index.tsx +52 -54
  142. package/themes/original/src/components/Sessions/index.tsx +3 -3
  143. package/themes/original/src/components/SignupForm/index.tsx +86 -78
  144. package/themes/original/src/components/SingleOrderCard/index.tsx +1 -2
  145. package/themes/original/src/components/SingleProductCard/index.tsx +5 -6
  146. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  147. package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
  148. package/themes/original/src/components/StripeCardsList/index.tsx +10 -35
  149. package/themes/original/src/components/StripeElementsForm/index.tsx +78 -59
  150. package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -1
  151. package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
  152. package/themes/original/src/components/TaxInformation/index.tsx +3 -2
  153. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
  154. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
  155. package/themes/original/src/components/UserFormDetails/index.tsx +98 -87
  156. package/themes/original/src/components/UserProfile/index.tsx +11 -2
  157. package/themes/original/src/components/Wallets/index.tsx +6 -3
  158. package/themes/original/src/components/WebsocketStatus/index.tsx +169 -0
  159. package/themes/original/src/components/WebsocketStatus/styles.tsx +28 -0
  160. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  161. package/themes/original/src/components/shared/OButton.tsx +5 -4
  162. package/themes/original/src/components/shared/OInput.tsx +4 -8
  163. package/themes/original/src/types/index.tsx +5 -1
  164. package/themes/original/src/utils/index.tsx +12 -1
  165. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -1,5 +1,5 @@
1
1
  import React, { useEffect, useRef, useState } from 'react';
2
- import { View, Pressable, StyleSheet, Linking, Platform, TouchableOpacity } from 'react-native';
2
+ import { View, Pressable, StyleSheet, Linking, Platform, TouchableOpacity, Modal } from 'react-native';
3
3
  import { useForm, Controller } from 'react-hook-form';
4
4
  import Spinner from 'react-native-loading-spinner-overlay';
5
5
  import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
@@ -32,11 +32,9 @@ import {
32
32
  } from '../LoginForm/styles';
33
33
 
34
34
  import NavBar from '../NavBar';
35
- import { VerifyPhone } from '../VerifyPhone';
36
35
 
37
36
  import Alert from '../../../../../src/providers/AlertProvider'
38
37
  import { OText, OButton, OInput } from '../shared';
39
- import { OModal } from '../../../../../src/components/shared';
40
38
  import { SignupParams } from '../../types';
41
39
  import { sortInputFields } from '../../utils';
42
40
  import { GoogleLogin } from '../GoogleLogin';
@@ -141,6 +139,8 @@ const SignupFormUI = (props: SignupParams) => {
141
139
  const [recaptchaConfig, setRecaptchaConfig] = useState<any>({})
142
140
  const [recaptchaVerified, setRecaptchaVerified] = useState(false)
143
141
  const [tabLayouts, setTabLayouts] = useState<any>({})
142
+ const [isCheckingCode, setCheckingCode] = useState(false)
143
+ const [otpError, setOtpError] = useState(null)
144
144
 
145
145
  const tabsRef = useRef<any>(null)
146
146
  const nameRef = useRef<any>(null);
@@ -155,7 +155,7 @@ const SignupFormUI = (props: SignupParams) => {
155
155
  const showInputPhoneNumber = (validationFields?.fields?.checkout?.cellphone?.enabled ?? false) || configs?.verification_phone_required?.value === '1'
156
156
  const googleLoginEnabled = configs?.google_login_enabled?.value === '1' || !configs?.google_login_enabled?.enabled
157
157
  const facebookLoginEnabled = configs?.facebook_login_enabled?.value === '1' || !configs?.facebook_login_enabled?.enabled
158
- const appleLoginEnabled = configs?.apple_login_enabled?.value === '1' || !configs?.apple_login_enabled?.enabled
158
+ const appleLoginEnabled = Platform.OS === 'ios' && (configs?.apple_login_enabled?.value === '1' || !configs?.apple_login_enabled?.enabled)
159
159
 
160
160
  const closeAlert = () => {
161
161
  setAlertState({
@@ -467,9 +467,16 @@ const SignupFormUI = (props: SignupParams) => {
467
467
 
468
468
  useEffect(() => {
469
469
  if (checkPhoneCodeState?.result?.error) {
470
- setAlertState({
470
+ const titleText = (
471
+ typeof checkPhoneCodeState?.result?.result === 'string'
472
+ ? checkPhoneCodeState?.result?.result
473
+ : checkPhoneCodeState?.result?.result[0].toString()
474
+ ) || t('ERROR', 'Error')
475
+ setCheckingCode(false)
476
+ setOtpError(titleText)
477
+ checkPhoneCodeState?.generate && setAlertState({
471
478
  open: true,
472
- title: (typeof checkPhoneCodeState?.result?.result === 'string' ? checkPhoneCodeState?.result?.result : checkPhoneCodeState?.result?.result[0].toString()) || t('ERROR', 'Error'),
479
+ title: titleText,
473
480
  content: []
474
481
  })
475
482
  }
@@ -583,65 +590,67 @@ const SignupFormUI = (props: SignupParams) => {
583
590
  {sortInputFields({
584
591
  values: validationFields?.fields?.checkout,
585
592
  }).map(
586
- (field: any, i: number) =>
587
- !notValidationFields.includes(field.code) &&
588
- showField &&
589
- showField(field.code) &&
590
- (signUpTab === 'default' ||
591
- (signUpTab === 'otpEmail' && field.code === 'email')) && (
592
- <React.Fragment key={field.id}>
593
- {errors?.[`${field.code}`] && (
594
- <OText
595
- size={14}
596
- color={theme.colors.danger5}
597
- weight={'normal'}>
598
- {errors?.[`${field.code}`]?.message} {errors?.[`${field.code}`]?.type === 'required' && '*'}
599
- </OText>
600
- )}
601
- <Controller
602
- control={control}
603
- render={({ onChange, value }: any) => (
604
- <OInput
605
- placeholder={t(field.name?.replace(/\s/g, '_')?.toUpperCase(), field.name)}
606
- style={style.inputStyle}
607
- icon={
608
- field.code === 'email'
609
- ? theme.images.general.email
610
- : theme.images.general.user
611
- }
612
- value={value}
613
- onChange={(val: any) =>
614
- field.code !== 'email'
615
- ? (onChange(val))
616
- : handleChangeInputEmail(val, onChange)
617
- }
618
- autoCapitalize={
619
- field.code === 'email' ? 'none' : 'sentences'
620
- }
621
- autoCorrect={field.code === 'email' && false}
622
- type={
623
- field.code === 'email' ? 'email-address' : 'default'
624
- }
625
- autoCompleteType={
626
- field.code === 'email' ? 'email' : 'off'
627
- }
628
- returnKeyType="next"
629
- blurOnSubmit={false}
630
- forwardRef={(ref: any) => handleRefs(ref, field.code)}
631
- onSubmitEditing={() =>
632
- field.code === 'email'
633
- ? phoneRef?.current?.focus?.()
634
- : handleFocusRef(getNextFieldCode(i))
635
- }
636
- borderColor={errors?.[`${field.code}`] ? theme.colors.danger5 : theme.colors.border}
637
- />
593
+ (item: any, i: number) => {
594
+ const field = item?.validation_field || item
595
+ return (!notValidationFields.includes(field.code) &&
596
+ showField &&
597
+ showField(field.code) &&
598
+ (signUpTab === 'default' ||
599
+ (signUpTab === 'otpEmail' && field.code === 'email')) && (
600
+ <React.Fragment key={field.id}>
601
+ {errors?.[`${field.code}`] && (
602
+ <OText
603
+ size={14}
604
+ color={theme.colors.danger5}
605
+ weight={'normal'}>
606
+ {errors?.[`${field.code}`]?.message} {errors?.[`${field.code}`]?.type === 'required' && '*'}
607
+ </OText>
638
608
  )}
639
- name={field.code}
640
- rules={getInputRules(field)}
641
- defaultValue=""
642
- />
643
- </React.Fragment>
644
- ),
609
+ <Controller
610
+ control={control}
611
+ render={({ onChange, value }: any) => (
612
+ <OInput
613
+ placeholder={t(field.name?.replace(/\s/g, '_')?.toUpperCase(), field.name)}
614
+ style={style.inputStyle}
615
+ icon={
616
+ field.code === 'email'
617
+ ? theme.images.general.email
618
+ : theme.images.general.user
619
+ }
620
+ value={value}
621
+ onChange={(val: any) =>
622
+ field.code !== 'email'
623
+ ? (onChange(val))
624
+ : handleChangeInputEmail(val, onChange)
625
+ }
626
+ autoCapitalize={
627
+ field.code === 'email' ? 'none' : 'sentences'
628
+ }
629
+ autoCorrect={field.code === 'email' && false}
630
+ type={
631
+ field.code === 'email' ? 'email-address' : 'default'
632
+ }
633
+ autoCompleteType={
634
+ field.code === 'email' ? 'email' : 'off'
635
+ }
636
+ returnKeyType="next"
637
+ blurOnSubmit={false}
638
+ forwardRef={(ref: any) => handleRefs(ref, field.code)}
639
+ onSubmitEditing={() =>
640
+ field.code === 'email'
641
+ ? phoneRef?.current?.focus?.()
642
+ : handleFocusRef(getNextFieldCode(i))
643
+ }
644
+ borderColor={errors?.[`${field.code}`] ? theme.colors.danger5 : theme.colors.border}
645
+ />
646
+ )}
647
+ name={field.code}
648
+ rules={getInputRules(field)}
649
+ defaultValue=""
650
+ />
651
+ </React.Fragment>
652
+ ))
653
+ }
645
654
  )}
646
655
 
647
656
  {(!!showInputPhoneNumber && (signUpTab === 'default' || signUpTab === 'otpCellphone')) && (
@@ -787,9 +796,9 @@ const SignupFormUI = (props: SignupParams) => {
787
796
  <OButton
788
797
  imgRightSrc={null}
789
798
  text={t('TERMS_AND_CONDITIONS', 'Terms & Conditions')}
790
- bgColor='#FFF'
791
- borderColor='#FFF'
792
- style={{ paddingLeft: 0, paddingRight: 0, height: 30, shadowColor: '#FFF' }}
799
+ bgColor={theme.colors.white}
800
+ borderColor={theme.colors.white}
801
+ style={{ paddingLeft: 0, paddingRight: 0, height: 30, shadowColor: theme.colors.white }}
793
802
  textStyle={{ color: theme.colors.primary, marginLeft: 0, marginRight: 0 }}
794
803
  onClick={() => handleOpenTermsUrl(configs?.terms_and_conditions_url?.value)}
795
804
  />
@@ -833,6 +842,7 @@ const SignupFormUI = (props: SignupParams) => {
833
842
  />
834
843
  )
835
844
  }
845
+ autoCapitalize='none'
836
846
  value={value}
837
847
  onChange={(val: any) => onChange(val)}
838
848
  returnKeyType="done"
@@ -874,9 +884,7 @@ const SignupFormUI = (props: SignupParams) => {
874
884
  <OButton
875
885
  onClick={handleSubmit(onSubmit)}
876
886
  text={t('GET_VERIFY_CODE', 'Get Verify Code')}
877
- borderColor={theme.colors.primary}
878
887
  imgRightSrc={null}
879
- textStyle={{ color: 'white' }}
880
888
  isLoading={isLoadingVerifyModal}
881
889
  indicatorColor={theme.colors.white}
882
890
  style={{ borderRadius: 7.6, marginTop: 6 }}
@@ -885,9 +893,6 @@ const SignupFormUI = (props: SignupParams) => {
885
893
  <OButton
886
894
  onClick={handleSubmit(onSubmit)}
887
895
  text={signupButtonText}
888
- bgColor={theme.colors.primary}
889
- borderColor={theme.colors.primary}
890
- textStyle={{ color: 'white' }}
891
896
  imgRightSrc={null}
892
897
  isDisabled={formState.loading || validationFields.loading}
893
898
  style={{ borderRadius: 7.6, marginTop: 6, shadowOpacity: 0 }}
@@ -969,13 +974,16 @@ const SignupFormUI = (props: SignupParams) => {
969
974
  )
970
975
  )}
971
976
  </FormSide>
972
- <OModal
973
- open={willVerifyOtpState}
974
- onClose={() => setWillVerifyOtpState && setWillVerifyOtpState(false)}
975
- entireModal
976
- title={t('ENTER_VERIFICATION_CODE', 'Enter verification code')}
977
+ <Modal
978
+ visible={willVerifyOtpState}
979
+ onDismiss={() => setWillVerifyOtpState && setWillVerifyOtpState(false)}
980
+ animationType='slide'
977
981
  >
978
982
  <Otp
983
+ isCheckingCode={isCheckingCode}
984
+ setCheckingCode={setCheckingCode}
985
+ otpError={otpError}
986
+ setOtpError={setOtpError}
979
987
  pinCount={numOtpInputs || 6}
980
988
  willVerifyOtpState={willVerifyOtpState || false}
981
989
  setWillVerifyOtpState={() => setWillVerifyOtpState && setWillVerifyOtpState(false)}
@@ -983,7 +991,7 @@ const SignupFormUI = (props: SignupParams) => {
983
991
  onSubmit={onSubmit}
984
992
  setAlertState={setAlertState}
985
993
  />
986
- </OModal>
994
+ </Modal>
987
995
  <Spinner
988
996
  visible={formState.loading || validationFields.loading || isFBLoading}
989
997
  />
@@ -82,7 +82,6 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
82
82
  elevation: 3
83
83
  },
84
84
  buttonText: {
85
- color: theme.colors.primary,
86
85
  fontSize: 10,
87
86
  marginLeft: 2,
88
87
  marginRight: 2,
@@ -285,7 +284,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
285
284
  ) : (
286
285
  <Price>
287
286
  <OText size={12} lineHeight={18}>
288
- {parsePrice(order?.summary?.total || order?.total)}
287
+ {parsePrice(order?.total)}
289
288
  </OText>
290
289
  </Price>
291
290
  )}
@@ -48,6 +48,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
48
48
  const hideAddButton = theme?.business_view?.components?.products?.components?.add_to_cart_button?.hidden ?? true
49
49
  const isChewLayout = theme?.header?.components?.layout?.type?.toLowerCase() === 'chew'
50
50
  const hideProductDescription = theme?.business_view?.components?.products?.components?.product?.components?.description?.hidden
51
+ const hideProductDummyLogo = theme?.business_view?.components?.products?.components?.product?.components?.dummy?.hidden
51
52
  const hideProductLogo = viewString
52
53
  ? theme?.[viewString]?.components?.cart?.components?.products?.image?.hidden
53
54
  : theme?.business_view?.components?.products?.components?.product?.components?.image?.hidden
@@ -169,7 +170,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
169
170
  }
170
171
 
171
172
  return (
172
- <InView style={{ minHeight: hideAddButton ? 125 : 190, marginLeft: logoPosition === 'left' ? 12.5 : 0 }} triggerOnce={true} onChange={(inView: boolean) => handleChangeIntersection()}>
173
+ <View style={{ minHeight: hideAddButton ? 125 : 190, marginLeft: logoPosition === 'left' ? 12.5 : 0 }}>
173
174
  {isIntersectionObserver ? (
174
175
  <CardAnimation
175
176
  onClick={() => handleClickproduct()}
@@ -283,7 +284,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
283
284
  </OText>
284
285
  </RibbonBox>
285
286
  )}
286
- {!hideProductLogo && (
287
+ {(!hideProductLogo && (product?.images || !hideProductDummyLogo)) && (
287
288
  <FastImage
288
289
  style={styles.productStyle}
289
290
  source={product?.images ? {
@@ -313,9 +314,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
313
314
  height: 40
314
315
 
315
316
  }}
316
- bgColor={isSoldOut ? '#B8B8B8' : theme?.colors?.white}
317
- borderColor={theme?.colors.primary}
318
- textStyle={{ color: theme.colors.primary }}
317
+ isDisabled={isSoldOut}
319
318
  text={t('ADD', 'Add')}
320
319
  />
321
320
  )}
@@ -340,7 +339,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
340
339
  </Placeholder>
341
340
  </View>
342
341
  )}
343
- </InView>
342
+ </View>
344
343
  );
345
344
  }, SingleProductCardPropsAreEqual);
346
345
 
@@ -49,15 +49,12 @@ export const RibbonBox = styled.View`
49
49
  background-color: ${(props: any) => props.theme.colors.primary};
50
50
  padding: 1px 8px;
51
51
  max-width: 60px;
52
-
53
52
  ${(props: any) => props.bgColor && css`
54
53
  background-color: ${props.bgColor};
55
54
  `}
56
-
57
55
  ${(props: any) => props.isRoundRect && css`
58
56
  border-radius: 7.6px;
59
57
  `}
60
-
61
58
  ${(props: any) => props.isCapsule && css`
62
59
  border-radius: 50px;
63
60
  `}
@@ -65,9 +65,6 @@ const StripeCardFormUI = (props: any) => {
65
65
  <OButton
66
66
  text={loading ? t('LOADING', 'Loading...') : t('ADD', 'Add')}
67
67
  isDisabled={!cardState?.valid || loading}
68
- bgColor={theme.colors.primary}
69
- borderColor={theme.colors.primary}
70
- textStyle={{ color: 'white' }}
71
68
  imgRightSrc={null}
72
69
  onClick={handleSubmit}
73
70
  />
@@ -26,16 +26,13 @@ export const StripeCardsListUI = (props: any) => {
26
26
  const {
27
27
  onSelectCard,
28
28
  deleteCard,
29
- cardSelected,
30
29
  cardsList,
31
30
  handleCardClick,
32
31
  onOpen,
33
- onCancel,
34
32
  gateway,
35
- setCardsList,
36
- addCardOpen,
37
- isOpenMethod,
38
- handlePaymethodDataChange
33
+ paySelected,
34
+ newCardAdded,
35
+ addNewCardAsDefault
39
36
  } = props;
40
37
 
41
38
  const theme = useTheme();
@@ -59,6 +56,12 @@ export const StripeCardsListUI = (props: any) => {
59
56
  }
60
57
  }, [cardsList?.loading])
61
58
 
59
+ useEffect(() => {
60
+ if (newCardAdded && addNewCardAsDefault) {
61
+ handleCardSelected(newCardAdded)
62
+ }
63
+ }, [JSON.stringify(newCardAdded)])
64
+
62
65
  return (
63
66
  <>
64
67
  {token && !cardsList.loading && cardsList.cards && cardsList.cards.length === 0 && (
@@ -98,10 +101,9 @@ export const StripeCardsListUI = (props: any) => {
98
101
  >
99
102
  {cardsList.cards.map((card: any) => (
100
103
  <OSItem key={card.id} isUnique={cardsList.cards.length} isInvalid={!card?.zipcode && validateZipcodeCard}>
101
- {console.log(card?.zipcode && validateZipcodeCard)}
102
104
  <OSItemContent onPress={() => handleCardSelected(card)}>
103
105
  <View style={styles.viewStyle}>
104
- {card.id === cardSelected?.id ? (
106
+ {(card.id === paySelected?.data?.id) ? (
105
107
  <OIcon
106
108
  src={theme.images.general.radio_act}
107
109
  width={16}
@@ -148,33 +150,6 @@ export const StripeCardsListUI = (props: any) => {
148
150
  ))}
149
151
  </ScrollView>
150
152
  )}
151
- <OModal
152
- entireModal
153
- title={t('ADD_CREDIT_OR_DEBIT_CARD', 'Add credit or debit card')}
154
- open={addCardOpen?.stripe}
155
- onClose={onCancel}
156
- style={{ backgroundColor: 'red' }}
157
- >
158
- <KeyboardAvoidingView
159
- behavior={Platform.OS == 'ios' ? 'padding' : 'height'}
160
- keyboardVerticalOffset={Platform.OS == 'ios' ? 0 : 0}
161
- enabled={Platform.OS === 'ios' ? true : false}
162
- >
163
- <StripeElementsForm
164
- openCarts={props.openCarts}
165
- toSave
166
- businessId={props.businessId}
167
- businessIds={props.businessIds}
168
- publicKey={props.publicKey || isOpenMethod?.paymethod?.credentials?.publishable}
169
- setCardsList={setCardsList}
170
- cardsList={cardsList}
171
- requirements={props.clientSecret}
172
- handleCardClick={handleCardClick}
173
- onSelectCard={handlePaymethodDataChange}
174
- onCancel={onCancel}
175
- />
176
- </KeyboardAvoidingView>
177
- </OModal>
178
153
  </>
179
154
  )
180
155
  }
@@ -9,7 +9,7 @@ import {
9
9
  } from '@stripe/stripe-react-native';
10
10
  import { useTheme } from 'styled-components/native';
11
11
  import { ErrorMessage } from './styles';
12
-
12
+ import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
13
13
  import { StripeElementsForm as StripeFormController } from './naked';
14
14
  import { OButton, OText } from '../shared';
15
15
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
@@ -17,7 +17,7 @@ import { StripeMethodForm } from '../../../../../src/components/StripeMethodForm
17
17
 
18
18
  const StripeElementsFormUI = (props: any) => {
19
19
  const {
20
- publicKey,
20
+ publicKeyState,
21
21
  handleSource,
22
22
  values,
23
23
  businessId,
@@ -33,7 +33,12 @@ const StripeElementsFormUI = (props: any) => {
33
33
  placeByMethodPay,
34
34
  methodPaySupported,
35
35
  setPlaceByMethodPay,
36
- cartTotal
36
+ cartTotal,
37
+ publicKeyAddCard,
38
+ urlscheme,
39
+ androidAppId,
40
+ businessNames,
41
+ setNewCardAdded
37
42
  } = props;
38
43
 
39
44
  const theme = useTheme();
@@ -52,6 +57,7 @@ const StripeElementsFormUI = (props: any) => {
52
57
  const [isKeyboardShow, setIsKeyboardShow] = useState(false);
53
58
  const zipCodeEnabled = validationFields?.fields?.card?.zipcode?.enabled
54
59
  const zipCodeRequired = validationFields?.fields?.card?.zipcode?.required
60
+ const isToSave = methodsPay?.includes(paymethod) ? publicKeyState?.key : (publicKeyAddCard || publicKeyState?.key)
55
61
  const styles = StyleSheet.create({
56
62
  container: {
57
63
  width: '100%',
@@ -145,6 +151,10 @@ const StripeElementsFormUI = (props: any) => {
145
151
  const _isNewCard = index === 0
146
152
  stripeTokenHandler(setupIntent?.paymentMethodId, user, businessId, _isNewCard);
147
153
  })
154
+ setNewCardAdded?.({
155
+ ...card,
156
+ id: setupIntent?.paymentMethodId
157
+ })
148
158
  } else {
149
159
  stripeTokenHandler(setupIntent?.paymentMethodId, user, businessId);
150
160
  }
@@ -197,69 +207,79 @@ const StripeElementsFormUI = (props: any) => {
197
207
 
198
208
  return (
199
209
  <View style={{ ...styles.container, height: methodsPay?.includes(paymethod) ? 'auto' : height - top - bottom - 60 - (isKeyboardShow ? 250 : 0) }}>
200
- {publicKey ? (
201
- <View style={{ flex: 1 }}>
202
- <StripeProvider
203
- publishableKey={publicKey}
204
- merchantIdentifier={merchantId}
205
- urlScheme={merchantId}
206
- >
207
- {methodsPay?.includes(paymethod) ? (
208
- <StripeMethodForm
209
- handleSource={handleSource}
210
- onCancel={onCancel}
211
- cart={cart}
212
- cartTotal={cartTotal}
213
- setErrors={setErrors}
214
- paymethod={paymethod}
215
- devMode={publicKey?.includes('test')}
216
- setMethodPaySupported={setMethodPaySupported}
217
- placeByMethodPay={placeByMethodPay}
218
- methodPaySupported={methodPaySupported}
219
- setPlaceByMethodPay={setPlaceByMethodPay}
220
- />
221
- ) : (
222
- <CardField
223
- postalCodeEnabled={zipCodeEnabled}
224
- cardStyle={{
225
- backgroundColor: '#FFFFFF',
226
- textColor: '#000000',
227
- borderWidth: 1,
228
- borderRadius: 8,
229
- borderColor: theme.colors.border
230
- }}
231
- style={{
232
- width: '100%',
233
- height: 50,
234
- marginVertical: 30,
235
- zIndex: 9999,
236
- }}
237
- onCardChange={(cardDetails: any) => setCard(cardDetails)}
238
- />
239
- )}
240
- </StripeProvider>
241
- {!!errors && (
210
+ {publicKeyState.loading ? (
211
+ <Placeholder Animation={Fade}>
212
+ <PlaceholderLine height={50} style={{ marginTop: 20 }} />
213
+ </Placeholder>
214
+ ) : (
215
+ <>
216
+ {publicKeyState?.key ? (
217
+ <View style={{ flex: 1 }}>
218
+ <StripeProvider
219
+ publishableKey={isToSave}
220
+ merchantIdentifier={merchantId}
221
+ urlscheme={`${urlscheme}://checkout/${cart?.uuid}`}
222
+ >
223
+ {methodsPay?.includes(paymethod) ? (
224
+ <StripeMethodForm
225
+ handleSource={handleSource}
226
+ onCancel={onCancel}
227
+ cart={cart}
228
+ cartTotal={cartTotal}
229
+ setErrors={setErrors}
230
+ paymethod={paymethod}
231
+ devMode={publicKeyState?.key?.includes('test')}
232
+ setMethodPaySupported={setMethodPaySupported}
233
+ placeByMethodPay={placeByMethodPay}
234
+ methodPaySupported={methodPaySupported}
235
+ setPlaceByMethodPay={setPlaceByMethodPay}
236
+ androidAppId={androidAppId}
237
+ businessNames={businessNames}
238
+ />
239
+ ) : (
240
+ <CardField
241
+ postalCodeEnabled={zipCodeEnabled}
242
+ cardStyle={{
243
+ backgroundColor: '#FFFFFF',
244
+ textColor: '#000000',
245
+ borderWidth: 1,
246
+ borderRadius: 8,
247
+ borderColor: theme.colors.border
248
+ }}
249
+ style={{
250
+ width: '100%',
251
+ height: 50,
252
+ marginVertical: 30,
253
+ zIndex: 9999,
254
+ }}
255
+ onCardChange={(cardDetails: any) => setCard(cardDetails)}
256
+ />
257
+ )}
258
+ </StripeProvider>
259
+ {!!errors && (
260
+ <ErrorMessage>
261
+ <OText
262
+ size={20}
263
+ color={theme.colors.error}
264
+ style={{ marginTop: 20, textAlign: 'center' }}
265
+ >
266
+ {errors}
267
+ </OText>
268
+ </ErrorMessage>
269
+ )}
270
+ </View>
271
+ ) : (
242
272
  <ErrorMessage>
243
273
  <OText
244
274
  size={20}
245
275
  color={theme.colors.error}
246
- style={{ marginTop: 20, textAlign: 'center' }}
276
+ style={{ marginTop: 20 }}
247
277
  >
248
- {errors}
278
+ {t('SOMETHING_WRONG', 'Something is wrong!')}
249
279
  </OText>
250
280
  </ErrorMessage>
251
281
  )}
252
- </View>
253
- ) : (
254
- <ErrorMessage>
255
- <OText
256
- size={20}
257
- color={theme.colors.error}
258
- style={{ marginTop: 20 }}
259
- >
260
- {t('SOMETHING_WRONG', 'Something is wrong!')}
261
- </OText>
262
- </ErrorMessage>
282
+ </>
263
283
  )}
264
284
  {!methodsPay?.includes(paymethod) && (
265
285
  <OButton
@@ -267,7 +287,6 @@ const StripeElementsFormUI = (props: any) => {
267
287
  bgColor={isCompleted ? theme.colors.primary : theme.colors.backgroundGray}
268
288
  borderColor={isCompleted ? theme.colors.primary : theme.colors.backgroundGray}
269
289
  style={styles.btnAddStyle}
270
- textStyle={{ color: 'white' }}
271
290
  imgRightSrc={null}
272
291
  onClick={() => handleSaveCard()}
273
292
  isDisabled={!isCompleted}