ordering-ui-react-native 0.17.42 → 0.17.43-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 (212) hide show
  1. package/package.json +8 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/OrderCreating/index.tsx +1 -21
  5. package/src/components/PaymentOptionsWebView/index.tsx +29 -8
  6. package/src/components/StripeMethodForm/index.tsx +136 -102
  7. package/src/components/VerifyPhone/styles.tsx +1 -2
  8. package/src/components/shared/OToast.tsx +4 -4
  9. package/src/types/index.tsx +5 -0
  10. package/src/utils/index.tsx +7 -1
  11. package/themes/business/index.tsx +2 -0
  12. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +265 -240
  13. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
  14. package/themes/business/src/components/BusinessController/index.tsx +0 -1
  15. package/themes/business/src/components/Chat/index.tsx +125 -113
  16. package/themes/business/src/components/DriverMap/index.tsx +17 -6
  17. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  18. package/themes/business/src/components/LoginForm/Otp/index.tsx +120 -0
  19. package/themes/business/src/components/LoginForm/Otp/styles.tsx +7 -0
  20. package/themes/business/src/components/LoginForm/index.tsx +238 -80
  21. package/themes/business/src/components/LoginForm/styles.tsx +10 -0
  22. package/themes/business/src/components/MapView/index.tsx +10 -10
  23. package/themes/business/src/components/NewOrderNotification/index.tsx +49 -50
  24. package/themes/business/src/components/OrderDetails/Delivery.tsx +4 -3
  25. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +92 -49
  26. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +59 -62
  27. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
  28. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  29. package/themes/business/src/components/OrderMessage/index.tsx +18 -17
  30. package/themes/business/src/components/OrderSummary/index.tsx +113 -121
  31. package/themes/business/src/components/OrdersOption/index.tsx +32 -75
  32. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +250 -0
  33. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  34. package/themes/business/src/components/PreviousOrders/index.tsx +445 -243
  35. package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
  36. package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
  37. package/themes/business/src/components/ReviewCustomer/index.tsx +35 -18
  38. package/themes/business/src/components/StoresList/index.tsx +2 -2
  39. package/themes/business/src/components/shared/OLink.tsx +33 -13
  40. package/themes/business/src/components/shared/OModal.tsx +16 -9
  41. package/themes/business/src/components/shared/OText.tsx +8 -2
  42. package/themes/business/src/types/index.tsx +32 -2
  43. package/themes/business/src/utils/index.tsx +44 -1
  44. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  45. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  46. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  47. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -1
  48. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  49. package/themes/kiosk/src/components/LoginForm/Otp/index.tsx +92 -0
  50. package/themes/kiosk/src/components/LoginForm/Otp/styles.tsx +7 -0
  51. package/themes/kiosk/src/components/LoginForm/index.tsx +473 -151
  52. package/themes/kiosk/src/components/LoginForm/styles.tsx +14 -1
  53. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  54. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  55. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  56. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +3 -2
  57. package/themes/kiosk/src/components/PhoneInputNumber/styles.tsx +1 -3
  58. package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
  59. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  60. package/themes/kiosk/src/components/shared/OModal.tsx +14 -11
  61. package/themes/kiosk/src/layouts/Container.tsx +7 -1
  62. package/themes/kiosk/src/types/index.d.ts +13 -0
  63. package/themes/kiosk/src/utils/index.tsx +15 -0
  64. package/themes/original/index.tsx +6 -0
  65. package/themes/original/src/components/AddressDetails/index.tsx +29 -11
  66. package/themes/original/src/components/AddressForm/index.tsx +79 -44
  67. package/themes/original/src/components/AddressList/index.tsx +26 -21
  68. package/themes/original/src/components/AddressList/styles.tsx +4 -2
  69. package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
  70. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  71. package/themes/original/src/components/BusinessBasicInformation/index.tsx +160 -91
  72. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +9 -7
  73. package/themes/original/src/components/BusinessController/index.tsx +141 -67
  74. package/themes/original/src/components/BusinessController/styles.tsx +22 -2
  75. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  76. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  77. package/themes/original/src/components/BusinessInformation/index.tsx +10 -31
  78. package/themes/original/src/components/BusinessItemAccordion/index.tsx +23 -22
  79. package/themes/original/src/components/BusinessListingSearch/index.tsx +351 -326
  80. package/themes/original/src/components/BusinessPreorder/index.tsx +97 -16
  81. package/themes/original/src/components/BusinessProductsList/index.tsx +20 -11
  82. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  83. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
  84. package/themes/original/src/components/BusinessProductsListing/index.tsx +684 -524
  85. package/themes/original/src/components/BusinessProductsListing/styles.tsx +2 -4
  86. package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
  87. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  88. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +106 -79
  89. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -9
  90. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  91. package/themes/original/src/components/Cart/index.tsx +102 -69
  92. package/themes/original/src/components/CartContent/index.tsx +115 -19
  93. package/themes/original/src/components/CartContent/styles.tsx +17 -7
  94. package/themes/original/src/components/Checkout/index.tsx +375 -179
  95. package/themes/original/src/components/Checkout/styles.tsx +4 -2
  96. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  97. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  98. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  99. package/themes/original/src/components/DriverTips/index.tsx +52 -34
  100. package/themes/original/src/components/Favorite/index.tsx +8 -9
  101. package/themes/original/src/components/Favorite/styles.tsx +1 -1
  102. package/themes/original/src/components/FavoriteList/index.tsx +51 -80
  103. package/themes/original/src/components/FloatingButton/index.tsx +1 -2
  104. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  105. package/themes/original/src/components/GPSButton/index.tsx +6 -4
  106. package/themes/original/src/components/GPSButton/styles.ts +3 -3
  107. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +96 -0
  108. package/themes/original/src/components/GiftCard/GiftCardUI/styles.tsx +5 -0
  109. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +100 -0
  110. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +8 -0
  111. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +191 -0
  112. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +8 -0
  113. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +165 -0
  114. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +9 -0
  115. package/themes/original/src/components/GoogleMap/index.tsx +15 -4
  116. package/themes/original/src/components/Help/index.tsx +8 -8
  117. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +11 -22
  118. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +6 -0
  119. package/themes/original/src/components/HelpGuide/index.tsx +12 -16
  120. package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
  121. package/themes/original/src/components/HelpOrder/index.tsx +12 -25
  122. package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
  123. package/themes/original/src/components/Home/index.tsx +13 -4
  124. package/themes/original/src/components/LastOrder/index.tsx +1 -34
  125. package/themes/original/src/components/LoginForm/Otp/index.tsx +139 -75
  126. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  127. package/themes/original/src/components/LoginForm/index.tsx +71 -28
  128. package/themes/original/src/components/LottieAnimation/index.tsx +89 -55
  129. package/themes/original/src/components/MessageListing/index.tsx +16 -42
  130. package/themes/original/src/components/Messages/index.tsx +32 -10
  131. package/themes/original/src/components/MomentOption/index.tsx +195 -88
  132. package/themes/original/src/components/MultiCart/index.tsx +50 -0
  133. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +151 -49
  134. package/themes/original/src/components/MultiCheckout/index.tsx +308 -88
  135. package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
  136. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
  137. package/themes/original/src/components/MultiOrdersDetails/index.tsx +68 -21
  138. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
  139. package/themes/original/src/components/MyOrders/index.tsx +53 -51
  140. package/themes/original/src/components/NavBar/index.tsx +18 -18
  141. package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
  142. package/themes/original/src/components/Notifications/index.tsx +46 -50
  143. package/themes/original/src/components/Notifications/styles.tsx +6 -3
  144. package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
  145. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +15 -3
  146. package/themes/original/src/components/OrderDetails/index.tsx +199 -359
  147. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  148. package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
  149. package/themes/original/src/components/OrderProgress/index.tsx +93 -114
  150. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  151. package/themes/original/src/components/OrderSummary/index.tsx +87 -59
  152. package/themes/original/src/components/OrderTypeSelector/index.tsx +1 -1
  153. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +24 -19
  154. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +14 -14
  155. package/themes/original/src/components/OrdersOption/index.tsx +70 -65
  156. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  157. package/themes/original/src/components/PageBanner/index.tsx +171 -0
  158. package/themes/original/src/components/PageBanner/styles.tsx +11 -0
  159. package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
  160. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  161. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  162. package/themes/original/src/components/PaymentOptions/index.tsx +64 -7
  163. package/themes/original/src/components/PhoneInputNumber/index.tsx +4 -4
  164. package/themes/original/src/components/PlaceSpot/index.tsx +12 -6
  165. package/themes/original/src/components/ProductForm/index.tsx +116 -37
  166. package/themes/original/src/components/ProductForm/styles.tsx +5 -7
  167. package/themes/original/src/components/ProductItemAccordion/index.tsx +14 -13
  168. package/themes/original/src/components/ProductOptionSubOption/index.tsx +19 -11
  169. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +1 -2
  170. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  171. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
  172. package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
  173. package/themes/original/src/components/Promotions/index.tsx +234 -220
  174. package/themes/original/src/components/Promotions/styles.tsx +10 -3
  175. package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
  176. package/themes/original/src/components/ReviewOrder/index.tsx +26 -9
  177. package/themes/original/src/components/ReviewOrder/styles.tsx +7 -0
  178. package/themes/original/src/components/ReviewProducts/index.tsx +23 -11
  179. package/themes/original/src/components/ReviewTrigger/index.tsx +27 -9
  180. package/themes/original/src/components/ReviewTrigger/styles.tsx +8 -1
  181. package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
  182. package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
  183. package/themes/original/src/components/ServiceForm/index.tsx +74 -19
  184. package/themes/original/src/components/Sessions/index.tsx +11 -8
  185. package/themes/original/src/components/Sessions/styles.tsx +5 -0
  186. package/themes/original/src/components/SignupForm/index.tsx +42 -19
  187. package/themes/original/src/components/SingleOrderCard/index.tsx +130 -52
  188. package/themes/original/src/components/SingleOrderCard/styles.tsx +11 -2
  189. package/themes/original/src/components/SingleProductCard/index.tsx +72 -34
  190. package/themes/original/src/components/SingleProductCard/styles.tsx +22 -4
  191. package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
  192. package/themes/original/src/components/StripeCardsList/index.tsx +13 -3
  193. package/themes/original/src/components/StripeElementsForm/index.tsx +51 -34
  194. package/themes/original/src/components/UpsellingProducts/index.tsx +238 -224
  195. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  196. package/themes/original/src/components/UserDetails/index.tsx +8 -4
  197. package/themes/original/src/components/UserFormDetails/index.tsx +47 -7
  198. package/themes/original/src/components/UserProfile/index.tsx +5 -7
  199. package/themes/original/src/components/UserProfileForm/index.tsx +25 -28
  200. package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
  201. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  202. package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
  203. package/themes/original/src/components/Wallets/index.tsx +67 -24
  204. package/themes/original/src/components/Wallets/styles.tsx +5 -4
  205. package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
  206. package/themes/original/src/components/shared/OButton.tsx +6 -2
  207. package/themes/original/src/components/shared/OInput.tsx +16 -2
  208. package/themes/original/src/components/shared/OModal.tsx +3 -3
  209. package/themes/original/src/layouts/Container.tsx +1 -1
  210. package/themes/original/src/types/index.tsx +38 -9
  211. package/themes/original/src/utils/index.tsx +364 -58
  212. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -7,7 +7,7 @@ export const TopHeader = styled.View`
7
7
  width: 100%;
8
8
  flex-direction: row;
9
9
  align-items: center;
10
- justify-content: space-between;
10
+ justify-content: ${({ hideArrow }: any) => hideArrow ? 'flex-end' : 'space-between'};
11
11
  z-index: 1;
12
12
  height: 60px;
13
13
  min-height: 60px;
@@ -24,7 +24,7 @@ export const WrapSearchBar = styled.View`
24
24
  flex: 1;
