ordering-ui-react-native 0.16.92 → 0.16.93-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 +5 -5
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/ActiveOrders/styles.tsx +8 -14
  4. package/src/components/BusinessInformation/index.tsx +19 -4
  5. package/src/components/BusinessInformation/styles.tsx +2 -2
  6. package/src/components/BusinessProductsList/index.tsx +1 -1
  7. package/src/components/BusinessesListing/index.tsx +1 -1
  8. package/src/components/OrderCreating/index.tsx +1 -21
  9. package/src/components/OrdersOption/index.tsx +54 -56
  10. package/src/components/PaymentOptionsWebView/index.tsx +119 -120
  11. package/src/components/SingleProductReview/index.tsx +7 -4
  12. package/src/components/VerifyPhone/styles.tsx +1 -2
  13. package/src/components/shared/OToast.tsx +4 -4
  14. package/src/utils/index.tsx +2 -1
  15. package/themes/business/index.tsx +2 -0
  16. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +265 -240
  17. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
  18. package/themes/business/src/components/BusinessController/index.tsx +2 -3
  19. package/themes/business/src/components/Chat/index.tsx +30 -30
  20. package/themes/business/src/components/DriverMap/index.tsx +22 -9
  21. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  22. package/themes/business/src/components/LoginForm/Otp/index.tsx +120 -0
  23. package/themes/business/src/components/LoginForm/Otp/styles.tsx +7 -0
  24. package/themes/business/src/components/LoginForm/index.tsx +239 -80
  25. package/themes/business/src/components/LoginForm/styles.tsx +10 -0
  26. package/themes/business/src/components/MapView/index.tsx +18 -7
  27. package/themes/business/src/components/NewOrderNotification/index.tsx +31 -41
  28. package/themes/business/src/components/OrderDetails/Delivery.tsx +4 -3
  29. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +96 -50
  30. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +59 -62
  31. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
  32. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  33. package/themes/business/src/components/OrderMessage/index.tsx +18 -17
  34. package/themes/business/src/components/OrdersOption/index.tsx +33 -75
  35. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +1 -1
  36. package/themes/business/src/components/PreviousMessages/index.tsx +16 -18
  37. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +250 -0
  38. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  39. package/themes/business/src/components/PreviousOrders/index.tsx +447 -247
  40. package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
  41. package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
  42. package/themes/business/src/components/ReviewCustomer/index.tsx +42 -25
  43. package/themes/business/src/components/StoresList/index.tsx +2 -2
  44. package/themes/business/src/components/shared/OLink.tsx +33 -13
  45. package/themes/business/src/components/shared/OModal.tsx +16 -9
  46. package/themes/business/src/components/shared/OText.tsx +8 -2
  47. package/themes/business/src/types/index.tsx +33 -2
  48. package/themes/business/src/utils/index.tsx +53 -0
  49. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  50. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  51. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  52. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -1
  53. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  54. package/themes/kiosk/src/components/LoginForm/Otp/index.tsx +92 -0
  55. package/themes/kiosk/src/components/LoginForm/Otp/styles.tsx +7 -0
  56. package/themes/kiosk/src/components/LoginForm/index.tsx +473 -151
  57. package/themes/kiosk/src/components/LoginForm/styles.tsx +14 -1
  58. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  59. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  60. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  61. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +1 -0
  62. package/themes/kiosk/src/components/PhoneInputNumber/styles.tsx +1 -3
  63. package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
  64. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  65. package/themes/kiosk/src/components/shared/OModal.tsx +14 -11
  66. package/themes/kiosk/src/layouts/Container.tsx +7 -1
  67. package/themes/kiosk/src/types/index.d.ts +13 -0
  68. package/themes/kiosk/src/utils/index.tsx +15 -0
  69. package/themes/original/index.tsx +8 -0
  70. package/themes/original/src/components/AddressDetails/index.tsx +10 -8
  71. package/themes/original/src/components/AddressForm/index.tsx +143 -115
  72. package/themes/original/src/components/AddressList/index.tsx +26 -21
  73. package/themes/original/src/components/AddressList/styles.tsx +4 -2
  74. package/themes/original/src/components/AnalyticsSegment/index.tsx +164 -8
  75. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  76. package/themes/original/src/components/BusinessBasicInformation/index.tsx +121 -80
  77. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +1 -4
  78. package/themes/original/src/components/BusinessController/index.tsx +100 -47
  79. package/themes/original/src/components/BusinessController/styles.tsx +14 -9
  80. package/themes/original/src/components/BusinessInformation/index.tsx +10 -31
  81. package/themes/original/src/components/BusinessItemAccordion/index.tsx +23 -5
  82. package/themes/original/src/components/BusinessListingSearch/index.tsx +52 -24
  83. package/themes/original/src/components/BusinessPreorder/index.tsx +96 -15
  84. package/themes/original/src/components/BusinessProductsList/index.tsx +16 -9
  85. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  86. package/themes/original/src/components/BusinessProductsListing/index.tsx +606 -490
  87. package/themes/original/src/components/BusinessProductsListing/styles.tsx +7 -13
  88. package/themes/original/src/components/BusinessTypeFilter/index.tsx +3 -2
  89. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  90. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +96 -73
  91. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -9
  92. package/themes/original/src/components/BusinessesListing/index.tsx +6 -6
  93. package/themes/original/src/components/Cart/index.tsx +93 -43
  94. package/themes/original/src/components/CartContent/index.tsx +77 -15
  95. package/themes/original/src/components/CartContent/styles.tsx +11 -1
  96. package/themes/original/src/components/Checkout/index.tsx +294 -175
  97. package/themes/original/src/components/Checkout/styles.tsx +4 -2
  98. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  99. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  100. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  101. package/themes/original/src/components/DriverTips/index.tsx +52 -37
  102. package/themes/original/src/components/DriverTips/styles.tsx +2 -1
  103. package/themes/original/src/components/Favorite/index.tsx +7 -4
  104. package/themes/original/src/components/Favorite/styles.tsx +1 -1
  105. package/themes/original/src/components/FavoriteList/index.tsx +70 -80
  106. package/themes/original/src/components/FloatingButton/index.tsx +1 -2
  107. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  108. package/themes/original/src/components/GPSButton/styles.ts +3 -3
  109. package/themes/original/src/components/GoogleMap/index.tsx +10 -1
  110. package/themes/original/src/components/Help/index.tsx +8 -8
  111. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +11 -22
  112. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +6 -0
  113. package/themes/original/src/components/HelpGuide/index.tsx +12 -16
  114. package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
  115. package/themes/original/src/components/HelpOrder/index.tsx +12 -25
  116. package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
  117. package/themes/original/src/components/Home/index.tsx +13 -4
  118. package/themes/original/src/components/LanguageSelector/index.tsx +19 -14
  119. package/themes/original/src/components/LastOrder/index.tsx +1 -34
  120. package/themes/original/src/components/LoginForm/Otp/index.tsx +89 -73
  121. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  122. package/themes/original/src/components/LoginForm/index.tsx +43 -19
  123. package/themes/original/src/components/LottieAnimation/index.tsx +78 -0
  124. package/themes/original/src/components/MessageListing/index.tsx +16 -42
  125. package/themes/original/src/components/Messages/index.tsx +31 -10
  126. package/themes/original/src/components/MomentOption/index.tsx +195 -88
  127. package/themes/original/src/components/MultiCart/index.tsx +50 -0
  128. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +92 -93
  129. package/themes/original/src/components/MultiCheckout/index.tsx +210 -79
  130. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
  131. package/themes/original/src/components/MultiOrdersDetails/index.tsx +67 -20
  132. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
  133. package/themes/original/src/components/MyOrders/index.tsx +66 -17
  134. package/themes/original/src/components/NavBar/index.tsx +6 -11
  135. package/themes/original/src/components/NetworkError/index.tsx +5 -3
  136. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  137. package/themes/original/src/components/Notifications/index.tsx +144 -0
  138. package/themes/original/src/components/Notifications/styles.tsx +20 -0
  139. package/themes/original/src/components/OrderDetails/OrderEta.tsx +59 -0
  140. package/themes/original/src/components/OrderDetails/index.tsx +110 -221
  141. package/themes/original/src/components/OrderDetails/styles.tsx +10 -1
  142. package/themes/original/src/components/OrderItAgain/index.tsx +47 -43
  143. package/themes/original/src/components/OrderProgress/index.tsx +74 -112
  144. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  145. package/themes/original/src/components/OrderSummary/index.tsx +52 -17
  146. package/themes/original/src/components/OrderTypeSelector/index.tsx +4 -3
  147. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +28 -19
  148. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +3 -0
  149. package/themes/original/src/components/OrdersOption/index.tsx +76 -83
  150. package/themes/original/src/components/PageBanner/index.tsx +171 -0
  151. package/themes/original/src/components/PageBanner/styles.tsx +11 -0
  152. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  153. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  154. package/themes/original/src/components/PaymentOptions/index.tsx +2 -2
  155. package/themes/original/src/components/PhoneInputNumber/index.tsx +1 -1
  156. package/themes/original/src/components/PlaceSpot/index.tsx +12 -6
  157. package/themes/original/src/components/PreviousOrders/index.tsx +3 -2
  158. package/themes/original/src/components/ProductForm/index.tsx +247 -269
  159. package/themes/original/src/components/ProductForm/styles.tsx +4 -7
  160. package/themes/original/src/components/ProductItemAccordion/index.tsx +199 -128
  161. package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -10
  162. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +1 -2
  163. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  164. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -49
  165. package/themes/original/src/components/ProfessionalProfile/index.tsx +54 -14
  166. package/themes/original/src/components/Promotions/index.tsx +234 -220
  167. package/themes/original/src/components/Promotions/styles.tsx +7 -2
  168. package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
  169. package/themes/original/src/components/ReviewOrder/index.tsx +43 -11
  170. package/themes/original/src/components/ReviewOrder/styles.tsx +7 -0
  171. package/themes/original/src/components/ReviewProducts/index.tsx +8 -5
  172. package/themes/original/src/components/ReviewTrigger/index.tsx +27 -9
  173. package/themes/original/src/components/ReviewTrigger/styles.tsx +8 -1
  174. package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
  175. package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
  176. package/themes/original/src/components/ServiceForm/index.tsx +377 -270
  177. package/themes/original/src/components/Sessions/index.tsx +11 -8
  178. package/themes/original/src/components/Sessions/styles.tsx +5 -0
  179. package/themes/original/src/components/SignupForm/index.tsx +79 -66
  180. package/themes/original/src/components/SingleOrderCard/index.tsx +126 -57
  181. package/themes/original/src/components/SingleOrderCard/styles.tsx +10 -8
  182. package/themes/original/src/components/SingleProductCard/index.tsx +106 -46
  183. package/themes/original/src/components/SingleProductCard/styles.tsx +19 -13
  184. package/themes/original/src/components/SingleProductReview/index.tsx +38 -5
  185. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  186. package/themes/original/src/components/StripeCardsList/index.tsx +1 -1
  187. package/themes/original/src/components/StripeElementsForm/index.tsx +4 -1
  188. package/themes/original/src/components/UpsellingProducts/index.tsx +238 -218
  189. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  190. package/themes/original/src/components/UserDetails/index.tsx +8 -4
  191. package/themes/original/src/components/UserFormDetails/index.tsx +53 -54
  192. package/themes/original/src/components/UserProfile/index.tsx +58 -35
  193. package/themes/original/src/components/UserProfile/styles.ts +17 -0
  194. package/themes/original/src/components/UserProfileForm/index.tsx +21 -28
  195. package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
  196. package/themes/original/src/components/Wallets/index.tsx +20 -21
  197. package/themes/original/src/components/Wallets/styles.tsx +2 -0
  198. package/themes/original/src/components/shared/CardAnimation.tsx +47 -0
  199. package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
  200. package/themes/original/src/components/shared/OBottomPopup.tsx +1 -1
  201. package/themes/original/src/components/shared/OButton.tsx +6 -2
  202. package/themes/original/src/components/shared/OIcon.tsx +8 -1
  203. package/themes/original/src/components/shared/OInput.tsx +10 -1
  204. package/themes/original/src/components/shared/OModal.tsx +3 -3
  205. package/themes/original/src/layouts/Container.tsx +13 -9
  206. package/themes/original/src/types/index.tsx +45 -7
  207. package/themes/original/src/utils/index.tsx +321 -58
  208. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -1,8 +1,5 @@
