ordering-ui-react-native 0.22.13 → 0.22.14-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 (164) 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/Checkout/index.tsx +40 -39
  5. package/src/components/StripeMethodForm/index.tsx +4 -2
  6. package/src/components/VerifyPhone/styles.tsx +1 -2
  7. package/src/context/OfflineActions/index.tsx +236 -0
  8. package/src/types/index.tsx +2 -1
  9. package/themes/business/index.tsx +2 -0
  10. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
  11. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  12. package/themes/business/src/components/BusinessController/index.tsx +8 -3
  13. package/themes/business/src/components/BusinessProductList/index.tsx +2 -1
  14. package/themes/business/src/components/Chat/index.tsx +15 -3
  15. package/themes/business/src/components/DriverMap/index.tsx +49 -26
  16. package/themes/business/src/components/FloatingButton/index.tsx +3 -2
  17. package/themes/business/src/components/GoogleMap/index.tsx +15 -8
  18. package/themes/business/src/components/LanguageSelector/index.tsx +2 -3
  19. package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
  20. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  21. package/themes/business/src/components/MapView/index.tsx +36 -17
  22. package/themes/business/src/components/NewOrderNotification/index.tsx +40 -27
  23. package/themes/business/src/components/OrderDetails/Business.tsx +47 -27
  24. package/themes/business/src/components/OrderDetails/Delivery.tsx +134 -53
  25. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +128 -41
  26. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +46 -19
  27. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  28. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +46 -21
  29. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
  30. package/themes/business/src/components/OrderSummary/index.tsx +7 -5
  31. package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
  32. package/themes/business/src/components/OrdersOption/index.tsx +217 -156
  33. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  34. package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
  35. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +39 -16
  36. package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
  37. package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
  38. package/themes/business/src/components/PrinterEdition/index.tsx +431 -0
  39. package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
  40. package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
  41. package/themes/business/src/components/PrinterSettings/index.tsx +162 -174
  42. package/themes/business/src/components/PrinterSettings/styles.tsx +14 -1
  43. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  44. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  45. package/themes/business/src/components/StoresList/index.tsx +2 -2
  46. package/themes/business/src/components/UserProfileForm/index.tsx +16 -17
  47. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  48. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  49. package/themes/business/src/config/currency.tsx +1010 -0
  50. package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
  51. package/themes/business/src/types/index.tsx +13 -4
  52. package/themes/business/src/utils/index.tsx +33 -3
  53. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  54. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  55. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  56. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  57. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  58. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  59. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  60. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  61. package/themes/original/index.tsx +11 -0
  62. package/themes/original/src/components/AddressForm/index.tsx +32 -17
  63. package/themes/original/src/components/AddressList/index.tsx +8 -7
  64. package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
  65. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  66. package/themes/original/src/components/BusinessBasicInformation/index.tsx +5 -8
  67. package/themes/original/src/components/BusinessController/index.tsx +3 -3
  68. package/themes/original/src/components/BusinessItemAccordion/index.tsx +13 -5
  69. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +103 -92
  70. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +8 -6
  71. package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
  72. package/themes/original/src/components/BusinessPreorder/index.tsx +46 -28
  73. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
  74. package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
  75. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  76. package/themes/original/src/components/BusinessProductsListing/index.tsx +18 -6
  77. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  78. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -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 +46 -14
  82. package/themes/original/src/components/CartContent/index.tsx +2 -4
  83. package/themes/original/src/components/Checkout/index.tsx +113 -59
  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/GiftCardUI/index.tsx +15 -17
  91. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
  92. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
  93. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
  94. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +11 -12
  95. package/themes/original/src/components/GoogleMap/index.tsx +39 -18
  96. package/themes/original/src/components/Help/index.tsx +2 -0
  97. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  98. package/themes/original/src/components/Home/index.tsx +3 -11
  99. package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
  100. package/themes/original/src/components/LoginForm/index.tsx +4 -7
  101. package/themes/original/src/components/MessageListing/index.tsx +2 -1
  102. package/themes/original/src/components/Messages/index.tsx +27 -19
  103. package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
  104. package/themes/original/src/components/MomentOption/index.tsx +80 -51
  105. package/themes/original/src/components/MomentSelector/index.tsx +5 -2
  106. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
  107. package/themes/original/src/components/MultiCheckout/index.tsx +55 -27
  108. package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -0
  109. package/themes/original/src/components/MyOrders/index.tsx +2 -2
  110. package/themes/original/src/components/NavBar/index.tsx +7 -4
  111. package/themes/original/src/components/NetworkError/index.tsx +0 -5
  112. package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
  113. package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
  114. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +13 -10
  115. package/themes/original/src/components/OrderDetails/index.tsx +44 -21
  116. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  117. package/themes/original/src/components/OrderProgress/index.tsx +5 -4
  118. package/themes/original/src/components/OrderSummary/index.tsx +29 -10
  119. package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
  120. package/themes/original/src/components/OrdersOption/index.tsx +3 -6
  121. package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
  122. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  123. package/themes/original/src/components/PaymentOptions/index.tsx +0 -2
  124. package/themes/original/src/components/PhoneInputNumber/index.tsx +74 -4
  125. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  126. package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
  127. package/themes/original/src/components/ProductForm/ActionButton.tsx +17 -20
  128. package/themes/original/src/components/ProductForm/index.tsx +107 -102
  129. package/themes/original/src/components/ProductItemAccordion/index.tsx +50 -43
  130. package/themes/original/src/components/ProductItemAccordion/styles.tsx +0 -3
  131. package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
  132. package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
  133. package/themes/original/src/components/Promotions/index.tsx +6 -9
  134. package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
  135. package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
  136. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  137. package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
  138. package/themes/original/src/components/ServiceForm/index.tsx +52 -54
  139. package/themes/original/src/components/Sessions/index.tsx +3 -3
  140. package/themes/original/src/components/SignupForm/index.tsx +86 -78
  141. package/themes/original/src/components/SingleOrderCard/index.tsx +6 -4
  142. package/themes/original/src/components/SingleProductCard/index.tsx +5 -5
  143. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  144. package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
  145. package/themes/original/src/components/StripeCardsList/index.tsx +10 -3
  146. package/themes/original/src/components/StripeElementsForm/index.tsx +76 -62
  147. package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -1
  148. package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
  149. package/themes/original/src/components/TaxInformation/index.tsx +3 -2
  150. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
  151. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
  152. package/themes/original/src/components/UserDetails/index.tsx +17 -16
  153. package/themes/original/src/components/UserFormDetails/index.tsx +161 -134
  154. package/themes/original/src/components/UserProfile/index.tsx +9 -1
  155. package/themes/original/src/components/UserVerification/index.tsx +15 -4
  156. package/themes/original/src/components/Wallets/index.tsx +6 -3
  157. package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
  158. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  159. package/themes/original/src/components/shared/OButton.tsx +5 -4
  160. package/themes/original/src/components/shared/OInput.tsx +4 -8
  161. package/themes/original/src/components/shared/OModal.tsx +7 -2
  162. package/themes/original/src/types/index.tsx +7 -2
  163. package/themes/original/src/utils/index.tsx +30 -1
  164. 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
  />