25
25
  `
26
26
  export const WrapContent = styled.View`
27
- padding: 10px 40px;
27
+ padding-vertical: 10px;
28
28
  `
29
29
 
30
30
  export const BusinessProductsListingContainer = styled.ScrollView`
@@ -38,8 +38,6 @@ export const FiltProductsContainer = styled.ScrollView`
38
38
  position: absolute;
39
39
  width: 100%;
40
40
  z-index: 20000;
41
- top: 80px;
42
- margin-top: 20px;
43
41
  `
44
42
 
45
43
  export const BackgroundGray = styled.View`
@@ -3,6 +3,7 @@ import {
3
3
  BusinessReviews as BusinessReviewController,
4
4
  useLanguage,
5
5
  useOrder,
6
+ useUtils
6
7
  } from 'ordering-components/native';
7
8
  import { useTheme } from 'styled-components/native';
8
9
  import IconAntDesign from 'react-native-vector-icons/AntDesign';
@@ -30,6 +31,7 @@ const BusinessReviewsUI = (props: BusinessReviewsParams) => {
30
31
  const theme = useTheme();
31
32
  const [searchReview, setSearchReview] = useState('')
32
33
  const [orderState] = useOrder();
34
+ const [{ parseDate }] = useUtils()
33
35
 
34
36
  const styles = StyleSheet.create({
35
37
  starIcon: {
@@ -94,7 +96,7 @@ const BusinessReviewsUI = (props: BusinessReviewsParams) => {
94
96
  const ReviewItem = ({ comment, created_at, total }: any) => (
95
97
  <View style={{ marginBottom: 30 }}>
96
98
  <OText size={12} color={theme.colors.textSecondary}>
97
- {moment(created_at).format('MMMM d, yyyy • hh:mm')}
99
+ {parseDate(created_at, { outputFormat: 'MMMM D, YYYY • hh:mm A' })}
98
100
  </OText>
99
101
  <OText size={12} color={theme.colors.textNormal}>{comment}</OText>
100
102
  </View>
@@ -284,7 +284,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
284
284
  style={{ paddingTop: top + 20 }}>
285
285
  {!auth && (
286
286
  <TouchableOpacity onPress={() => navigation?.canGoBack() && navigation.goBack()} style={{ position: 'absolute', marginStart: 40, paddingVertical: 20 }}>
287
- <IconAntDesign name='arrowleft' size={26} />
287
+ <OIcon src={theme.images.general.arrow_left} color={theme.colors.textNormal} />
288
288
  </TouchableOpacity>
289
289
  )}
290
290
  <Search>
@@ -18,8 +18,7 @@ import {
18
18
  useSession,
19
19
  useOrder,
20
20
  useConfig,
21
- useUtils,
22
- useOrderingTheme
21
+ useUtils
23
22
  } from 'ordering-components/native';
24
23
  import { useTheme } from 'styled-components/native';
25
24
  import Ionicons from 'react-native-vector-icons/Ionicons'
@@ -32,7 +31,6 @@ import {
32
31
  HeaderWrapper,
33
32
  ListWrapper,
34
33
  FeaturedWrapper,
35
- OrderProgressWrapper,
36
34
  FarAwayMessage,
37
35
  AddressInputContainer,
38
36
  PreorderInput,
@@ -40,8 +38,7 @@ import {
40
38
  BusinessLogosContainer
41
39
  } from './styles';
42
40
 
43
- import { SearchBar } from '../../../SearchBar';
44
- import { OButton, OIcon, OText, OBottomPopup, OModal } from '../../../shared';
41
+ import { OIcon, OText, OModal } from '../../../shared';
45
42
  import { BusinessesListingParams } from '../../../../types';
46
43
  import { NotFoundSource } from '../../../NotFoundSource';
47
44
  import { BusinessTypeFilter } from '../../../BusinessTypeFilter';
@@ -50,11 +47,13 @@ import { OrderTypeSelector } from '../../../OrderTypeSelector';
50
47
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
51
48
  import { BusinessFeaturedController } from '../../../BusinessFeaturedController';
52
49
  import { HighestRatedBusinesses } from '../../../HighestRatedBusinesses';
53
- import { getTypesText, convertToRadian } from '../../../../utils';
50
+ import { getTypesText } from '../../../../utils';
54
51
  import { OrderProgress } from '../../../OrderProgress';
55
52
  import { useFocusEffect, useIsFocused } from '@react-navigation/native';
56
53
  import FastImage from 'react-native-fast-image';
57
54
  import IconAntDesign from 'react-native-vector-icons/AntDesign';
55
+ import { PageBanner } from '../../../PageBanner'
56
+ import { CitiesControl } from '../../../CitiesControl'
58
57
 
59
58
  const PIXELS_TO_SCROLL = 2000;
60
59
 
@@ -62,12 +61,10 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
62
61
  const {
63
62
  navigation,
64
63
  businessesList,
65
- searchValue,
66
64
  getBusinesses,
67
65
  handleChangeBusinessType,
68
66
  handleBusinessClick,
69
67
  paginationProps,
70
- handleChangeSearch,
71
68
  businessId,
72
69
  isGuestUser,
73
70
  handleUpdateBusinessList,
@@ -76,15 +73,26 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
76
73
  logosLayout
77
74
  } = props;
78
75
  const theme = useTheme();
79
- const [orderingTheme] = useOrderingTheme()
80
76
  const isFocused = useIsFocused();
77
+
78
+ const [, t] = useLanguage();
79
+ const [{ user, auth }] = useSession();
80
+ const [orderState, { changeCityFilter }] = useOrder();
81
+ const [{ configs }] = useConfig();
82
+ const [{ parseDate }] = useUtils();
83
+
81
84
  const appState = useRef(AppState.currentState)
82
- const searchBarRef = useRef<any>()
83
- const [appStateVisible, setAppStateVisible] = useState(appState.current);
84
- const isChewLayout = theme?.header?.components?.layout?.type === 'chew'
85
- const hideCities = theme?.business_listing_view?.components?.cities?.hidden ?? true
85
+ const isChewLayout = theme?.header?.components?.layout?.type?.toLowerCase() === 'chew'
86
86
  const [refreshing] = useState(false);
87
- const bgHeader = orderingTheme?.theme?.business_listing_view?.components?.business_hero?.components?.image
87
+ const allCitiesDisabled = citiesState?.cities?.every((city: any) => !city.enabled)
88
+ const hideCities = (theme?.business_listing_view?.components?.cities?.hidden || orderState?.options?.type !== 2 || allCitiesDisabled) ?? true
89
+ const hideHero = theme?.business_listing_view?.components?.business_hero?.hidden
90
+ const hidePreviousOrders = theme?.business_listing_view?.components?.previous_orders_block?.hidden
91
+ const hideHighestBusiness = theme?.business_listing_view?.components?.highest_rated_business_block?.hidden
92
+ const isAllCategoriesHidden = theme?.business_listing_view?.components?.categories?.hidden
93
+ const bgHeader = theme?.business_listing_view?.components?.business_hero?.components?.image
94
+ const bgHeaderHeight = theme?.business_listing_view?.components?.business_hero?.components?.style?.height
95
+
88
96
  const styles = StyleSheet.create({
89
97
  container: {
90
98
  marginBottom: 0,
@@ -137,7 +145,8 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
137
145
  minHeight: 45,
138
146
  paddingVertical: 5,
139
147
  paddingHorizontal: 20,
140
- borderWidth: 1
148
+ borderWidth: 1,
149
+ justifyContent: 'center'
141
150
  },
142
151
  businessSkeleton: {
143
152
  borderRadius: 8,
@@ -147,19 +156,12 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
147
156
  },
148
157
  });
149
158
 
150
-
151
- const [, t] = useLanguage();
152
- const [{ user, auth }] = useSession();
153
- const [orderState, { changeCityFilter }] = useOrder();
154
- const [{ configs }] = useConfig();
155
- const [{ parseDate }] = useUtils();
156
-
157
159
  const { top } = useSafeAreaInsets();
158
160
 
159
161
  const [featuredBusiness, setFeaturedBusinesses] = useState(Array);
160
162
  const [isFarAway, setIsFarAway] = useState(false)
161
163
  const [businessTypes, setBusinessTypes] = useState(null)
162
- const [orderTypeValue, setOrderTypeValue] = useState(orderState?.options.value)
164
+ const [orderTypeValue, setOrderTypeValue] = useState(orderState?.options?.value)
163
165
  const [isOpenCities, setIsOpenCities] = useState(false)
164
166
  const isPreorderEnabled = (configs?.preorder_status_enabled?.value === '1' || configs?.preorder_status_enabled?.value === 'true') &&
165
167
  Number(configs?.max_days_preorder?.value) > 0
@@ -167,6 +169,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
167
169
  const timerId = useRef<any>(false)
168
170
  const [favoriteIds, setFavoriteIds] = useState<any>([])
169
171
  const chewOrderTypes = [{ name: t('DELIVERY', 'Delivery').toUpperCase(), value: 1 }, { name: t('PICKUP', 'Pickup').toUpperCase(), value: 2 }]
172
+ const enabledPoweredByOrdering = configs?.powered_by_ordering_module?.value
170
173
 
171
174
  const handleMomentClick = () => {
172
175
  if (isPreorderEnabled) {
@@ -191,6 +194,10 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
191
194
  }
192
195
  };
193
196
 
197
+ const convertToRadian = (value: number) => {
198
+ return value * Math.PI / 180
199
+ }
200
+
194
201
  const getDistance = (lat1: any, lon1: any, lat2: any, lon2: any) => {
195
202
  const R = 6371 // km
196
203
  const dLat = convertToRadian(lat2 - lat1)
@@ -218,7 +225,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
218
225
 
219
226
  useEffect(() => {
220
227
  if (!businessesList?.loading) {
221
- const fb = businessesList.businesses.filter((b) => b.featured === true && b?.open);
228
+ const fb = businessesList.businesses.filter((b) => b?.featured && b?.open);
222
229
  const ary = [];
223
230
  while (fb.length > 0) {
224
231
  ary.push(fb.splice(0, 2));
@@ -287,6 +294,12 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
287
294
  setIsOpenCities(false)
288
295
  }, [orderState?.options?.city_id])
289
296
 
297
+ useEffect(() => {
298
+ if (!citiesState?.cities?.length || !orderState?.options?.city_id) return
299
+ const selectedCity = citiesState?.cities?.find((city: any) => city?.id === orderState?.options?.city_id)
300
+ if (!selectedCity || !selectedCity?.enabled) changeCityFilter(null)
301
+ }, [citiesState, orderState?.options?.city_id])
302
+
290
303
  if (logosLayout) {
291
304
  return (
292
305
  <BusinessLogosContainer
@@ -312,10 +325,9 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
312
325
  key={business?.id}
313
326
  onPress={() => handleBusinessClick && handleBusinessClick(business)}
314
327
  style={{
315
- width: 57,
316
- height: 58,
317
- borderBottomColor: theme.colors.primary,
318
- borderBottomWidth: business?.slug === actualSlug ? 2 : 0,
328
+ width: 60,
329
+ height: 60,
330
+ borderRadius: 8,
319
331
  marginRight: 5
320
332
  }}
321
333
  >
@@ -324,8 +336,9 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
324
336
  width: 56,
325
337
  height: 56,
326
338
  marginRight: 20,
327
- borderTopLeftRadius: 7.6,
328
- borderTopRightRadius: 7.6
339
+ borderRadius: 8,
340
+ borderColor: theme.colors.primary,
341
+ borderWidth: business?.slug === actualSlug ? 2 : 0
329
342
  }}
330
343
  source={{
331
344
  uri: business?.logo,
@@ -353,6 +366,13 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
353
366
  />
354
367
  }
355
368
  >
369
+ {enabledPoweredByOrdering && auth && (
370
+ <View style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', top: 20 }}>
371
+ <OText>
372
+ Powered By Ordering.co
373
+ </OText>
374
+ </View>
375
+ )}
356
376
  <View style={{
357
377
  height: !isPreOrderSetting && isChewLayout ? 150 : isChewLayout ? 200 : isFarAway ? 150 : 100,
358
378
  marginTop: Platform.OS == 'ios' ? 0 : 50,
@@ -361,8 +381,8 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
361
381
  >
362
382
  {isChewLayout && (
363
383
  <View style={{ marginTop: 30, paddingHorizontal: 30, flexDirection: 'row', justifyContent: 'space-between' }}>
364
- <OText size={18} weight={700} color={theme.colors?.white}>
365
- {t('WELCOME', 'Welcome')} {user?.name}!
384
+ <OText size={24} weight={700} color={theme.colors?.white}>
385
+ {t('WELCOME', 'Welcome')} {user?.name}
366
386
  </OText>
367
387
  </View>
368
388
  )}
@@ -457,18 +477,30 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
457
477
  )}
458
478
  </View>
459
479
  {!isChewLayout ? (
460
- <HeaderWrapper
461
- source={bgHeader ? {uri: bgHeader} : theme.images.backgrounds.business_list_header}
462
- style={{ paddingTop: top + 20 }}
463
- resizeMode='cover'
464
- >
465
- {!auth && (
466
-
467
- <TouchableOpacity onPress={() => navigation?.canGoBack() && navigation.goBack()} style={{ position: 'absolute', marginStart: 40, paddingVertical: 20 }}>
468
- <IconAntDesign name='arrowleft' size={26} />
469
- </TouchableOpacity>
480
+ <>
481
+ {!hideHero ? (
482
+ <HeaderWrapper
483
+ source={bgHeader ? { uri: bgHeader } : theme.images.backgrounds.business_list_header}
484
+ style={{ paddingTop: top + 20 }}
485
+ resizeMode='cover'
486
+ bgHeaderHeight={bgHeaderHeight}
487
+ >
488
+ {!auth && (
489
+ <TouchableOpacity onPress={() => navigation?.canGoBack() && navigation.goBack()} style={{ position: 'absolute', marginStart: 40, paddingVertical: 20 }}>
490
+ <OIcon src={theme.images.general.arrow_left} color={theme.colors.textNormal} />
491
+ </TouchableOpacity>
492
+ )}
493
+ </HeaderWrapper>
494
+ ) : (
495
+ <>
496
+ {!auth && (
497
+ <TouchableOpacity onPress={() => navigation?.canGoBack() && navigation.goBack()} style={{ position: 'absolute', marginStart: 40, paddingVertical: 20 }}>
498
+ <OIcon src={theme.images.general.arrow_left} color={theme.colors.textNormal} />
499
+ </TouchableOpacity>
500
+ )}
501
+ </>
470
502
  )}
471
- </HeaderWrapper>
503
+ </>
472
504
  ) : (
473
505
  <OrderTypesContainer>
474
506
  <OrderTypeSelector
@@ -485,6 +517,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
485
517
  <TouchableOpacity
486
518
  style={styles.buttonCityStyle}
487
519
  onPress={() => setIsOpenCities(true)}
520
+ disabled={orderState?.loading}
488
521
  >
489
522
  <OText size={18} color={theme.colors.backgroundGray} weight='bold' style={{ textAlign: 'center' }}>
490
523
  {citiesState?.cities?.find((city: any) => city?.id === orderState?.options?.city_id)?.name || t('FILTER_BY_CITY', 'Filter by city')}
@@ -492,12 +525,12 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
492
525
  </TouchableOpacity>
493
526
  </View>
494
527
  )}
495
- <OrderProgressWrapper>
528
+ {!hidePreviousOrders && (
496
529
  <OrderProgress
497
530
  {...props}
498
531
  isFocused={isFocused}
499
532
  />
500
- </OrderProgressWrapper>
533
+ )}
501
534
  {
502
535
  !businessId && !props.franchiseId && featuredBusiness && featuredBusiness.length > 0 && (
503
536
  <FeaturedWrapper>
@@ -530,20 +563,27 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
530
563
  </FeaturedWrapper>
531
564
  )
532
565
  }
566
+ {!isChewLayout && !hideHighestBusiness && (
567
+ <>
568
+ <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100 }} />
569
+ {
570
+ !businessId && !props.franchiseId && (
571
+ <HighestRatedBusinesses
572
+ onBusinessClick={handleBusinessClick}
573
+ navigation={navigation}
574
+ favoriteIds={favoriteIds}
575
+ setFavoriteIds={setFavoriteIds}
576
+ />
577
+ )
578
+ }
579
+ </>
580
+ )}
581
+
582
+ <PageBanner position='app_business_listing' navigation={navigation} />
583
+
533
584
  <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100 }} />
534
- {
535
- !businessId && !props.franchiseId && (
536
- <HighestRatedBusinesses
537
- onBusinessClick={handleBusinessClick}
538
- navigation={navigation}
539
- favoriteIds={favoriteIds}
540
- setFavoriteIds={setFavoriteIds}
541
- />
542
- )
543
- }
544
- <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100 }} />
545
- <ListWrapper>
546
- {!businessId && (
585
+ <ListWrapper style={{ paddingHorizontal: isChewLayout ? 20 : 40 }}>
586
+ {!businessId && !isAllCategoriesHidden && (
547
587
  <BusinessTypeFilter
548
588
  images={props.images}
549
589
  businessTypes={props.businessTypes}
@@ -552,7 +592,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
552
592
  setBusinessTypes={setBusinessTypes}
553
593
  />
554
594
  )}
555
- {!businessesList.loading && businessesList.businesses.length === 0 && (
595
+ {!businessesList.loading && businessesList.businesses.length === 0 && businessesList?.fetched && (
556
596
  <NotFoundSource
557
597
  content={t(
558
598
  'NOT_FOUND_BUSINESSES',
@@ -565,6 +605,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
565
605
  <BusinessController
566
606
  key={`${business.id}_` + i}
567
607
  enableIntersection
608
+ isCustomLayout={isChewLayout}
568
609
  business={business}
569
610
  isBusinessOpen={business.open}
570
611
  handleCustomClick={handleBusinessClick}
@@ -584,7 +625,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
584
625
  />
585
626
  )
586
627
  )}
587
- {businessesList.loading && (
628
+ {(businessesList.loading || !businessesList?.fetched) && (
588
629
  <>
589
630
  {[
590
631
  ...Array(
@@ -641,25 +682,11 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
641
682
  onClose={() => setIsOpenCities(false)}
642
683
  title={t('SELECT_A_CITY', 'Select a city')}
643
684
  >
644
- <View style={{ padding: 40, width: '100%' }}>
645
- {citiesState?.cities?.map((city: any) => (
646
- <TouchableOpacity
647
- key={city?.id}
648
- style={{
649
- padding: 10,
650
- borderBottomWidth: 1,
651
- borderBottomColor: orderState?.options?.city_id === city?.id ? theme.colors.primary : theme.colors.backgroundGray,
652
- marginBottom: 10,
653
- }}
654
- onPress={() => handleChangeCity(city?.id)}
655
- disabled={orderState?.loading}
656
- >
657
- <OText color={orderState?.options?.city_id === city?.id ? theme.colors.primary : theme.colors.black}>
658
- {city?.name}
659
- </OText>
660
- </TouchableOpacity>
661
- ))}
662
- </View>
685
+ <CitiesControl
686
+ cities={citiesState?.cities}
687
+ onClose={() => setIsOpenCities(false)}
688
+ handleChangeCity={handleChangeCity}
689
+ />
663
690
  </OModal>
664
691
  </IOScrollView>
665
692
  );
@@ -60,28 +60,20 @@ export const WrapMomentOption = styled.TouchableOpacity`
60
60
 
61
61
  export const HeaderWrapper = styled.ImageBackground`
62
62
  width: 100%;
63
- height: 270px;
63
+ height: 270px;
64
64
  padding: 20px 40px;
65
65
  background-color: transparent;
66
66
  `;
67
67
 
68
68
  export const ListWrapper = styled.View`
69
69
  background-color: ${(props: any) => props.theme.colors.backgroundLight};
70
- padding-horizontal: 40px;
71
70
  `;
72
71
 
73
72
  export const FeaturedWrapper = styled.View`
74
73
  background-color: ${(props: any) => props.theme.colors.backgroundLight};
75
- height: 220px;
76
74
  paddingVertical: 30px;
77
75
  `;
78
76
 
79
- export const OrderProgressWrapper = styled.View`
80
- margin-top: 37px;
81
- margin-bottom: 20px;
82
- padding-horizontal: 40px;
83
- `
84
-
85
77
  export const FarAwayMessage = styled.View`
86
78
  flex-direction: row;
87
79
  align-items: center;
@@ -1,4 +1,3 @@
1
-
2
1
  import React, { useState, useEffect } from 'react'
3
2
  import { useOrder, useSession, useLanguage, useConfig } from 'ordering-components/native';
4
3