1
1
  import styled, { css } from 'styled-components/native'
2
2
 
3
- export const ContainerSafeAreaView = styled.SafeAreaView`
4
- `
5
-
6
3
  export const WrapHeader = styled.View`
7
4
  position: relative;
8
5
  `
@@ -10,11 +7,10 @@ export const TopHeader = styled.View`
10
7
  width: 100%;
11
8
  flex-direction: row;
12
9
  align-items: center;
13
- justify-content: space-between;
10
+ justify-content: ${({ hideArrow }: any) => hideArrow ? 'flex-end' : 'space-between'};
14
11
  z-index: 1;
15
12
  height: 60px;
16
13
  min-height: 60px;
17
- margin-top: ${(props : any) => props.isIos ? '0' : '40px'};
18
14
  `
19
15
  export const AddressInput = styled.TouchableOpacity`
20
16
  flex: 1;
@@ -28,7 +24,7 @@ export const WrapSearchBar = styled.View`
28
24
  flex: 1;
29
25
  `
30
26
  export const WrapContent = styled.View`
31
- padding: 10px 40px;
27
+ padding-vertical: 10px;
32
28
  `
33
29
 
34
30
  export const BusinessProductsListingContainer = styled.ScrollView`
@@ -41,18 +37,16 @@ export const BusinessProductsListingContainer = styled.ScrollView`
41
37
  export const FiltProductsContainer = styled.ScrollView`
