ordering-ui-react-native 0.16.53 → 0.16.54-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 (208) hide show
  1. package/package.json +6 -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/BusinessInformation/index.tsx +33 -4
  6. package/src/components/BusinessInformation/styles.tsx +2 -2
  7. package/src/components/BusinessProductsList/index.tsx +10 -10
  8. package/src/components/BusinessesListing/index.tsx +1 -1
  9. package/src/components/Checkout/index.tsx +2 -1
  10. package/src/components/LanguageSelector/index.tsx +21 -16
  11. package/src/components/Messages/index.tsx +2 -2
  12. package/src/components/NotificationSetting/index.tsx +85 -0
  13. package/src/components/OrdersOption/index.tsx +54 -56
  14. package/src/components/PaymentOptions/index.tsx +298 -345
  15. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  16. package/src/components/SingleProductReview/index.tsx +7 -4
  17. package/src/components/StripeElementsForm/index.tsx +25 -16
  18. package/src/components/VerifyPhone/styles.tsx +1 -2
  19. package/src/components/shared/OBottomPopup.tsx +6 -2
  20. package/src/components/shared/OToast.tsx +4 -4
  21. package/src/index.tsx +2 -0
  22. package/src/types/@fatnlazycat/react-native-recaptcha-v3/index.d.ts +1 -0
  23. package/src/utils/index.tsx +2 -1
  24. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +260 -238
  25. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
  26. package/themes/business/src/components/BusinessController/index.tsx +2 -2
  27. package/themes/business/src/components/Chat/index.tsx +40 -32
  28. package/themes/business/src/components/DriverMap/index.tsx +7 -5
  29. package/themes/business/src/components/DriverSchedule/index.tsx +36 -19
  30. package/themes/business/src/components/LoginForm/index.tsx +111 -74
  31. package/themes/business/src/components/MapView/index.tsx +12 -1
  32. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  33. package/themes/business/src/components/NewOrderNotification/index.tsx +26 -41
  34. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +40 -30
  35. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +3 -3
  36. package/themes/business/src/components/OrdersListManager/index.tsx +10 -3
  37. package/themes/business/src/components/OrdersOption/index.tsx +76 -77
  38. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  39. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  40. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  41. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  42. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  43. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  44. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  45. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  46. package/themes/business/src/components/PreviousMessages/index.tsx +17 -18
  47. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +250 -0
  48. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  49. package/themes/business/src/components/PreviousOrders/index.tsx +440 -245
  50. package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
  51. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  52. package/themes/business/src/components/ReviewCustomer/index.tsx +39 -15
  53. package/themes/business/src/components/ScheduleBlocked/index.tsx +2 -2
  54. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  55. package/themes/business/src/components/UserProfileForm/index.tsx +2 -0
  56. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  57. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  58. package/themes/business/src/components/shared/OLink.tsx +24 -12
  59. package/themes/business/src/components/shared/OText.tsx +3 -2
  60. package/themes/business/src/types/index.tsx +25 -11
  61. package/themes/business/src/utils/index.tsx +10 -0
  62. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  63. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  64. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  65. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -1
  66. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  67. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  68. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  69. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  70. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  71. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  72. package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
  73. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  74. package/themes/kiosk/src/types/index.d.ts +2 -0
  75. package/themes/original/index.tsx +8 -6
  76. package/themes/original/src/components/AddressDetails/index.tsx +10 -8
  77. package/themes/original/src/components/AddressForm/index.tsx +157 -140
  78. package/themes/original/src/components/AddressList/index.tsx +1 -1
  79. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  80. package/themes/original/src/components/BusinessBasicInformation/index.tsx +53 -37
  81. package/themes/original/src/components/BusinessController/index.tsx +193 -91
  82. package/themes/original/src/components/BusinessController/styles.tsx +14 -9
  83. package/themes/original/src/components/BusinessInformation/index.tsx +10 -31
  84. package/themes/original/src/components/BusinessItemAccordion/index.tsx +12 -6
  85. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  86. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  87. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  88. package/themes/original/src/components/BusinessListingSearch/index.tsx +85 -137
  89. package/themes/original/src/components/BusinessListingSearch/styles.tsx +10 -12
  90. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  91. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  92. package/themes/original/src/components/BusinessProductsList/index.tsx +59 -61
  93. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  94. package/themes/original/src/components/BusinessProductsListing/index.tsx +156 -86
  95. package/themes/original/src/components/BusinessProductsListing/styles.tsx +14 -12
  96. package/themes/original/src/components/BusinessTypeFilter/index.tsx +3 -2
  97. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +28 -29
  98. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +118 -111
  99. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -9
  100. package/themes/original/src/components/BusinessesListing/index.tsx +51 -71
  101. package/themes/original/src/components/Cart/index.tsx +82 -15
  102. package/themes/original/src/components/Cart/styles.tsx +4 -0
  103. package/themes/original/src/components/CartContent/index.tsx +27 -17
  104. package/themes/original/src/components/CartContent/styles.tsx +1 -1
  105. package/themes/original/src/components/Checkout/index.tsx +115 -118
  106. package/themes/original/src/components/Checkout/styles.tsx +4 -3
  107. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  108. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  109. package/themes/original/src/components/DriverTips/index.tsx +4 -4
  110. package/themes/original/src/components/DriverTips/styles.tsx +2 -1
  111. package/themes/original/src/components/FavoriteList/index.tsx +69 -45
  112. package/themes/original/src/components/FloatingButton/index.tsx +13 -11
  113. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  114. package/themes/original/src/components/GPSButton/index.tsx +20 -19
  115. package/themes/original/src/components/GPSButton/styles.ts +3 -3
  116. package/themes/original/src/components/GoogleMap/index.tsx +10 -1
  117. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +25 -10
  118. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +4 -0
  119. package/themes/original/src/components/HelpGuide/index.tsx +9 -8
  120. package/themes/original/src/components/HelpOrder/index.tsx +9 -8
  121. package/themes/original/src/components/LanguageSelector/index.tsx +19 -14
  122. package/themes/original/src/components/LoginForm/Otp/index.tsx +89 -73
  123. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  124. package/themes/original/src/components/LoginForm/index.tsx +98 -41
  125. package/themes/original/src/components/LottieAnimation/index.tsx +69 -0
  126. package/themes/original/src/components/Messages/index.tsx +35 -20
  127. package/themes/original/src/components/MomentOption/index.tsx +8 -6
  128. package/themes/original/src/components/MultiCart/index.tsx +63 -0
  129. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +92 -93
  130. package/themes/original/src/components/MultiCheckout/index.tsx +10 -2
  131. package/themes/original/src/components/MultiOrdersDetails/index.tsx +34 -16
  132. package/themes/original/src/components/MyOrders/index.tsx +88 -24
  133. package/themes/original/src/components/NavBar/index.tsx +11 -5
  134. package/themes/original/src/components/NetworkError/index.tsx +5 -3
  135. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  136. package/themes/original/src/components/Notifications/index.tsx +148 -0
  137. package/themes/original/src/components/Notifications/styles.tsx +20 -0
  138. package/themes/original/src/components/OrderDetails/index.tsx +162 -50
  139. package/themes/original/src/components/OrderDetails/styles.tsx +15 -2
  140. package/themes/original/src/components/OrderItAgain/index.tsx +75 -0
  141. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  142. package/themes/original/src/components/OrderProgress/index.tsx +77 -66
  143. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  144. package/themes/original/src/components/OrderSummary/index.tsx +2 -35
  145. package/themes/original/src/components/OrderTypeSelector/index.tsx +85 -36
  146. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  147. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +94 -98
  148. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +3 -0
  149. package/themes/original/src/components/OrdersOption/index.tsx +93 -53
  150. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  151. package/themes/original/src/components/PaymentOptions/index.tsx +1 -2
  152. package/themes/original/src/components/PhoneInputNumber/index.tsx +1 -1
  153. package/themes/original/src/components/PlaceSpot/index.tsx +249 -47
  154. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  155. package/themes/original/src/components/PreviousOrders/index.tsx +3 -2
  156. package/themes/original/src/components/ProductForm/index.tsx +367 -384
  157. package/themes/original/src/components/ProductForm/styles.tsx +7 -12
  158. package/themes/original/src/components/ProductItemAccordion/index.tsx +199 -128
  159. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  160. package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
  161. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +0 -1
  162. package/themes/original/src/components/ProfessionalFilter/index.tsx +2 -1
  163. package/themes/original/src/components/ProfessionalProfile/index.tsx +19 -8
  164. package/themes/original/src/components/Promotions/index.tsx +232 -219
  165. package/themes/original/src/components/Promotions/styles.tsx +7 -2
  166. package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
  167. package/themes/original/src/components/ReviewOrder/index.tsx +120 -108
  168. package/themes/original/src/components/ReviewOrder/styles.tsx +5 -7
  169. package/themes/original/src/components/ReviewProducts/index.tsx +8 -5
  170. package/themes/original/src/components/ReviewTrigger/index.tsx +136 -0
  171. package/themes/original/src/components/{Reviews/ReviewOrder → ReviewTrigger}/styles.tsx +10 -22
  172. package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
  173. package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
  174. package/themes/original/src/components/ServiceForm/index.tsx +330 -266
  175. package/themes/original/src/components/SignupForm/index.tsx +134 -89
  176. package/themes/original/src/components/SingleOrderCard/index.tsx +219 -129
  177. package/themes/original/src/components/SingleOrderCard/styles.tsx +10 -8
  178. package/themes/original/src/components/SingleProductCard/index.tsx +194 -128
  179. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -9
  180. package/themes/original/src/components/SingleProductReview/index.tsx +38 -5
  181. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  182. package/themes/original/src/components/StripeElementsForm/index.tsx +13 -2
  183. package/themes/original/src/components/UpsellingProducts/index.tsx +15 -5
  184. package/themes/original/src/components/UserDetails/index.tsx +5 -3
  185. package/themes/original/src/components/UserFormDetails/index.tsx +6 -48
  186. package/themes/original/src/components/UserProfile/index.tsx +58 -35
  187. package/themes/original/src/components/UserProfile/styles.ts +17 -0
  188. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  189. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  190. package/themes/original/src/components/Wallets/index.tsx +176 -164
  191. package/themes/original/src/components/Wallets/styles.tsx +12 -8
  192. package/themes/original/src/components/shared/CardAnimation.tsx +47 -0
  193. package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
  194. package/themes/original/src/components/shared/OBottomPopup.tsx +36 -22
  195. package/themes/original/src/components/shared/OButton.tsx +8 -3
  196. package/themes/original/src/components/shared/OIcon.tsx +8 -1
  197. package/themes/original/src/components/shared/OInput.tsx +10 -1
  198. package/themes/original/src/layouts/Container.tsx +13 -9
  199. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  200. package/themes/original/src/types/index.tsx +65 -13
  201. package/themes/original/src/utils/index.tsx +103 -58
  202. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  203. package/themes/original/src/components/Reviews/ReviewDriver/index.tsx +0 -301
  204. package/themes/original/src/components/Reviews/ReviewDriver/styles.tsx +0 -39
  205. package/themes/original/src/components/Reviews/ReviewOrder/index.tsx +0 -326
  206. package/themes/original/src/components/Reviews/ReviewProducts/index.tsx +0 -101
  207. package/themes/original/src/components/Reviews/ReviewProducts/styles.tsx +0 -17
  208. package/themes/original/src/components/Reviews/index.tsx +0 -9
