ordering-ui-react-native 0.16.90 → 0.16.91-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 (216) 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 -2
  19. package/themes/business/src/components/Chat/index.tsx +31 -31
  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/MessagesOption/index.tsx +11 -1
  28. package/themes/business/src/components/NewOrderNotification/index.tsx +31 -41
  29. package/themes/business/src/components/OrderDetails/Delivery.tsx +4 -3
  30. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +96 -50
  31. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +59 -62
  32. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
  33. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  34. package/themes/business/src/components/OrderMessage/index.tsx +18 -17
  35. package/themes/business/src/components/OrdersOption/index.tsx +79 -87
  36. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  37. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  38. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  39. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  40. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  41. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  42. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  43. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  44. package/themes/business/src/components/PreviousMessages/index.tsx +17 -18
  45. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +250 -0
  46. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  47. package/themes/business/src/components/PreviousOrders/index.tsx +447 -247
  48. package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
  49. package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
  50. package/themes/business/src/components/ReviewCustomer/index.tsx +54 -27
  51. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  52. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  53. package/themes/business/src/components/shared/OLink.tsx +33 -13
  54. package/themes/business/src/components/shared/OModal.tsx +16 -9
  55. package/themes/business/src/components/shared/OText.tsx +8 -2
  56. package/themes/business/src/types/index.tsx +35 -3
  57. package/themes/business/src/utils/index.tsx +53 -0
  58. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  59. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  60. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  61. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -1
  62. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  63. package/themes/kiosk/src/components/LoginForm/Otp/index.tsx +92 -0
  64. package/themes/kiosk/src/components/LoginForm/Otp/styles.tsx +7 -0
  65. package/themes/kiosk/src/components/LoginForm/index.tsx +473 -151
  66. package/themes/kiosk/src/components/LoginForm/styles.tsx +14 -1
  67. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  68. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  69. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  70. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +1 -0
  71. package/themes/kiosk/src/components/PhoneInputNumber/styles.tsx +1 -3
  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/components/shared/OModal.tsx +14 -11
  75. package/themes/kiosk/src/layouts/Container.tsx +7 -1
  76. package/themes/kiosk/src/types/index.d.ts +13 -0
  77. package/themes/kiosk/src/utils/index.tsx +15 -0
  78. package/themes/original/index.tsx +8 -0
  79. package/themes/original/src/components/AddressDetails/index.tsx +10 -8
  80. package/themes/original/src/components/AddressForm/index.tsx +155 -139
  81. package/themes/original/src/components/AddressList/index.tsx +27 -22
  82. package/themes/original/src/components/AddressList/styles.tsx +4 -2
  83. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  84. package/themes/original/src/components/BusinessBasicInformation/index.tsx +118 -76
  85. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +1 -4
  86. package/themes/original/src/components/BusinessController/index.tsx +100 -47
  87. package/themes/original/src/components/BusinessController/styles.tsx +14 -9
  88. package/themes/original/src/components/BusinessInformation/index.tsx +10 -31
  89. package/themes/original/src/components/BusinessItemAccordion/index.tsx +9 -3
  90. package/themes/original/src/components/BusinessListingSearch/index.tsx +86 -33
  91. package/themes/original/src/components/BusinessListingSearch/styles.tsx +6 -0
  92. package/themes/original/src/components/BusinessPreorder/index.tsx +96 -15
  93. package/themes/original/src/components/BusinessProductsList/index.tsx +10 -8
  94. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  95. package/themes/original/src/components/BusinessProductsListing/index.tsx +566 -490
  96. package/themes/original/src/components/BusinessProductsListing/styles.tsx +6 -12
  97. package/themes/original/src/components/BusinessTypeFilter/index.tsx +3 -2
  98. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  99. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +115 -82
  100. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -9
  101. package/themes/original/src/components/BusinessesListing/index.tsx +6 -6
  102. package/themes/original/src/components/Cart/index.tsx +87 -42
  103. package/themes/original/src/components/CartContent/index.tsx +77 -15
  104. package/themes/original/src/components/CartContent/styles.tsx +11 -1
  105. package/themes/original/src/components/Checkout/index.tsx +281 -174
  106. package/themes/original/src/components/Checkout/styles.tsx +4 -2
  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 +52 -37
  110. package/themes/original/src/components/DriverTips/styles.tsx +2 -1
  111. package/themes/original/src/components/Favorite/index.tsx +7 -4
  112. package/themes/original/src/components/Favorite/styles.tsx +1 -1
  113. package/themes/original/src/components/FavoriteList/index.tsx +70 -80
  114. package/themes/original/src/components/FloatingButton/index.tsx +1 -2
  115. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  116. package/themes/original/src/components/GPSButton/index.tsx +20 -19
  117. package/themes/original/src/components/GPSButton/styles.ts +3 -3
  118. package/themes/original/src/components/GoogleMap/index.tsx +10 -1
  119. package/themes/original/src/components/Help/index.tsx +8 -8
  120. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +11 -22
  121. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +6 -0
  122. package/themes/original/src/components/HelpGuide/index.tsx +12 -16
  123. package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
  124. package/themes/original/src/components/HelpOrder/index.tsx +12 -25
  125. package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
  126. package/themes/original/src/components/LanguageSelector/index.tsx +19 -14
  127. package/themes/original/src/components/LastOrder/index.tsx +1 -34
  128. package/themes/original/src/components/LoginForm/Otp/index.tsx +89 -73
  129. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  130. package/themes/original/src/components/LoginForm/index.tsx +43 -19
  131. package/themes/original/src/components/LottieAnimation/index.tsx +78 -0
  132. package/themes/original/src/components/MessageListing/index.tsx +16 -42
  133. package/themes/original/src/components/Messages/index.tsx +31 -10
  134. package/themes/original/src/components/MomentOption/index.tsx +195 -88
  135. package/themes/original/src/components/MultiCart/index.tsx +50 -0
  136. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +92 -93
  137. package/themes/original/src/components/MultiCheckout/index.tsx +204 -79
  138. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
  139. package/themes/original/src/components/MultiOrdersDetails/index.tsx +67 -20
  140. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
  141. package/themes/original/src/components/MyOrders/index.tsx +66 -17
  142. package/themes/original/src/components/NavBar/index.tsx +6 -11
  143. package/themes/original/src/components/NetworkError/index.tsx +5 -3
  144. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  145. package/themes/original/src/components/Notifications/index.tsx +144 -0
  146. package/themes/original/src/components/Notifications/styles.tsx +20 -0
  147. package/themes/original/src/components/OrderDetails/OrderEta.tsx +59 -0
  148. package/themes/original/src/components/OrderDetails/index.tsx +110 -221
  149. package/themes/original/src/components/OrderDetails/styles.tsx +10 -1
  150. package/themes/original/src/components/OrderItAgain/index.tsx +44 -42
  151. package/themes/original/src/components/OrderProgress/index.tsx +74 -112
  152. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  153. package/themes/original/src/components/OrderSummary/index.tsx +52 -17
  154. package/themes/original/src/components/OrderTypeSelector/index.tsx +9 -3
  155. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +29 -20
  156. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +3 -0
  157. package/themes/original/src/components/OrdersOption/index.tsx +76 -83
  158. package/themes/original/src/components/PageBanner/index.tsx +146 -0
  159. package/themes/original/src/components/PageBanner/styles.tsx +11 -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 +2 -2
  163. package/themes/original/src/components/PhoneInputNumber/index.tsx +1 -1
  164. package/themes/original/src/components/PlaceSpot/index.tsx +12 -6
  165. package/themes/original/src/components/PreviousOrders/index.tsx +3 -2
  166. package/themes/original/src/components/ProductForm/index.tsx +240 -256
  167. package/themes/original/src/components/ProductForm/styles.tsx +5 -8
  168. package/themes/original/src/components/ProductItemAccordion/index.tsx +199 -128
  169. package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -10
  170. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +1 -2
  171. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  172. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -49
  173. package/themes/original/src/components/ProfessionalProfile/index.tsx +54 -14
  174. package/themes/original/src/components/Promotions/index.tsx +234 -220
  175. package/themes/original/src/components/Promotions/styles.tsx +7 -2
  176. package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
  177. package/themes/original/src/components/ReviewOrder/index.tsx +43 -11
  178. package/themes/original/src/components/ReviewOrder/styles.tsx +7 -0
  179. package/themes/original/src/components/ReviewProducts/index.tsx +8 -5
  180. package/themes/original/src/components/ReviewTrigger/index.tsx +27 -9
  181. package/themes/original/src/components/ReviewTrigger/styles.tsx +8 -1
  182. package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
  183. package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
  184. package/themes/original/src/components/ServiceForm/index.tsx +377 -270
  185. package/themes/original/src/components/Sessions/index.tsx +11 -8
  186. package/themes/original/src/components/Sessions/styles.tsx +5 -0
  187. package/themes/original/src/components/SignupForm/index.tsx +79 -66
  188. package/themes/original/src/components/SingleOrderCard/index.tsx +126 -57
  189. package/themes/original/src/components/SingleOrderCard/styles.tsx +10 -8
  190. package/themes/original/src/components/SingleProductCard/index.tsx +104 -45
  191. package/themes/original/src/components/SingleProductCard/styles.tsx +14 -13
  192. package/themes/original/src/components/SingleProductReview/index.tsx +38 -5
  193. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  194. package/themes/original/src/components/StripeCardsList/index.tsx +1 -1
  195. package/themes/original/src/components/StripeElementsForm/index.tsx +4 -1
  196. package/themes/original/src/components/UpsellingProducts/index.tsx +237 -218
  197. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  198. package/themes/original/src/components/UserDetails/index.tsx +8 -4
  199. package/themes/original/src/components/UserFormDetails/index.tsx +53 -54
  200. package/themes/original/src/components/UserProfile/index.tsx +58 -35
  201. package/themes/original/src/components/UserProfile/styles.ts +17 -0
  202. package/themes/original/src/components/UserProfileForm/index.tsx +21 -28
  203. package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
  204. package/themes/original/src/components/Wallets/index.tsx +20 -21
  205. package/themes/original/src/components/Wallets/styles.tsx +2 -0
  206. package/themes/original/src/components/shared/CardAnimation.tsx +47 -0
  207. package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
  208. package/themes/original/src/components/shared/OBottomPopup.tsx +1 -1
  209. package/themes/original/src/components/shared/OButton.tsx +6 -2
  210. package/themes/original/src/components/shared/OIcon.tsx +8 -1
  211. package/themes/original/src/components/shared/OInput.tsx +10 -1
  212. package/themes/original/src/components/shared/OModal.tsx +3 -3
  213. package/themes/original/src/layouts/Container.tsx +13 -9
  214. package/themes/original/src/types/index.tsx +37 -5
  215. package/themes/original/src/utils/index.tsx +321 -58
  216. 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
  `
@@ -14,7 +11,6 @@ export const TopHeader = styled.View`
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,16 +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 }]
167
-
168
- // const panResponder = useRef(
169
- // PanResponder.create({
170
- // onMoveShouldSetPanResponder: (e, gestureState) => {
171
- // const { dx, dy } = gestureState;
172
- // resetInactivityTimeout()
173
- // return (Math.abs(dx) > 20) || (Math.abs(dy) > 20);
174
- // },
175
- // })
176
- // ).current
171
+ const enabledPoweredByOrdering = configs?.powered_by_ordering_module?.value
177
172
 