42
38
  position: absolute;
43
39
  width: 100%;
44
- z-index: 2000;
45
- top: ${(props : any) => props.isIos ? '40px': '80px'};
46
- margin-top: 20px;
40
+ z-index: 20000;
47
41
  `
48
42
 
49
43
  export const BackgroundGray = styled.View`
50
44
  flex: 1;
51
- height: 100%;
45
+ height: ${(props: any) => props.isIos ? '80%' : '100%'};
52
46
  background-color: rgba(0,0,0,0.5);
53
- position: absolute;
54
- margin-top: 100px;
55
- z-index: 100;
47
+ position: absolute;
48
+ margin-top: 100px;
49
+ z-index: 10000;
56
50
  width: 100%;
57
51
  `
58
52
 
@@ -38,6 +38,7 @@ export const BusinessTypeFilterUI = (props: BusinessTypeFilterParams) => {
38
38
 
39
39
  const theme = useTheme();
40
40
  const [isOpenAllCategories, setIsOpenAllCategories] = useState(false)
41
+ const defaultImage = (name : string) => theme.images?.categories?.[name.toLowerCase().replace(' ', '')]
41
42
 
42
43
  useEffect(() => {
43
44
  if(typesState?.types?.length > 0){
@@ -197,9 +198,9 @@ export const BusinessTypeFilterUI = (props: BusinessTypeFilterParams) => {
197
198
  isOpenAllCategories && setIsOpenAllCategories(false)
198
199
  }}
199
200
  >
200
- {item.image ? (
201
+ {(defaultImage(item.name) || item.image) ? (
201
202
  <OIcon
202
- url={item.image}
203
+ url={typeof item.name === 'number' ? item.image || defaultImage(item.name) : defaultImage(item.name) || item.image}
203
204
  style={styles.logo}
204
205
  />
205
206
  ) : (
@@ -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>
@@ -31,7 +31,6 @@ import {
31
31
  HeaderWrapper,
32
32
  ListWrapper,
33
33
  FeaturedWrapper,
34
- OrderProgressWrapper,
35
34
  FarAwayMessage,
36
35
  AddressInputContainer,
37
36
  PreorderInput,
@@ -39,8 +38,7 @@ import {
39
38
  BusinessLogosContainer
40
39
  } from './styles';
41
40
 
42
- import { SearchBar } from '../../../SearchBar';
43
- import { OButton, OIcon, OText, OBottomPopup, OModal } from '../../../shared';
41
+ import { OIcon, OText, OModal } from '../../../shared';
44
42
  import { BusinessesListingParams } from '../../../../types';
45
43
  import { NotFoundSource } from '../../../NotFoundSource';
46
44
  import { BusinessTypeFilter } from '../../../BusinessTypeFilter';
@@ -49,11 +47,13 @@ import { OrderTypeSelector } from '../../../OrderTypeSelector';
49
47
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
50
48
  import { BusinessFeaturedController } from '../../../BusinessFeaturedController';
51
49
  import { HighestRatedBusinesses } from '../../../HighestRatedBusinesses';
52
- import { getTypesText, convertToRadian } from '../../../../utils';
50
+ import { getTypesText } from '../../../../utils';
53
51
  import { OrderProgress } from '../../../OrderProgress';
54
52
  import { useFocusEffect, useIsFocused } from '@react-navigation/native';
55
53
  import FastImage from 'react-native-fast-image';
56
54
  import IconAntDesign from 'react-native-vector-icons/AntDesign';
55
+ import { PageBanner } from '../../../PageBanner'
56
+ import { CitiesControl } from '../../../CitiesControl'
57
57
 
58
58
  const PIXELS_TO_SCROLL = 2000;
59
59
 
@@ -61,12 +61,10 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
61
61
  const {
62
62
  navigation,
63
63
  businessesList,
64
- searchValue,
65
64
  getBusinesses,
66
65
  handleChangeBusinessType,
67
66
  handleBusinessClick,
68
67
  paginationProps,
69
- handleChangeSearch,
70
68
  businessId,
71
69
  isGuestUser,
72
70
  handleUpdateBusinessList,
@@ -76,12 +74,24 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
76
74
  } = props;
77
75
  const theme = useTheme();
78
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
+
79
84
  const appState = useRef(AppState.currentState)
80
- const searchBarRef = useRef<any>()
81
- const [appStateVisible, setAppStateVisible] = useState(appState.current);
82
- const isChewLayout = theme?.header?.components?.layout?.type === 'original'
83
- const hideCities = theme?.business_listing_view?.components?.cities?.hidden ?? true
85
+ const isChewLayout = theme?.header?.components?.layout?.type?.toLowerCase() === 'chew'
84
86
  const [refreshing] = useState(false);
87
+ const hideCities = (theme?.business_listing_view?.components?.cities?.hidden || orderState?.options?.type !== 2) ?? true
88
+ const hideHero = theme?.business_listing_view?.components?.business_hero?.hidden
89
+ const hidePreviousOrders = theme?.business_listing_view?.components?.previous_orders_block?.hidden
90
+ const hideHighestBusiness = theme?.business_listing_view?.components?.highest_rated_business_block?.hidden
91
+ const isAllCategoriesHidden = theme?.business_listing_view?.components?.categories?.hidden
92
+ const bgHeader = theme?.business_listing_view?.components?.business_hero?.components?.image
93
+ const bgHeaderHeight = theme?.business_listing_view?.components?.business_hero?.components?.style?.height
94
+
85
95
  const styles = StyleSheet.create({
86
96
  container: {
87
97
  marginBottom: 0,
@@ -134,7 +144,8 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
134
144
  minHeight: 45,
135
145
  paddingVertical: 5,
136
146
  paddingHorizontal: 20,
137
- borderWidth: 1
147
+ borderWidth: 1,
148
+ justifyContent: 'center'
138
149
  },
139
150
  businessSkeleton: {
140
151
  borderRadius: 8,
@@ -144,19 +155,12 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
144
155
  },
145
156
  });
146
157
 
147
-
148
- const [, t] = useLanguage();
149
- const [{ user, auth }] = useSession();
150
- const [orderState, { changeCityFilter }] = useOrder();
151
- const [{ configs }] = useConfig();
152
- const [{ parseDate }] = useUtils();
153
-
154
158
  const { top } = useSafeAreaInsets();
155
159
 
156
160
  const [featuredBusiness, setFeaturedBusinesses] = useState(Array);
157
161
  const [isFarAway, setIsFarAway] = useState(false)
158
162
  const [businessTypes, setBusinessTypes] = useState(null)
159
- const [orderTypeValue, setOrderTypeValue] = useState(orderState?.options.value)
163
+ const [orderTypeValue, setOrderTypeValue] = useState(orderState?.options?.value)
160
164
  const [isOpenCities, setIsOpenCities] = useState(false)
161
165
  const isPreorderEnabled = (configs?.preorder_status_enabled?.value === '1' || configs?.preorder_status_enabled?.value === 'true') &&
162
166
  Number(configs?.max_days_preorder?.value) > 0
@@ -164,6 +168,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
164
168
  const timerId = useRef<any>(false)
165
169
  const [favoriteIds, setFavoriteIds] = useState<any>([])
166
170
  const chewOrderTypes = [{ name: t('DELIVERY', 'Delivery').toUpperCase(), value: 1 }, { name: t('PICKUP', 'Pickup').toUpperCase(), value: 2 }]
171
+ const enabledPoweredByOrdering = configs?.powered_by_ordering_module?.value
167
172
 
168
173
  const handleMomentClick = () => {
169
174
  if (isPreorderEnabled) {
@@ -183,11 +188,15 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
183
188
  paginationProps.totalPages === paginationProps.currentPage
184
189
  );
185
190
 
186
- if (y + PIXELS_TO_SCROLL > height && !businessesList.loading && hasMore) {
191
+ if (y + PIXELS_TO_SCROLL > height && !businessesList.loading && hasMore && businessesList?.businesses?.length > 0) {
187
192
  getBusinesses();
188
193
  }
189
194
  };
190
195
 
196
+ const convertToRadian = (value: number) => {
197
+ return value * Math.PI / 180
198
+ }
199
+
191
200
  const getDistance = (lat1: any, lon1: any, lat2: any, lon2: any) => {
192
201
  const R = 6371 // km
193
202
  const dLat = convertToRadian(lat2 - lat1)
@@ -309,10 +318,9 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
309
318
  key={business?.id}
310
319
  onPress={() => handleBusinessClick && handleBusinessClick(business)}
311
320
  style={{
312
- width: 57,
313
- height: 58,
314
- borderBottomColor: theme.colors.primary,
315
- borderBottomWidth: business?.slug === actualSlug ? 2 : 0,
321
+ width: 60,
322
+ height: 60,
323
+ borderRadius: 8,
316
324
  marginRight: 5
317
325
  }}
318
326
  >
@@ -321,8 +329,9 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
321
329
  width: 56,
322
330
  height: 56,
323
331
  marginRight: 20,
324
- borderTopLeftRadius: 7.6,
325
- borderTopRightRadius: 7.6
332
+ borderRadius: 8,
333
+ borderColor: theme.colors.primary,
334
+ borderWidth: business?.slug === actualSlug ? 2 : 0
326
335
  }}
327
336
  source={{
328
337
  uri: business?.logo,
@@ -350,6 +359,13 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
350
359
  />
351
360
  }
352
361
  >
362
+ {enabledPoweredByOrdering && auth && (
363
+ <View style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', top: 20 }}>
364
+ <OText>
365
+ Powered By Ordering.co
366
+ </OText>
367
+ </View>
368
+ )}
353
369
  <View style={{
354
370
  height: !isPreOrderSetting && isChewLayout ? 150 : isChewLayout ? 200 : isFarAway ? 150 : 100,
355
371
  marginTop: Platform.OS == 'ios' ? 0 : 50,
@@ -358,8 +374,8 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
358
374
  >
359
375
  {isChewLayout && (
360
376
  <View style={{ marginTop: 30, paddingHorizontal: 30, flexDirection: 'row', justifyContent: 'space-between' }}>
361
- <OText size={18} weight={700} color={theme.colors?.white}>
362
- {t('WELCOME', 'Welcome')} {user?.name}!
377
+ <OText size={24} weight={700} color={theme.colors?.white}>
378
+ {t('WELCOME', 'Welcome')} {user?.name}
363
379
  </OText>
364
380
  </View>
365
381
  )}
@@ -454,18 +470,30 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
454
470
  )}
455
471
  </View>
456
472
  {!isChewLayout ? (
457
- <HeaderWrapper
458
- source={theme.images.backgrounds.business_list_header}
459
- style={{ paddingTop: top + 20 }}
460
- resizeMode='cover'
461
- >
462
- {!auth && (
463
-
464
- <TouchableOpacity onPress={() => navigation?.canGoBack() && navigation.goBack()} style={{ position: 'absolute', marginStart: 40, paddingVertical: 20 }}>
465
- <IconAntDesign name='arrowleft' size={26} />
466
- </TouchableOpacity>
473
+ <>
474
+ {!hideHero ? (
475
+ <HeaderWrapper
476
+ source={bgHeader ? { uri: bgHeader } : theme.images.backgrounds.business_list_header}
477
+ style={{ paddingTop: top + 20 }}
478
+ resizeMode='cover'
479
+ bgHeaderHeight={bgHeaderHeight}
480
+ >
481
+ {!auth && (
482
+ <TouchableOpacity onPress={() => navigation?.canGoBack() && navigation.goBack()} style={{ position: 'absolute', marginStart: 40, paddingVertical: 20 }}>
483
+ <OIcon src={theme.images.general.arrow_left} color={theme.colors.textNormal} />
484
+ </TouchableOpacity>
485
+ )}
486
+ </HeaderWrapper>
487
+ ) : (
488
+ <>
489
+ {!auth && (
490
+ <TouchableOpacity onPress={() => navigation?.canGoBack() && navigation.goBack()} style={{ position: 'absolute', marginStart: 40, paddingVertical: 20 }}>
491
+ <OIcon src={theme.images.general.arrow_left} color={theme.colors.textNormal} />
492
+ </TouchableOpacity>
493
+ )}
494
+ </>
467
495
  )}
468
- </HeaderWrapper>
496
+ </>
469
497
  ) : (
470
498
  <OrderTypesContainer>
471
499
  <OrderTypeSelector
@@ -482,6 +510,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
482
510
  <TouchableOpacity
483
511
  style={styles.buttonCityStyle}
484
512
  onPress={() => setIsOpenCities(true)}
513
+ disabled={orderState?.loading}
485
514
  >
486
515
  <OText size={18} color={theme.colors.backgroundGray} weight='bold' style={{ textAlign: 'center' }}>
487
516
  {citiesState?.cities?.find((city: any) => city?.id === orderState?.options?.city_id)?.name || t('FILTER_BY_CITY', 'Filter by city')}
@@ -489,12 +518,12 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
489
518
  </TouchableOpacity>
490
519
  </View>
491
520
  )}
492
- <OrderProgressWrapper>
521
+ {!hidePreviousOrders && (
493
522
  <OrderProgress
494
523
  {...props}
495
524
  isFocused={isFocused}
496
525
  />
497
- </OrderProgressWrapper>
526
+ )}
498
527
  {
499
528
  !businessId && !props.franchiseId && featuredBusiness && featuredBusiness.length > 0 && (
500
529
  <FeaturedWrapper>
@@ -527,20 +556,27 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
527
556
  </FeaturedWrapper>
528
557
  )
529
558
  }
559
+ {!isChewLayout && !hideHighestBusiness && (
560
+ <>
561
+ <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100 }} />
562
+ {
563
+ !businessId && !props.franchiseId && (
564
+ <HighestRatedBusinesses
565
+ onBusinessClick={handleBusinessClick}
566
+ navigation={navigation}
567
+ favoriteIds={favoriteIds}
568
+ setFavoriteIds={setFavoriteIds}
569
+ />
570
+ )
571
+ }
572
+ </>
573
+ )}
574
+
575
+ <PageBanner position='app_business_listing' navigation={navigation} />
576
+
530
577
  <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100 }} />
531
- {
532
- !businessId && !props.franchiseId && (
533
- <HighestRatedBusinesses
534
- onBusinessClick={handleBusinessClick}
535
- navigation={navigation}
536
- favoriteIds={favoriteIds}
537
- setFavoriteIds={setFavoriteIds}
538
- />
539
- )
540
- }
541
- <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100 }} />
542
- <ListWrapper>
543
- {!businessId && (
578
+ <ListWrapper style={{ paddingHorizontal: isChewLayout ? 20 : 40 }}>
579
+ {!businessId && !isAllCategoriesHidden && (
544
580
  <BusinessTypeFilter
545
581
  images={props.images}
546
582
  businessTypes={props.businessTypes}
@@ -562,6 +598,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
562
598
  <BusinessController
563
599
  key={`${business.id}_` + i}
564
600
  enableIntersection
601
+ isCustomLayout={isChewLayout}
565
602
  business={business}
566
603
  isBusinessOpen={business.open}
567
604
  handleCustomClick={handleBusinessClick}
@@ -638,25 +675,11 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
638
675
  onClose={() => setIsOpenCities(false)}
639
676
  title={t('SELECT_A_CITY', 'Select a city')}
640
677
  >
641
- <View style={{ padding: 40, width: '100%' }}>
642
- {citiesState?.cities?.map((city: any) => (
643
- <TouchableOpacity
644
- key={city?.id}
645
- style={{
646
- padding: 10,
647
- borderBottomWidth: 1,
648
- borderBottomColor: orderState?.options?.city_id === city?.id ? theme.colors.primary : theme.colors.backgroundGray,
649
- marginBottom: 10,
650
- }}
651
- onPress={() => handleChangeCity(city?.id)}
652
- disabled={orderState?.loading}
653
- >
654
- <OText color={orderState?.options?.city_id === city?.id ? theme.colors.primary : theme.colors.black}>
655
- {city?.name}
656
- </OText>
657
- </TouchableOpacity>
658
- ))}
659
- </View>
678
+ <CitiesControl
679
+ cities={citiesState?.cities}
680
+ onClose={() => setIsOpenCities(false)}
681
+ handleChangeCity={handleChangeCity}
682
+ />
660
683
  </OModal>
661
684
  </IOScrollView>
662
685
  );
@@ -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,6 +1,5 @@
1
-
2
1
  import React, { useState, useEffect } from 'react'
3
- import { useOrder, useSession, useLanguage } from 'ordering-components/native';
2
+ import { useOrder, useSession, useLanguage, useConfig } from 'ordering-components/native';
4
3
 
5
4
  import { useTheme } from 'styled-components/native'
6
5
  import { BusinessesListing as OriginalBusinessListing } from './Layout/Original'
@@ -16,6 +15,8 @@ export const BusinessesListing = (props: any) => {
16
15
  const [, t] = useLanguage();
17
16
  const [{ auth }] = useSession()
18
17
  const [, { getLastOrderHasNoReview }] = useOrder();
18
+ const [{ configs }] = useConfig()
19
+ const isShowReviewsPopupEnabled = configs?.show_reviews_popups_enabled?.value === '1'
19
20
 
20
21
  const [, setIsReviewed] = useState()
21
22
  const [checkNotificationStatus, setCheckNotificationStatus] = useState({ open: false, checked: false })
@@ -73,16 +74,15 @@ export const BusinessesListing = (props: any) => {
73
74
  )
74
75
  }
75
76
 
76
-
77
-
78
77
  useEffect(() => {
78
+ if (!isShowReviewsPopupEnabled) return
79
79
  (checkNotificationStatus?.checked && auth) && _getLastOrderHasNoReview()
80
- }, [checkNotificationStatus, auth])
80
+ }, [checkNotificationStatus, auth, isShowReviewsPopupEnabled])
81
81
 
82
82
  return (
83
83
  <>
84
84
  {((layout === 'original') || logosLayout) && <OriginalBusinessListing {...props} />}
85
- {(layout === 'appointment') && !logosLayout && <AppointmentBusinessListing {...props} />}
85
+ {(layout === 'appointments') && !logosLayout && <AppointmentBusinessListing {...props} />}
86
86
 
87
87
  {lastOrderReview?.isReviewOpen && (
88
88
  <OBottomPopup