@@ -5,7 +5,6 @@ import {
5
5
  TouchableOpacity,
6
6
  Keyboard,
7
7
  TouchableWithoutFeedback,
8
- KeyboardAvoidingView,
9
8
  Platform,
10
9
  } from 'react-native';
11
10
  import {
@@ -22,7 +21,7 @@ import Spinner from 'react-native-loading-spinner-overlay';
22
21
  import { useForm, Controller } from 'react-hook-form';
23
22
  import Geocoder from 'react-native-geocoding';
24
23
 
25
- import { OInput, OButton, OText, OModal, OIcon } from '../shared';
24
+ import { OInput, OButton, OModal, OIcon } from '../shared';
26
25
  import { AddressFormParams } from '../../types';
27
26
  import { getTraduction } from '../../utils';
28
27
  import { useTheme } from 'styled-components/native';
@@ -57,15 +56,16 @@ const AddressFormUI = (props: AddressFormParams) => {
57
56
  addressState,
58
57
  addressesList,
59
58
  saveAddress,
60
- userCustomerSetup,
61
59
  isGuestUser,
62
60
  isRequiredField,
61
+ showField,
63
62
  isFromProductsList,
64
63
  hasAddressDefault,
65
64
  afterSignup,
66
65
  } = props;
67
66
 
68
67
  const theme = useTheme();
68
+ const [autoCompleteInputFocused, setAutoCompleteInputFocused] = useState(false)
69
69
 
70
70
  const tagsName = [
71
71
  { icon: theme.images.general.tag_home, value: 'home' },
@@ -84,7 +84,6 @@ const AddressFormUI = (props: AddressFormParams) => {
84
84
  backgroundColor: theme.colors.clear
85
85
  },
86
86
  inputsStyle: {
87
- borderColor: theme.colors.border,
88
87
  borderRadius: 10,
89
88
  marginBottom: 20,
90
89
  height: 50,
@@ -93,7 +92,6 @@ const AddressFormUI = (props: AddressFormParams) => {
93
92
  flex: 1,
94
93
  },
95
94
  textAreaStyles: {
96
- borderColor: theme.colors.border,
97
95
  borderRadius: 10,
98
96
  marginBottom: 20,
99
97
  height: 104,
@@ -107,10 +105,16 @@ const AddressFormUI = (props: AddressFormParams) => {
107
105
  end: 0,
108
106
  top: 12,
109
107
  zIndex: 1002,
108
+ right: autoCompleteInputFocused && (
109
+ !!address?.address ||
110
+ !!formState.changes?.address ||
111
+ !!addressState.address.address
112
+ ) ? 30 : 15,
113
+ width: 16
110
114
  },
111
115
  wrapperNavbar: Platform.OS === 'ios'
112
- ? { paddingVertical: 0, paddingHorizontal: 40 }
113
- : { paddingVertical: 20, paddingHorizontal: 40 }
116
+ ? { paddingVertical: 0, paddingHorizontal: 40 }
117
+ : { paddingVertical: 20, paddingHorizontal: 40 }
114
118
  });
115
119
 
116
120
  const [, t] = useLanguage();
@@ -155,8 +159,8 @@ const AddressFormUI = (props: AddressFormParams) => {
155
159
  'true';
156
160
  const maxLimitLocation =
157
161
  configState?.configs?.meters_to_change_address?.value;
158
-
159
- const continueAsGuest = () => navigation.navigate('BusinessList');
162
+ const countryCode = configState?.configs?.country_autocomplete?.value
163
+ const continueAsGuest = () => navigation.navigate('BusinessList', { isGuestUser: true });
160
164
  const goToBack = () => navigation?.canGoBack() && navigation.goBack();
161
165
 
162
166
  const getAddressFormatted = (address: any) => {
@@ -203,6 +207,7 @@ const AddressFormUI = (props: AddressFormParams) => {
203
207
  saveAddress(data.address);
204
208
  if (isGuestUser) {
205
209
  continueAsGuest();
210
+ return;
206
211
  }
207
212
  if (!isGuestUser && !auth) {
208
213
  !isFromProductsList
@@ -544,7 +549,10 @@ const AddressFormUI = (props: AddressFormParams) => {
544
549
  onPress={(data, details: any) => {
545
550
  handleChangeAddress(data, details);
546
551
  }}
547
- query={{ key: googleMapsApiKey }}
552
+ query={{
553
+ key: googleMapsApiKey,
554
+ components: countryCode && countryCode !== '*' ? `country:${countryCode}` : ''
555
+ }}
548
556
  fetchDetails
549
557
  ref={googleInput}
550
558
  textInputProps={{
@@ -563,6 +571,8 @@ const AddressFormUI = (props: AddressFormParams) => {
563
571
  autoCorrect: false,
564
572
  blurOnSubmit: false,
565
573
  returnKeyType: 'next',
574
+ onFocus: () => setAutoCompleteInputFocused(true),
575
+ onBlur: () => setAutoCompleteInputFocused(false)
566
576
  }}
567
577
  onFail={(error) =>
568
578
  setAlertState({
@@ -586,45 +596,40 @@ const AddressFormUI = (props: AddressFormParams) => {
586
596
  textInput: {
587
597
  borderWidth: 1,
588
598
  borderRadius: 7.6,
589
- borderColor: theme.colors.border,
599
+ borderColor: autoCompleteInputFocused ? theme.colors.primary : theme.colors.border,
590
600
  flexGrow: 1,
591
601
  fontSize: 15,
592
- paddingHorizontal: 16,
602
+ paddingLeft: 16,
603
+ paddingRight: 32,
593
604
  minHeight: 50,
594
605
  fontFamily: 'Poppins-Regular',
595
- marginBottom: 24,
606
+ marginBottom: 24
596
607
  },
597
608
  }}
598
609
  />
599
610
  )}
600
611
  />
601
- {hasEditing ? (
602
- <View style={styles.pinIcon}>
603
- <GPSButton
604
- apiKey={googleMapsApiKey}
605
- handleGPS={(data: any, detail: any) => {
606
- handleChangeAddress(data, detail);
607
- setValue(data.address);
608
- if (googleInput?.current) {
609
- googleInput?.current?.setAddressText( data.address );
610
- }
611
- }}
612
- IconButton={<OIcon src={theme.images.general.pin} width={16} />}
613
- />
614
- </View>
615
- ) : null}
616
- </AutocompleteInput>
617
612
 
618
- {/* {!isKeyboardShow && (addressState?.address?.location || formState?.changes?.location) && (
619
- <TouchableOpacity onPress={handleToggleMap} style={{ marginBottom: 10 }}>
620
- <OText
621
- color={theme.colors.primary}
622
- style={{ textAlign: 'center' }}
623
- >
624
- {t('VIEW_MAP', 'View map to modify the exact location')}
625
- </OText>
626
- </TouchableOpacity>
627
- )} */}
613
+ {(
614
+ ((!isEditing && !isGuestUser) ||
615
+ (isEditing && !isGuestUser)) ||
616
+ (isGuestUser)) &&
617
+ (
618
+ <View style={styles.pinIcon}>
619
+ <GPSButton
620
+ apiKey={googleMapsApiKey}
621
+ handleGPS={(data: any, detail: any) => {
622
+ handleChangeAddress(data, detail);
623
+ setValue('address', data.address);
624
+ if (googleInput?.current) {
625
+ googleInput?.current?.setAddressText(data.address);
626
+ }
627
+ }}
628
+ IconButton={<OIcon src={theme.images.general.pin} width={16} />}
629
+ />
630
+ </View>
631
+ )}
632
+ </AutocompleteInput>
628
633
 
629
634
  {(locationChange || formState.changes?.location) && (
630
635
  <View
@@ -648,129 +653,141 @@ const AddressFormUI = (props: AddressFormParams) => {
648
653
  )}
649
654
 
650
655
  <View style={{ flexDirection: 'row', flexBasis: '50%' }}>
651
- <Controller
652
- control={control}
653
- name="internal_number"
654
- rules={{
655
- required:
656
- isRequiredField && isRequiredField('internal_number')
657
- ? t(
658
- `VALIDATION_ERROR_INTERNAL_NUMBER_REQUIRED`,
659
- `The field internal number is required`,
660
- )
661
- : null,
662
- }}
663
- defaultValue={
664
- address?.internal_number ||
665
- formState.changes?.internal_number ||
666
- addressState?.address?.internal_number ||
667
- ''
668
- }
669
- render={() => (
670
- <OInput
671
- name="internal_number"
672
- placeholder={t('INTERNAL_NUMBER', 'Internal number')}
673
- onChange={(text: string) => {
674
- handleChangeInput(text);
675
- setValue('internal_number', text);
676
- }}
677
- value={
678
- address?.internal_number ||
679
- formState.changes?.internal_number ||
680
- addressState?.address?.internal_number ||
681
- ''
682
- }
683
- style={{ ...styles.inputsStyle, marginRight: 24 }}
684
- forwardRef={internalNumberRef}
685
- returnKeyType="next"
686
- onSubmitEditing={() => zipCodeRef?.current?.focus?.()}
687
- blurOnSubmit={false}
688
- />
689
- )}
690
- />
656
+ {showField && showField('internal_number') && (
657
+ <Controller
658
+ control={control}
659
+ name="internal_number"
660
+ rules={{
661
+ required:
662
+ isRequiredField && isRequiredField('internal_number')
663
+ ? t(
664
+ `VALIDATION_ERROR_INTERNAL_NUMBER_REQUIRED`,
665
+ `The field internal number is required`,
666
+ )
667
+ : null,
668
+ }}
669
+ defaultValue={
670
+ address?.internal_number ||
671
+ formState.changes?.internal_number ||
672
+ addressState?.address?.internal_number ||
673
+ ''
674
+ }
675
+ render={() => (
676
+ <OInput
677
+ name="internal_number"
678
+ placeholder={t('INTERNAL_NUMBER', 'Internal number')}
679
+ onChange={(text: string) => {
680
+ handleChangeInput(text);
681
+ setValue('internal_number', text);
682
+ }}
683
+ value={
684
+ address?.internal_number ||
685
+ formState.changes?.internal_number ||
686
+ addressState?.address?.internal_number ||
687
+ ''
688
+ }
689
+ isFocusHighlight
690
+ style={{
691
+ ...styles.inputsStyle,
692
+ marginRight: showField('internal_number') && showField('zipcode') ? 24 : 0
693
+ }}
694
+ forwardRef={internalNumberRef}
695
+ returnKeyType="next"
696
+ onSubmitEditing={() => zipCodeRef?.current?.focus?.()}
697
+ blurOnSubmit={false}
698
+ />
699
+ )}
700
+ />
701
+ )}
691
702
 
703
+ {showField && showField('zipcode') && (
704
+ <Controller
705
+ control={control}
706
+ name="zipcode"
707
+ rules={{
708
+ required:
709
+ isRequiredField && isRequiredField('zipcode')
710
+ ? t(
711
+ `VALIDATION_ERROR_ZIP_CODE_REQUIRED`,
712
+ `The field Zip Code is required`,
713
+ )
714
+ : null,
715
+ }}
716
+ defaultValue={
717
+ address?.zipcode ||
718
+ formState.changes?.zipcode ||
719
+ addressState.address.zipcode ||
720
+ ''
721
+ }
722
+ render={() => (
723
+ <OInput
724
+ name="zipcode"
725
+ placeholder={t('ZIP_CODE', 'Zip code')}
726
+ onChange={(text: string) => {
727
+ handleChangeInput(text);
728
+ setValue('zipcode', text);
729
+ }}
730
+ value={
731
+ address?.zipcode ||
732
+ formState.changes?.zipcode ||
733
+ addressState.address.zipcode ||
734
+ ''
735
+ }
736
+ isFocusHighlight
737
+ style={styles.inputsStyle}
738
+ forwardRef={zipCodeRef}
739
+ returnKeyType="next"
740
+ onSubmitEditing={() => addressNotesRef?.current?.focus?.()}
741
+ blurOnSubmit={false}
742
+ />
743
+ )}
744
+ />
745
+ )}
746
+ </View>
747
+
748
+ {showField && showField('address_notes') && (
692
749
  <Controller
693
750
  control={control}
694
- name="zipcode"
751
+ name="address_notes"
695
752
  rules={{
696
753
  required:
697
- isRequiredField && isRequiredField('zipcode')
754
+ isRequiredField && isRequiredField('address_notes')
698
755
  ? t(
699
- `VALIDATION_ERROR_ZIP_CODE_REQUIRED`,
700
- `The field Zip Code is required`,
756
+ `VALIDATION_ERROR_ADDRESS_NOTES_REQUIRED`,
757
+ `The field address notes is required`,
701
758
  )
702
759
  : null,
703
760
  }}
704
761
  defaultValue={
705
- address?.zipcode ||
706
- formState.changes?.zipcode ||
707
- addressState.address.zipcode ||
762
+ address?.address_notes ||
763
+ formState.changes?.address_notes ||
764
+ addressState.address.address_notes ||
708
765
  ''
709
766
  }
710
767
  render={() => (
711
768
  <OInput
712
- name="zipcode"
713
- placeholder={t('ZIP_CODE', 'Zip code')}
714
- onChange={(text: string) => {
769
+ name="address_notes"
770
+ placeholder={t('ADDRESS_NOTES', 'Address notes')}
771
+ onChange={(text: any) => {
715
772
  handleChangeInput(text);
716
- setValue('zipcode', text);
773
+ setValue('address_notes', text);
717
774
  }}
718
775
  value={
719
- address?.zipcode ||
720
- formState.changes?.zipcode ||
721
- addressState.address.zipcode ||
776
+ address?.address_notes ||
777
+ formState.changes?.address_notes ||
778
+ addressState.address.address_notes ||
722
779
  ''
723
780
  }
724
- style={styles.inputsStyle}
725
- forwardRef={zipCodeRef}
726
- returnKeyType="next"
727
- onSubmitEditing={() => addressNotesRef?.current?.focus?.()}
728
- blurOnSubmit={false}
781
+ multiline
782
+ isFocusHighlight
783
+ style={styles.textAreaStyles}
784
+ returnKeyType="done"
785
+ forwardRef={addressNotesRef}
786
+ blurOnSubmit
729
787
  />
730
788
  )}
731
789
  />
732
- </View>
733
-
734
- <Controller
735
- control={control}
736
- name="address_notes"
737
- rules={{
738
- required:
739
- isRequiredField && isRequiredField('address_notes')
740
- ? t(
741
- `VALIDATION_ERROR_ADDRESS_NOTES_REQUIRED`,
742
- `The field address notes is required`,
743
- )
744
- : null,
745
- }}
746
- defaultValue={
747
- address?.address_notes ||
748
- formState.changes?.address_notes ||
749
- addressState.address.address_notes ||
750
- ''
751
- }
752
- render={() => (
753
- <OInput
754
- name="address_notes"
755
- placeholder={t('ADDRESS_NOTES', 'Address notes')}
756
- onChange={(text: any) => {
757
- handleChangeInput(text);
758
- setValue('address_notes', text);
759
- }}
760
- value={
761
- address?.address_notes ||
762
- formState.changes?.address_notes ||
763
- addressState.address.address_notes ||
764
- ''
765
- }
766
- multiline
767
- style={styles.textAreaStyles}
768
- returnKeyType="done"
769
- forwardRef={addressNotesRef}
770
- blurOnSubmit
771
- />
772
- )}
773
- />
790
+ )}
774
791
  </FormInput>
775
792
  <IconsContainer>
776
793
  {tagsName.map((tag) => (
@@ -56,7 +56,7 @@ const AddressListUI = (props: AddressListParams) => {
56
56
  }
57
57
 
58
58
  const uniqueAddressesList = (addressList.addresses && addressList.addresses.filter(
59
- (address: any, i: number, self: any) =>
59
+ (address: any, i: number, self: any) => address.address &&
60
60
  i === self.findIndex((obj: any) => (
61
61
  address.address === obj.address &&
62
62
  address.address_notes === obj.address_notes &&
@@ -21,7 +21,7 @@ export const AppleLogin = (props: any) => {
21
21
  const [{ configs }] = useConfig();
22
22
  const [credentialStateForUser, updateCredentialStateForUser] = useState<any>(-1);
23
23
 
24
- let user : any= null
24
+ let user: any = null
25
25
 
26
26
  const buttonText = auth
27
27
  ? t('CONTINUE_WITH_APPLE', 'Logout with Apple')
@@ -53,7 +53,7 @@ export const AppleLogin = (props: any) => {
53
53
  }
54
54
  }
55
55
 
56
- const fetchAndUpdateCredentialState = async (updateCredentialStateForUser : any) => {
56
+ const fetchAndUpdateCredentialState = async (updateCredentialStateForUser: any) => {
57
57
  if (user === null) {
58
58
  updateCredentialStateForUser('N/A');
59
59
  } else {
@@ -66,7 +66,7 @@ export const AppleLogin = (props: any) => {
66
66
  }
67
67
  }
68
68
 
69
- const onIOSButtonPress = async (updateCredentialStateForUser : any) => {
69
+ const onIOSButtonPress = async (updateCredentialStateForUser: any) => {
70
70
  try {
71
71
  const appleAuthRequestResponse = await appleAuth.performRequest({
72
72
  requestedOperation: appleAuth.Operation.LOGIN,
@@ -79,7 +79,7 @@ export const AppleLogin = (props: any) => {
79
79
  identityToken,
80
80
  authorizationCode
81
81
  } = appleAuthRequestResponse;
82
-
82
+
83
83
  user = newUser;
84
84
 
85
85
  fetchAndUpdateCredentialState(updateCredentialStateForUser).catch(error =>
@@ -1,6 +1,7 @@
1
1
  import React, { useState, useEffect } from 'react';
2
- import { StyleSheet, View, TouchableOpacity, Linking } from 'react-native';
3
- import { useUtils, useOrder, useLanguage, useOrderingTheme } from 'ordering-components/native';
2
+ import { StyleSheet, View, TouchableOpacity, Linking, Pressable } from 'react-native';
3
+ import FastImage from 'react-native-fast-image'
4
+ import { useUtils, useOrder, useLanguage } from 'ordering-components/native';
4
5
  import { useTheme } from 'styled-components/native';
5
6
  import { OIcon, OText, OModal } from '../shared';
6
7
  import { BusinessBasicInformationParams } from '../../types';
@@ -38,7 +39,6 @@ export const BusinessBasicInformation = (
38
39
  const { business, loading } = businessState;
39
40
 
40
41
  const theme = useTheme();
41
- const [orderingTheme] = useOrderingTheme()
42
42
  const [orderState] = useOrder();
43
43
  const [, t] = useLanguage();
44
44
  const [{ parsePrice, parseDistance, optimizeImage }] = useUtils();
@@ -46,9 +46,9 @@ export const BusinessBasicInformation = (
46
46
  const [openBusinessReviews, setOpenBusinessReviews] = useState(false);
47
47
  const [businessInformationObtained, setBusinessInformationObtained] = useState(false)
48
48
  const [businessReviewsObtained, setBusinessReviewsObtainedbtained] = useState(false)
49
- const isChewLayout = theme?.layouts?.business_view?.components?.header?.components?.layout?.type === 'chew'
50
- const showLogo = !orderingTheme?.theme?.business_view?.components?.header?.components?.business?.components?.logo?.hidden
51
-
49
+ const isChewLayout = theme?.header?.components?.layout?.type === 'chew'
50
+ const showLogo = !theme?.business_view?.components?.header?.components?.business?.components?.logo?.hidden
51
+
52
52
  const styles = StyleSheet.create({
53
53
  businesInfoheaderStyle: {
54
54
  height: 150,
@@ -56,12 +56,12 @@ export const BusinessBasicInformation = (
56
56
  headerStyle: {
57
57
  height: isChewLayout ? 170 : 260,
58
58
  },
59
- businessLogo: {
59
+ logoStyle: {
60
60
  width: 72,
61
61
  height: 72,
62
62
  borderRadius: 7.6,
63
63
  justifyContent: 'flex-start',
64
- alignItems: 'flex-start',
64
+ alignItems: 'flex-start'
65
65
  },
66
66
  businessInfo: {
67
67
  paddingHorizontal: 40,
@@ -104,7 +104,10 @@ export const BusinessBasicInformation = (
104
104
  height: 12,
105
105
  width: 12,
106
106
  margin: 0,
107
- padding: 0
107
+ padding: 0,
108
+ display: 'flex',
109
+ justifyContent: 'center',
110
+ alignItems: 'center'
108
111
  },
109
112
  headerChewStyle: {
110
113
  paddingHorizontal: 30,
@@ -218,14 +221,15 @@ export const BusinessBasicInformation = (
218
221
  />
219
222
  )}
220
223
  {!!business?.tiktok_profile && (
221
- <TouchableOpacity style={styles.socialIcon} onPress={() => Linking.openURL(business?.tiktok_profile)}>
224
+ <Pressable style={styles.socialIcon} onPress={() => Linking.openURL(business?.tiktok_profile)}>
222
225
  <View style={styles.tiktokIcon}>
223
226
  <OIcon
224
227
  src={theme.images.general.tiktok}
225
- style={{ width: '100%', height: '100%' }}
228
+ style={{ width: 10, height: 12 }}
229
+ cover
226
230
  />
227
231
  </View>
228
- </TouchableOpacity>
232
+ </Pressable>
229
233
  )}
230
234
  {!!business?.pinterest_profile && (
231
235
  <SocialNetWork
@@ -247,7 +251,11 @@ export const BusinessBasicInformation = (
247
251
  )}
248
252
  {isChewLayout && (
249
253
  <TouchableOpacity onPress={() => handleClickBusinessInformation()}>
250
- <OText style={{textDecorationColor: theme.colors.black, textDecorationLine: 'underline'}}>
254
+ <OText
255
+ color={theme.colors.primary}
256
+ style={{ textDecorationColor: theme.colors.primary, textDecorationLine: 'underline' }}
257
+ size={12}
258
+ >
251
259
  {t('SEE_MORE_DESCRIPTION', 'See more')}
252
260
  </OText>
253
261
  </TouchableOpacity>
@@ -267,11 +275,11 @@ export const BusinessBasicInformation = (
267
275
  ? styles.businesInfoheaderStyle
268
276
  : { ...styles.headerStyle, backgroundColor: theme.colors.backgroundGray }
269
277
  }
270
- source={{
271
- uri:
272
- header ||
273
- optimizeImage(businessState?.business?.header, 'h_250,c_limit'),
274
- }}
278
+ {...(!loading && {
279
+ source: (header || businessState?.business?.header) ? {
280
+ uri: header || optimizeImage(businessState?.business?.header, 'h_250,c_limit')
281
+ } : theme?.images?.dummies?.businessHeader
282
+ })}
275
283
  imageStyle={{ opacity: isChewLayout ? 0.5 : 1 }}
276
284
  >
277
285
  {!isBusinessInfoShow && !isChewLayout && (
@@ -279,7 +287,7 @@ export const BusinessBasicInformation = (
279
287
  <OIcon src={theme.images.general.info} width={24} />
280
288
  </WrapBusinessInfo>
281
289
  )}
282
- {isChewLayout && (
290
+ {isChewLayout && !loading && (
283
291
  <View style={styles.headerChewStyle}>
284
292
  <OText size={24} weight={'600'} mBottom={-5}>
285
293
  {business?.name}
@@ -298,22 +306,22 @@ export const BusinessBasicInformation = (
298
306
  <BusinessInfo style={styles.businessInfo}>
299
307
  {showLogo && (
300
308
  <BusinessLogo isChewLayout={isChewLayout}>
301
- {loading ? (
302
- <View>
303
- <Placeholder Animation={Fade}>
304
- <PlaceholderLine height={50} width={20} />
305
- </Placeholder>
306
- </View>
307
- ) : (
308
- !isBusinessInfoShow && (
309
+ {!isBusinessInfoShow && (
310
+ logo || businessState?.business?.logo ?
311
+ <FastImage
312
+ style={styles.logoStyle}
313
+ source={{
314
+ uri: logo || optimizeImage(businessState?.business?.logo, 'h_70,c_limit'),
315
+ priority: FastImage.priority.high,
316
+ cache: FastImage.cacheControl.web
317
+ }}
318
+ resizeMode={FastImage.resizeMode.contain}
319
+ />
320
+ :
309
321
  <OIcon
310
- url={
311
- logo ||
312
- optimizeImage(businessState?.business?.logo, 'h_70,c_limit')
313
- }
314
- style={styles.businessLogo}
322
+ src={theme?.images?.dummies?.businessLogo}
323
+ style={styles.logoStyle}
315
324
  />
316
- )
317
325
  )}
318
326
  </BusinessLogo>
319
327
  )}
@@ -327,7 +335,7 @@ export const BusinessBasicInformation = (
327
335
  </Placeholder>
328
336
  ) : (
329
337
  <TitleWrapper>
330
- <OText size={24} weight={'600'}>
338
+ <OText size={24} weight={'600'} numberOfLines={2}>
331
339
  {business?.name}
332
340
  </OText>
333
341
  {business?.ribbon?.enabled && (
@@ -412,15 +420,23 @@ export const BusinessBasicInformation = (
412
420
  {isPreOrder && (!business?.professionals || business?.professionals?.length === 0) && (
413
421
  <>
414
422
  <TouchableOpacity onPress={() => navigation.navigate('BusinessPreorder', { business: businessState?.business, handleBusinessClick: () => navigation?.goBack() })}>
415
- <OText color={theme.colors.textSecondary} style={{ textDecorationLine: 'underline' }}>
416
- {t('PRE_ORDER', 'Preorder')}
423
+ <OText
424
+ color={theme.colors.primary}
425
+ style={{ textDecorationColor: theme.colors.primary, textDecorationLine: 'underline' }}
426
+ size={12}
427
+ >
428
+ {t('PREORDER', 'Preorder')}
417
429
  </OText>
418
430
  </TouchableOpacity>
419
431
  <OText size={12} color={theme.colors.textSecondary}>{' \u2022 '}</OText>
420
432
  </>
421
433
  )}
422
434
  <TouchableOpacity onPress={() => handleClickBusinessReviews()}>
423
- <OText color={theme.colors.textSecondary} style={{ textDecorationLine: 'underline' }}>
435
+ <OText
436
+ color={theme.colors.primary}
437
+ style={{ textDecorationColor: theme.colors.primary, textDecorationLine: 'underline' }}
438
+ size={12}
439
+ >
424
440
  {t('REVIEWS', 'Reviews')}
425
441
  </OText>
426
442
  </TouchableOpacity>