178
173
  const handleMomentClick = () => {
179
174
  if (isPreorderEnabled) {
@@ -193,11 +188,15 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
193
188
  paginationProps.totalPages === paginationProps.currentPage
194
189
  );
195
190
 
196
- if (y + PIXELS_TO_SCROLL > height && !businessesList.loading && hasMore) {
191
+ if (y + PIXELS_TO_SCROLL > height && !businessesList.loading && hasMore && businessesList?.businesses?.length > 0) {
197
192
  getBusinesses();
198
193
  }
199
194
  };
200
195
 
196
+ const convertToRadian = (value: number) => {
197
+ return value * Math.PI / 180
198
+ }
199
+
201
200
  const getDistance = (lat1: any, lon1: any, lat2: any, lon2: any) => {
202
201
  const R = 6371 // km
203
202
  const dLat = convertToRadian(lat2 - lat1)
@@ -296,7 +295,10 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
296
295
 
297
296
  if (logosLayout) {
298
297
  return (
299
- <BusinessLogosContainer horizontal>
298
+ <BusinessLogosContainer
299
+ horizontal
300
+ showsHorizontalScrollIndicator={false}
301
+ >
300
302
  {businessesList?.loading ? (
301
303
  <Placeholder Animation={Fade}>
302
304
  <View style={{ flexDirection: 'row' }}>
@@ -310,14 +312,27 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
310
312
  ) : (
311
313
  <>
312
314
  {businessesList.businesses
313
- ?.filter(business => business?.slug !== actualSlug && business?.open)
315
+ ?.filter(business => business?.open)
314
316
  ?.map(business => (
315
317
  <TouchableOpacity
316
318
  key={business?.id}
317
319
  onPress={() => handleBusinessClick && handleBusinessClick(business)}
320
+ style={{
321
+ width: 60,
322
+ height: 60,
323
+ borderRadius: 8,
324
+ marginRight: 5
325
+ }}
318
326
  >
319
327
  <FastImage
320
- style={{ width: 56, height: 56, marginRight: 20, borderRadius: 7.6 }}
328
+ style={{
329
+ width: 56,
330
+ height: 56,
331
+ marginRight: 20,
332
+ borderRadius: 8,
333
+ borderColor: theme.colors.primary,
334
+ borderWidth: business?.slug === actualSlug ? 2 : 0
335
+ }}
321
336
  source={{
322
337
  uri: business?.logo,
323
338
  priority: FastImage.priority.normal,
@@ -333,7 +348,10 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
333
348
  }
334
349
 
335
350
  return (
336
- <IOScrollView style={styles.container} onScroll={(e) => handleScroll(e)} showsVerticalScrollIndicator={false}
351
+ <IOScrollView
352
+ style={styles.container}
353
+ onScroll={(e) => handleScroll(e)}
354
+ showsVerticalScrollIndicator={false}
337
355
  refreshControl={
338
356
  <RefreshControl
339
357
  refreshing={refreshing}
@@ -341,6 +359,13 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
341
359
  />
342
360
  }
343
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
+ )}
344
369
  <View style={{
345
370
  height: !isPreOrderSetting && isChewLayout ? 150 : isChewLayout ? 200 : isFarAway ? 150 : 100,
346
371
  marginTop: Platform.OS == 'ios' ? 0 : 50,
@@ -349,8 +374,8 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
349
374
  >
350
375
  {isChewLayout && (
351
376
  <View style={{ marginTop: 30, paddingHorizontal: 30, flexDirection: 'row', justifyContent: 'space-between' }}>
352
- <OText size={18} weight={700} color={theme.colors?.white}>
353
- {t('WELCOME', 'Welcome')} {user?.name}!
377
+ <OText size={24} weight={700} color={theme.colors?.white}>
378
+ {t('WELCOME', 'Welcome')} {user?.name}
354
379
  </OText>
355
380
  </View>
356
381
  )}
@@ -445,33 +470,47 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
445
470
  )}
446
471
  </View>
447
472
  {!isChewLayout ? (
448
- <HeaderWrapper
449
- source={theme.images.backgrounds.business_list_header}
450
- style={{ paddingTop: top + 20 }}
451
- resizeMode='cover'
452
- >
453
- {!auth && (
454
-
455
- <TouchableOpacity onPress={() => navigation?.canGoBack() && navigation.goBack()} style={{ position: 'absolute', marginStart: 40, paddingVertical: 20 }}>
456
- <IconAntDesign name='arrowleft' size={26} />
457
- </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
+ </>
458
495
  )}
459
- </HeaderWrapper>
496
+ </>
460
497
  ) : (
461
498
  <OrderTypesContainer>
462
499
  <OrderTypeSelector
463
500
  handleChangeBusinessType={handleChangeBusinessType}
464
501
  isChewLayout
465
502
  chewOrderTypes={chewOrderTypes}
503
+ handleChangeType={setOrderTypeValue}
466
504
  />
467
505
  </OrderTypesContainer>
468
506
  )}
469
507
 
470
- {!hideCities && (
508
+ {!hideCities && orderTypeValue === 2 && (
471
509
  <View style={{ marginTop: 20 }}>
472
510
  <TouchableOpacity
473
511
  style={styles.buttonCityStyle}
474
512
  onPress={() => setIsOpenCities(true)}
513
+ disabled={orderState?.loading}
475
514
  >
476
515
  <OText size={18} color={theme.colors.backgroundGray} weight='bold' style={{ textAlign: 'center' }}>
477
516
  {citiesState?.cities?.find((city: any) => city?.id === orderState?.options?.city_id)?.name || t('FILTER_BY_CITY', 'Filter by city')}
@@ -479,12 +518,12 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
479
518
  </TouchableOpacity>
480
519
  </View>
481
520
  )}
482
- <OrderProgressWrapper>
521
+ {!hidePreviousOrders && (
483
522
  <OrderProgress
484
523
  {...props}
485
524
  isFocused={isFocused}
486
525
  />
487
- </OrderProgressWrapper>
526
+ )}
488
527
  {
489
528
  !businessId && !props.franchiseId && featuredBusiness && featuredBusiness.length > 0 && (
490
529
  <FeaturedWrapper>
@@ -517,20 +556,27 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
517
556
  </FeaturedWrapper>
518
557
  )
519
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
+
520
577
  <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100 }} />
521
- {
522
- !businessId && !props.franchiseId && (
523
- <HighestRatedBusinesses
524
- onBusinessClick={handleBusinessClick}
525
- navigation={navigation}
526
- favoriteIds={favoriteIds}
527
- setFavoriteIds={setFavoriteIds}
528
- />
529
- )
530
- }
531
- <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100 }} />
532
- <ListWrapper>
533
- {!businessId && (
578
+ <ListWrapper style={{ paddingHorizontal: isChewLayout ? 20 : 40 }}>
579
+ {!businessId && !isAllCategoriesHidden && (
534
580
  <BusinessTypeFilter
535
581
  images={props.images}
536
582
  businessTypes={props.businessTypes}
@@ -552,6 +598,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
552
598
  <BusinessController
553
599
  key={`${business.id}_` + i}
554
600
  enableIntersection
601
+ isCustomLayout={isChewLayout}
555
602
  business={business}
556
603
  isBusinessOpen={business.open}
557
604
  handleCustomClick={handleBusinessClick}
@@ -628,25 +675,11 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
628
675
  onClose={() => setIsOpenCities(false)}
629
676
  title={t('SELECT_A_CITY', 'Select a city')}
630
677
  >
631
- <View style={{ padding: 40, width: '100%' }}>
632
- {citiesState?.cities?.map((city: any) => (
633
- <TouchableOpacity
634
- key={city?.id}
635
- style={{
636
- padding: 10,
637
- borderBottomWidth: 1,
638
- borderBottomColor: orderState?.options?.city_id === city?.id ? theme.colors.primary : theme.colors.backgroundGray,
639
- marginBottom: 10,
640
- }}
641
- onPress={() => handleChangeCity(city?.id)}
642
- disabled={orderState?.loading}
643
- >
644
- <OText color={orderState?.options?.city_id === city?.id ? theme.colors.primary : theme.colors.black}>
645
- {city?.name}
646
- </OText>
647
- </TouchableOpacity>
648
- ))}
649
- </View>
678
+ <CitiesControl
679
+ cities={citiesState?.cities}
680
+ onClose={() => setIsOpenCities(false)}
681
+ handleChangeCity={handleChangeCity}
682
+ />
650
683
  </OModal>
651
684
  </IOScrollView>
652
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