@@ -3,7 +3,8 @@ import {
3
3
  SingleOrderCard as SingleOrderCardController,
4
4
  useUtils,
5
5
  useOrder,
6
- useLanguage
6
+ useLanguage,
7
+ useConfig
7
8
  } from 'ordering-components/native';
8
9
  import FastImage from 'react-native-fast-image'
9
10
  import { StyleSheet, TouchableOpacity, View } from 'react-native';
@@ -45,6 +46,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
45
46
  const [{ parsePrice, optimizeImage, parseDate }] = useUtils();
46
47
  const [, t] = useLanguage();
47
48
  const [{ carts }] = useOrder()
49
+ const [{ configs }] = useConfig()
48
50
  const theme = useTheme();
49
51
  const isFocused = useIsFocused();
50
52
 
@@ -54,6 +56,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
54
56
 
55
57
  const allowedOrderStatus = [1, 2, 5, 6, 10, 11, 12, 15];
56
58
  const isGiftCardOrder = !order?.business_id
59
+ const changeIdToExternalId = configs?.change_order_id?.value === '1'
57
60
 
58
61
  const styles = StyleSheet.create({
59
62
  container: {
@@ -82,7 +85,6 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
82
85
  elevation: 3
83
86
  },
84
87
  buttonText: {
85
- color: theme.colors.primary,
86
88
  fontSize: 10,
87
89
  marginLeft: 2,
88
90
  marginRight: 2,
@@ -334,7 +336,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
334
336
  lineHeight={15}
335
337
  numberOfLines={1}
336
338
  >
337
- {order?.business?.length > 1 ? order?.business?.length : (t('ORDER_NO', 'Order No') + '.')}
339
+ {order?.business?.length > 1 ? order?.business?.length : !(changeIdToExternalId && order?.external_id) && (t('ORDER_NO', 'Order No') + '.')}
338
340
  </OText>
339
341
  <OText
340
342
  size={10}
@@ -343,7 +345,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
343
345
  lineHeight={15}
344
346
  numberOfLines={1}
345
347
  >
346
- {order?.business?.length > 1 ? t('ORDERS', 'orders') + ' \u2022 ' : order.id + ` \u2022 `}
348
+ {order?.business?.length > 1 ? t('ORDERS', 'orders') + ' \u2022 ' : ((changeIdToExternalId && order?.external_id) || order.id) + ` \u2022 `}
347
349
  </OText>
348
350
  </>
349
351
  )}
@@ -48,11 +48,13 @@ 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
54
55
  const textSize = isChewLayout ? 12 : 10
55
56
  const logoPosition = theme?.business_view?.components?.products?.components?.product?.components?.image?.position
57
+ const hideFavoriteIcon = theme?.business_view?.components?.products?.components?.product?.components?.favorite?.hidden
56
58
 
57
59
  const styles = StyleSheet.create({
58
60
  container: {
@@ -197,7 +199,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
197
199
  style={{ ...styles.line18, flex: 1 }}>
198
200
  {product?.name}
199
201
  </OText>
200
- {!isPreviously && (
202
+ {!isPreviously && !hideFavoriteIcon && (
201
203
  <LottieAnimation
202
204
  type='favorite'
203
205
  onClick={handleChangeFavorite}
@@ -283,7 +285,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
283
285
  </OText>
284
286
  </RibbonBox>
285
287
  )}
286
- {!hideProductLogo && (
288
+ {(!hideProductLogo && (product?.images || !hideProductDummyLogo)) && (
287
289
  <FastImage
288
290
  style={styles.productStyle}
289
291
  source={product?.images ? {
@@ -313,9 +315,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
313
315
  height: 40
314
316
 
315
317
  }}
316
- bgColor={isSoldOut ? '#B8B8B8' : theme?.colors?.white}
317
- borderColor={theme?.colors.primary}
318
- textStyle={{ color: theme.colors.primary }}
318
+ isDisabled={isSoldOut}
319
319
  text={t('ADD', 'Add')}
320
320
  />
321
321
  )}
@@ -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,12 +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
32
  gateway,
34
- paySelected
33
+ paySelected,
34
+ newCardAdded,
35
+ addNewCardAsDefault
35
36
  } = props;
36
37
 
37
38
  const theme = useTheme();
@@ -55,6 +56,12 @@ export const StripeCardsListUI = (props: any) => {
55
56
  }
56
57
  }, [cardsList?.loading])
57
58
 
59
+ useEffect(() => {
60
+ if (newCardAdded && addNewCardAsDefault) {
61
+ handleCardSelected(newCardAdded)
62
+ }
63
+ }, [JSON.stringify(newCardAdded)])
64
+
58
65
  return (
59
66
  <>
60
67
  {token && !cardsList.loading && cardsList.cards && cardsList.cards.length === 0 && (
@@ -96,7 +103,7 @@ export const StripeCardsListUI = (props: any) => {
96
103
  <OSItem key={card.id} isUnique={cardsList.cards.length} isInvalid={!card?.zipcode && validateZipcodeCard}>
97
104
  <OSItemContent onPress={() => handleCardSelected(card)}>
98
105
  <View style={styles.viewStyle}>
99
- {(card.id === cardSelected?.id || card.id === paySelected?.data?.id) ? (
106
+ {(card.id === paySelected?.data?.id) ? (
100
107
  <OIcon
101
108
  src={theme.images.general.radio_act}
102
109
  width={16}
@@ -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,
@@ -35,8 +35,10 @@ const StripeElementsFormUI = (props: any) => {
35
35
  setPlaceByMethodPay,
36
36
  cartTotal,
37
37
  publicKeyAddCard,
38
- urlScheme,
39
- androidAppId
38
+ urlscheme,
39
+ androidAppId,
40
+ businessNames,
41
+ setNewCardAdded
40
42
  } = props;
41
43
 
42
44
  const theme = useTheme();
@@ -55,7 +57,7 @@ const StripeElementsFormUI = (props: any) => {
55
57
  const [isKeyboardShow, setIsKeyboardShow] = useState(false);
56
58
  const zipCodeEnabled = validationFields?.fields?.card?.zipcode?.enabled
57
59
  const zipCodeRequired = validationFields?.fields?.card?.zipcode?.required
58
- const isToSave = methodsPay?.includes(paymethod) ? publicKey : publicKeyAddCard
60
+ const isToSave = methodsPay?.includes(paymethod) ? publicKeyState?.key : (publicKeyAddCard || publicKeyState?.key)
59
61
  const styles = StyleSheet.create({
60
62
  container: {
61
63
  width: '100%',
@@ -149,6 +151,10 @@ const StripeElementsFormUI = (props: any) => {
149
151
  const _isNewCard = index === 0
150
152
  stripeTokenHandler(setupIntent?.paymentMethodId, user, businessId, _isNewCard);
151
153
  })
154
+ setNewCardAdded?.({
155
+ ...card,
156
+ id: setupIntent?.paymentMethodId
157
+ })
152
158
  } else {
153
159
  stripeTokenHandler(setupIntent?.paymentMethodId, user, businessId);
154
160
  }
@@ -201,70 +207,79 @@ const StripeElementsFormUI = (props: any) => {
201
207
 
202
208
  return (
203
209
  <View style={{ ...styles.container, height: methodsPay?.includes(paymethod) ? 'auto' : height - top - bottom - 60 - (isKeyboardShow ? 250 : 0) }}>
204
- {publicKey ? (
205
- <View style={{ flex: 1 }}>
206
- <StripeProvider
207
- publishableKey={isToSave}
208
- merchantIdentifier={merchantId}
209
- urlScheme={`${urlScheme}://checkout/${cart?.uuid}`}
210
- >
211
- {methodsPay?.includes(paymethod) ? (
212
- <StripeMethodForm
213
- handleSource={handleSource}
214
- onCancel={onCancel}
215
- cart={cart}
216
- cartTotal={cartTotal}
217
- setErrors={setErrors}
218
- paymethod={paymethod}
219
- devMode={publicKey?.includes('test')}
220
- setMethodPaySupported={setMethodPaySupported}
221
- placeByMethodPay={placeByMethodPay}
222
- methodPaySupported={methodPaySupported}
223
- setPlaceByMethodPay={setPlaceByMethodPay}
224
- androidAppId={androidAppId}
225
- />
226
- ) : (
227
- <CardField
228
- postalCodeEnabled={zipCodeEnabled}
229
- cardStyle={{
230
- backgroundColor: '#FFFFFF',
231
- textColor: '#000000',
232
- borderWidth: 1,
233
- borderRadius: 8,
234
- borderColor: theme.colors.border
235
- }}
236
- style={{
237
- width: '100%',
238
- height: 50,
239
- marginVertical: 30,
240
- zIndex: 9999,
241
- }}
242
- onCardChange={(cardDetails: any) => setCard(cardDetails)}
243
- />
244
- )}
245
- </StripeProvider>
246
- {!!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
+ ) : (
247
272
  <ErrorMessage>
248
273
  <OText
249
274
  size={20}
250
275
  color={theme.colors.error}
251
- style={{ marginTop: 20, textAlign: 'center' }}
276
+ style={{ marginTop: 20 }}
252
277
  >
253
- {errors}
278
+ {t('SOMETHING_WRONG', 'Something is wrong!')}
254
279
  </OText>
255
280
  </ErrorMessage>
256
281
  )}
257
- </View>
258
- ) : (
259
- <ErrorMessage>
260
- <OText
261
- size={20}
262
- color={theme.colors.error}
263
- style={{ marginTop: 20 }}
264
- >
265
- {t('SOMETHING_WRONG', 'Something is wrong!')}
266
- </OText>
267
- </ErrorMessage>
282
+ </>
268
283
  )}
269
284
  {!methodsPay?.includes(paymethod) && (
270
285
  <OButton
@@ -272,7 +287,6 @@ const StripeElementsFormUI = (props: any) => {
272
287
  bgColor={isCompleted ? theme.colors.primary : theme.colors.backgroundGray}
273
288
  borderColor={isCompleted ? theme.colors.primary : theme.colors.backgroundGray}
274
289
  style={styles.btnAddStyle}
275
- textStyle={{ color: 'white' }}
276
290
  imgRightSrc={null}
277
291
  onClick={() => handleSaveCard()}
278
292
  isDisabled={!isCompleted}