ordering-ui-react-native 0.14.97 → 0.14.99-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 (126) hide show
  1. package/package.json +6 -3
  2. package/src/DeliveryApp.tsx +32 -1
  3. package/src/components/BusinessTypeFilter/index.tsx +9 -2
  4. package/src/components/BusinessTypeFilter/styles.tsx +1 -1
  5. package/src/components/BusinessesListing/index.tsx +1 -1
  6. package/src/components/Checkout/index.tsx +0 -1
  7. package/src/components/Home/index.tsx +3 -5
  8. package/src/components/LanguageSelector/index.tsx +65 -97
  9. package/src/components/LanguageSelector/styles.tsx +4 -17
  10. package/src/components/Messages/index.tsx +38 -30
  11. package/src/components/MomentOption/index.tsx +3 -1
  12. package/src/components/OrderDetails/index.tsx +25 -4
  13. package/src/components/PaymentOptions/index.tsx +7 -16
  14. package/src/components/PaymentOptionsWebView/index.tsx +123 -124
  15. package/src/components/ProductForm/index.tsx +1 -1
  16. package/src/components/ProductForm/styles.tsx +1 -0
  17. package/src/components/StripeElementsForm/index.tsx +27 -48
  18. package/src/components/UserProfileForm/index.tsx +35 -1
  19. package/src/components/VerifyPhone/styles.tsx +1 -2
  20. package/src/config.json +0 -2
  21. package/src/pages/Checkout.tsx +1 -1
  22. package/src/types/index.tsx +2 -9
  23. package/src/utils/index.tsx +2 -1
  24. package/themes/business/index.tsx +2 -0
  25. package/themes/business/src/components/Chat/index.tsx +32 -31
  26. package/themes/business/src/components/OrderDetails/Business.tsx +1 -0
  27. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +85 -17
  28. package/themes/business/src/components/OrdersListManager/index.tsx +874 -0
  29. package/themes/business/src/components/OrdersListManager/styles.tsx +123 -0
  30. package/themes/business/src/components/OrdersListManager/utils.tsx +216 -0
  31. package/themes/business/src/components/OrdersOption/index.tsx +70 -116
  32. package/themes/business/src/components/OrdersOption/styles.tsx +2 -5
  33. package/themes/business/src/components/PreviousOrders/index.tsx +82 -23
  34. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  35. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  36. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  37. package/themes/kiosk/src/components/BusinessController/index.tsx +27 -6
  38. package/themes/kiosk/src/components/BusinessController/styles.tsx +1 -1
  39. package/themes/kiosk/src/components/BusinessProductsListing/index.tsx +51 -24
  40. package/themes/kiosk/src/components/Cart/index.tsx +1 -1
  41. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +1 -1
  42. package/themes/kiosk/src/components/CartBottomSheet/styles.tsx +1 -1
  43. package/themes/kiosk/src/components/CartContent/index.tsx +13 -3
  44. package/themes/kiosk/src/components/CartItem/index.tsx +20 -8
  45. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +7 -5
  46. package/themes/kiosk/src/components/CustomerName/index.tsx +89 -88
  47. package/themes/kiosk/src/components/Intro/index.tsx +13 -13
  48. package/themes/kiosk/src/components/LanguageSelector/index.tsx +12 -8
  49. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  50. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  51. package/themes/kiosk/src/components/OrderDetails/index.tsx +2 -2
  52. package/themes/kiosk/src/components/OrderSummary/index.tsx +1 -1
  53. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +10 -12
  54. package/themes/kiosk/src/components/ProductForm/index.tsx +172 -124
  55. package/themes/kiosk/src/components/ProductForm/styles.tsx +1 -1
  56. package/themes/kiosk/src/components/ProductOption/index.tsx +1 -0
  57. package/themes/kiosk/src/components/ProductOption/styles.tsx +1 -0
  58. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +48 -34
  59. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  60. package/themes/kiosk/src/components/shared/OCard.tsx +112 -78
  61. package/themes/original/index.tsx +28 -2
  62. package/themes/original/src/components/AddressForm/index.tsx +15 -10
  63. package/themes/original/src/components/AddressList/index.tsx +27 -1
  64. package/themes/original/src/components/AnalyticsSegment/index.tsx +127 -0
  65. package/themes/original/src/components/BusinessBasicInformation/index.tsx +100 -45
  66. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +28 -1
  67. package/themes/original/src/components/BusinessController/index.tsx +36 -22
  68. package/themes/original/src/components/BusinessMenuList/index.tsx +14 -5
  69. package/themes/original/src/components/BusinessPreorder/index.tsx +142 -121
  70. package/themes/original/src/components/BusinessProductsCategories/index.tsx +7 -5
  71. package/themes/original/src/components/BusinessProductsList/index.tsx +3 -3
  72. package/themes/original/src/components/BusinessProductsListing/index.tsx +21 -15
  73. package/themes/original/src/components/BusinessReviews/index.tsx +4 -3
  74. package/themes/original/src/components/BusinessTypeFilter/index.tsx +2 -13
  75. package/themes/original/src/components/BusinessesListing/index.tsx +41 -58
  76. package/themes/original/src/components/Cart/index.tsx +40 -7
  77. package/themes/original/src/components/CartContent/index.tsx +2 -2
  78. package/themes/original/src/components/Checkout/index.tsx +58 -33
  79. package/themes/original/src/components/Checkout/styles.tsx +7 -0
  80. package/themes/original/src/components/CouponControl/index.tsx +1 -0
  81. package/themes/original/src/components/DriverTips/index.tsx +1 -1
  82. package/themes/original/src/components/ForgotPasswordForm/index.tsx +8 -12
  83. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +105 -90
  84. package/themes/original/src/components/LoginForm/index.tsx +83 -68
  85. package/themes/original/src/components/Messages/index.tsx +52 -45
  86. package/themes/original/src/components/Messages/styles.tsx +1 -3
  87. package/themes/original/src/components/MomentOption/index.tsx +127 -152
  88. package/themes/original/src/components/MomentOption/styles.tsx +42 -18
  89. package/themes/original/src/components/OrderDetails/index.tsx +102 -123
  90. package/themes/original/src/components/OrderDetails/styles.tsx +3 -1
  91. package/themes/original/src/components/OrderProgress/index.tsx +6 -7
  92. package/themes/original/src/components/OrderProgress/styles.tsx +1 -0
  93. package/themes/original/src/components/OrderSummary/index.tsx +34 -1
  94. package/themes/original/src/components/OrdersOption/index.tsx +15 -46
  95. package/themes/original/src/components/OrdersOption/styles.tsx +0 -6
  96. package/themes/original/src/components/PaymentOptionWallet/index.tsx +6 -2
  97. package/themes/original/src/components/PaymentOptions/index.tsx +24 -25
  98. package/themes/original/src/components/PhoneInputNumber/index.tsx +15 -8
  99. package/themes/original/src/components/PlaceSpot/index.tsx +114 -0
  100. package/themes/original/src/components/PlaceSpot/styles.tsx +11 -0
  101. package/themes/original/src/components/PreviousOrders/index.tsx +19 -13
  102. package/themes/original/src/components/ProductForm/index.tsx +153 -104
  103. package/themes/original/src/components/ProductForm/styles.tsx +5 -3
  104. package/themes/original/src/components/ProductOptionSubOption/index.tsx +6 -1
  105. package/themes/original/src/components/ReviewOrder/index.tsx +10 -9
  106. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  107. package/themes/original/src/components/SearchBar/index.tsx +4 -10
  108. package/themes/original/src/components/SignupForm/index.tsx +173 -154
  109. package/themes/original/src/components/SingleProductCard/index.tsx +7 -22
  110. package/themes/original/src/components/StripeElementsForm/index.tsx +55 -72
  111. package/themes/original/src/components/UpsellingProducts/index.tsx +6 -6
  112. package/themes/original/src/components/UserDetails/index.tsx +4 -95
  113. package/themes/original/src/components/UserFormDetails/index.tsx +2 -14
  114. package/themes/original/src/components/UserProfile/index.tsx +16 -11
  115. package/themes/original/src/components/UserProfileForm/index.tsx +16 -8
  116. package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
  117. package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
  118. package/themes/original/src/components/shared/HeaderTitle.tsx +21 -0
  119. package/themes/original/src/components/shared/OInput.tsx +1 -2
  120. package/themes/original/src/components/shared/index.tsx +2 -0
  121. package/themes/original/src/types/index.tsx +25 -28
  122. package/themes/single-business/src/components/OrderTypeSelector/index.tsx +5 -5
  123. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  124. package/src/components/StripeMethodForm/index.tsx +0 -163
  125. package/themes/original/src/components/BusinessListingSearch/index.tsx +0 -469
  126. package/themes/original/src/components/BusinessListingSearch/styles.tsx +0 -76
@@ -5,8 +5,6 @@ import { useTheme } from 'styled-components/native';
5
5
  import { OIcon, OText, OModal } from '../shared';
6
6
  import { BusinessBasicInformationParams } from '../../types';
7
7
  import { convertHoursToMinutes } from '../../utils';
8
- import { BusinessInformation } from '../BusinessInformation';
9
- import { BusinessReviews } from '../BusinessReviews';
10
8
  import dayjs from 'dayjs';
11
9
  import timezone from 'dayjs/plugin/timezone';
12
10
  import isBetween from 'dayjs/plugin/isBetween';
@@ -22,14 +20,19 @@ import {
22
20
  BusinessInfoItem,
23
21
  WrapReviews,
24
22
  WrapBusinessInfo,
23
+ TitleWrapper,
24
+ RibbonBox
25
25
  } from './styles';
26
26
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
27
27
  const types = ['food', 'laundry', 'alcohol', 'groceries'];
28
28
 
29
+ let BusinessInformation: null | React.ElementType = null
30
+ let BusinessReviews: null | React.ElementType = null
31
+
29
32
  export const BusinessBasicInformation = (
30
33
  props: BusinessBasicInformationParams,
31
34
  ) => {
32
- const { navigation, businessState, isBusinessInfoShow, logo, header } = props;
35
+ const { navigation, businessState, isBusinessInfoShow, logo, header, isPreOrder } = props;
33
36
  const { business, loading } = businessState;
34
37
 
35
38
  const theme = useTheme();
@@ -38,6 +41,25 @@ export const BusinessBasicInformation = (
38
41
  const [{ parsePrice, parseDistance, optimizeImage }] = useUtils();
39
42
  const [openBusinessInformation, setOpenBusinessInformation] = useState(false);
40
43
  const [openBusinessReviews, setOpenBusinessReviews] = useState(false);
44
+ const [businessInformationObtained, setBusinessInformationObtained] = useState(false)
45
+ const [businessReviewsObtained, setBusinessReviewsObtainedbtained] = useState(false)
46
+
47
+ const handleClickBusinessInformation = () => {
48
+ if (!businessInformationObtained) {
49
+ BusinessInformation = require('../BusinessInformation').BusinessInformation
50
+ setBusinessInformationObtained(true)
51
+ }
52
+ setOpenBusinessInformation(true)
53
+ }
54
+
55
+ const handleClickBusinessReviews = () => {
56
+ if (!businessReviewsObtained) {
57
+ BusinessReviews = require('../BusinessReviews').BusinessReviews
58
+ setBusinessReviewsObtainedbtained(true)
59
+ }
60
+ setOpenBusinessReviews(true)
61
+ }
62
+
41
63
  const getBusinessType = () => {
42
64
  if (Object.keys(business).length <= 0) return t('GENERAL', 'General');
43
65
  const _types: any = [];
@@ -51,7 +73,7 @@ export const BusinessBasicInformation = (
51
73
  return _types.join(', ');
52
74
  };
53
75
 
54
-
76
+
55
77
  useEffect(() => {
56
78
  if (businessState?.loading) return
57
79
  let timeout: any = null
@@ -65,16 +87,16 @@ export const BusinessBasicInformation = (
65
87
  })
66
88
  }
67
89
  if (lapse) {
68
- const to = currentDate.hour(lapse.close.hour).minute(lapse.close.minute)
69
- const timeToClose = (to.unix() - currentDate.unix()) * 1000
70
- timeout = setTimeout(() => {
71
- navigation.navigate('BusinessPreorder', { business: businessState?.business, handleBusinessClick: () => navigation?.goBack() })
72
- }, timeToClose)
90
+ const to = currentDate.hour(lapse.close.hour).minute(lapse.close.minute)
91
+ const timeToClose = (to.unix() - currentDate.unix()) * 1000
92
+ timeout = setTimeout(() => {
93
+ navigation.navigate('BusinessPreorder', { business: businessState?.business, handleBusinessClick: () => navigation?.goBack() })
94
+ }, timeToClose)
73
95
  }
74
96
  return () => {
75
- timeout && clearTimeout(timeout)
97
+ timeout && clearTimeout(timeout)
76
98
  }
77
- }, [businessState?.business])
99
+ }, [businessState?.business])
78
100
 
79
101
  return (
80
102
  <BusinessContainer>
@@ -90,7 +112,7 @@ export const BusinessBasicInformation = (
90
112
  optimizeImage(businessState?.business?.header, 'h_250,c_limit'),
91
113
  }}>
92
114
  {!isBusinessInfoShow && (
93
- <WrapBusinessInfo onPress={() => setOpenBusinessInformation(true)}>
115
+ <WrapBusinessInfo onPress={() => handleClickBusinessInformation()}>
94
116
  <OIcon src={theme.images.general.info} width={24} />
95
117
  </WrapBusinessInfo>
96
118
  )}
@@ -121,9 +143,29 @@ export const BusinessBasicInformation = (
121
143
  <PlaceholderLine height={30} width={20} />
122
144
  </Placeholder>
123
145
  ) : (
124
- <OText size={24} weight={'600'}>
125
- {business?.name}
126
- </OText>
146
+ <TitleWrapper>
147
+ <OText size={24} weight={'600'}>
148
+ {business?.name}
149
+ </OText>
150
+ {business?.ribbon?.enabled && (
151
+ <RibbonBox
152
+ bgColor={business?.ribbon?.color}
153
+ isRoundRect={business?.ribbon?.shape === shape?.rectangleRound}
154
+ isCapsule={business?.ribbon?.shape === shape?.capsuleShape}
155
+ >
156
+ <OText
157
+ size={10}
158
+ weight={'400'}
159
+ color={theme.colors.white}
160
+ numberOfLines={2}
161
+ ellipsizeMode='tail'
162
+ lineHeight={13}
163
+ >
164
+ {business?.ribbon?.text}
165
+ </OText>
166
+ </RibbonBox>
167
+ )}
168
+ </TitleWrapper>
127
169
  )}
128
170
  </BusinessInfoItem>
129
171
  {loading ? (
@@ -181,13 +223,17 @@ export const BusinessBasicInformation = (
181
223
  <WrapReviews>
182
224
  {!isBusinessInfoShow && (
183
225
  <>
184
- <TouchableOpacity onPress={() => navigation.navigate('BusinessPreorder', { business: businessState?.business, handleBusinessClick: () => navigation?.goBack() })}>
185
- <OText color={theme.colors.textSecondary} style={{ textDecorationLine: 'underline' }}>
186
- {t('PRE_ORDER', 'Preorder')}
187
- </OText>
188
- </TouchableOpacity>
189
- <OText size={12} color={theme.colors.textSecondary}>{' \u2022 '}</OText>
190
- <TouchableOpacity onPress={() => setOpenBusinessReviews(true)}>
226
+ {isPreOrder && (
227
+ <>
228
+ <TouchableOpacity onPress={() => navigation.navigate('BusinessPreorder', { business: businessState?.business, handleBusinessClick: () => navigation?.goBack() })}>
229
+ <OText color={theme.colors.textSecondary} style={{ textDecorationLine: 'underline' }}>
230
+ {t('PRE_ORDER', 'Preorder')}
231
+ </OText>
232
+ </TouchableOpacity>
233
+ <OText size={12} color={theme.colors.textSecondary}>{' \u2022 '}</OText>
234
+ </>
235
+ )}
236
+ <TouchableOpacity onPress={() => handleClickBusinessReviews()}>
191
237
  <OText color={theme.colors.textSecondary} style={{ textDecorationLine: 'underline' }}>
192
238
  {t('REVIEWS', 'Reviews')}
193
239
  </OText>
@@ -196,28 +242,37 @@ export const BusinessBasicInformation = (
196
242
  )}
197
243
  </WrapReviews>
198
244
  </BusinessInfo>
199
- <OModal
200
- titleSectionStyle={styles.modalTitleSectionStyle}
201
- open={openBusinessInformation}
202
- onClose={() => setOpenBusinessInformation(false)}
203
- isNotDecoration>
204
- <BusinessInformation
205
- businessState={businessState}
206
- business={business}
207
- />
208
- </OModal>
209
- <OModal
210
- entireModal
211
- titleSectionStyle={styles.modalTitleSectionStyle}
212
- open={openBusinessReviews}
213
- onClose={() => setOpenBusinessReviews(false)}
214
- isNotDecoration>
215
- <BusinessReviews
216
- businessState={businessState}
217
- businessId={business.id}
218
- reviews={business.reviews?.reviews}
219
- />
220
- </OModal>
245
+ {businessInformationObtained ? (
246
+ <OModal
247
+ titleSectionStyle={styles.modalTitleSectionStyle}
248
+ open={openBusinessInformation}
249
+ onClose={() => setOpenBusinessInformation(false)}
250
+ isNotDecoration>
251
+ {BusinessInformation && (
252
+ <BusinessInformation
253
+ businessState={businessState}
254
+ business={business}
255
+ />
256
+ )}
257
+ </OModal>
258
+ ) : null}
259
+ {businessReviewsObtained ? (
260
+ <OModal
261
+ entireModal
262
+ titleSectionStyle={styles.modalTitleSectionStyle}
263
+ open={openBusinessReviews}
264
+ onClose={() => setOpenBusinessReviews(false)}
265
+ isNotDecoration
266
+ >
267
+ {BusinessReviews && (
268
+ <BusinessReviews
269
+ businessState={businessState}
270
+ businessId={business.id}
271
+ reviews={business.reviews?.reviews}
272
+ />
273
+ )}
274
+ </OModal>
275
+ ) : null}
221
276
  </BusinessContainer>
222
277
  );
223
278
  };
@@ -262,4 +317,4 @@ const styles = StyleSheet.create({
262
317
  zIndex: 100,
263
318
  left: 40
264
319
  },
265
- });
320
+ });
@@ -1,4 +1,4 @@
1
- import styled from 'styled-components/native';
1
+ import styled, { css } from 'styled-components/native';
2
2
  import { Platform } from 'react-native';
3
3
 
4
4
  export const BusinessContainer = styled.View`
@@ -41,3 +41,30 @@ export const WrapBusinessInfo = styled.TouchableOpacity`
41
41
  top: 16px;
42
42
  end: 39px;
43
43
  `;
44
+
45
+ export const TitleWrapper = styled.View`
46
+ width: 100%;
47
+ flex-direction: row;
48
+ align-items: center;
49
+ justify-content: space-between;
50
+ `
51
+
52
+ export const RibbonBox = styled.View`
53
+ margin-left: 5px;
54
+ background-color: ${(props: any) => props.theme.colors.primary};
55
+ padding: 2px 8px;
56
+ max-width: 180px;
57
+ align-self: flex-start;
58
+
59
+ ${(props: any) => props.bgColor && css`
60
+ background-color: ${props.bgColor};
61
+ `}
62
+
63
+ ${(props: any) => props.isRoundRect && css`
64
+ border-radius: 7.6px;
65
+ `}
66
+
67
+ ${(props: any) => props.isCapsule && css`
68
+ border-radius: 50px;
69
+ `}
70
+ `
@@ -4,6 +4,7 @@ import {
4
4
  useUtils,
5
5
  useOrder,
6
6
  useLanguage,
7
+ useConfig
7
8
  } from 'ordering-components/native';
8
9
  import { OIcon, OText } from '../shared';
9
10
  import { StyleSheet, View } from 'react-native';
@@ -25,17 +26,28 @@ import FontAwesomeIcon from 'react-native-vector-icons/FontAwesome5';
25
26
  import FastImage from 'react-native-fast-image'
26
27
 
27
28
  export const BusinessControllerUI = (props: BusinessControllerParams) => {
28
- const {
29
- business,
30
- handleClick,
31
- navigation,
32
- isBusinessOpen,
33
- style
29
+ const {
30
+ business,
31
+ handleClick,
32
+ navigation,
33
+ isBusinessOpen,
34
+ style,
35
+ businessHeader,
36
+ businessFeatured,
37
+ businessLogo,
38
+ businessReviews,
39
+ businessDeliveryPrice,
40
+ businessDeliveryTime,
41
+ businessPickupTime,
42
+ businessDistance
34
43
  } = props;
35
44
  const [{ parsePrice, parseDistance, parseNumber, optimizeImage }] = useUtils();
36
45
  const [orderState] = useOrder();
46
+ const [configState] = useConfig();
37
47
  const [, t] = useLanguage();
38
48
  const theme = useTheme()
49
+ const [{ configs }] = useConfig();
50
+ const isPreOrderSetting = configs?.preorder_status_enabled?.value === '1'
39
51
 
40
52
  const styles = StyleSheet.create({
41
53
  headerStyle: {
@@ -104,30 +116,30 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
104
116
  };
105
117
 
106
118
  const handleBusinessClick = (selectedBusiness: any) => {
107
- if (business?.open) handleClick && handleClick(selectedBusiness)
119
+ if (business?.open || !isPreOrderSetting) handleClick && handleClick(selectedBusiness)
108
120
  else {
109
121
  navigation.navigate('BusinessPreorder', { business: selectedBusiness, handleBusinessClick: handleClick })
110
122
  }
111
123
  }
112
124
 
113
125
  return (
114
- <Card activeOpacity={1} onPress={() => handleBusinessClick(business)} style={style}>
126
+ <Card activeOpacity={1} onPress={() => handleBusinessClick(business)}>
115
127
  <BusinessHero>
116
128
  <FastImage
117
129
  style={{ height: 120 }}
118
130
  source={{
119
- uri: optimizeImage(business?.header, 'h_120,c_limit'),
120
- priority: FastImage.priority.normal,
131
+ uri: optimizeImage(businessHeader || business?.header, 'h_500,c_limit'),
132
+ priority: FastImage.priority.normal,
121
133
  }}
122
134
  resizeMode={FastImage.resizeMode.cover}
123
135
  />
124
- {business?.featured && (
136
+ {(businessFeatured ?? business?.featured) && (
125
137
  <View style={styles.featured}>
126
138
  <FontAwesomeIcon name="crown" size={26} color="gold" />
127
139
  </View>
128
140
  )}
129
141
  <BusinessState>
130
- {!isBusinessOpen && (
142
+ {!isBusinessOpen && (configState?.configs?.preorder_status_enabled?.value === '1') && (
131
143
  <View style={styles.businessStateView}>
132
144
  <OText
133
145
  color={theme.colors.textThird}
@@ -145,17 +157,17 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
145
157
  <FastImage
146
158
  style={{ width: 56, height: 56 }}
147
159
  source={{
148
- uri: optimizeImage(business?.logo, 'h_60,c_limit'),
149
- priority: FastImage.priority.normal,
160
+ uri: optimizeImage(businessLogo || business?.logo, 'h_150,c_limit'),
161
+ priority: FastImage.priority.normal,
150
162
  }}
151
163
  resizeMode={FastImage.resizeMode.cover}
152
164
  />
153
165
  </BusinessLogo>
154
- {business?.reviews?.total > 0 && (
166
+ {(businessReviews?.reviews?.total > 0 ?? business?.reviews?.total > 0) && (
155
167
  <Reviews>
156
168
  <OIcon src={theme.images.general.star} width={12} style={styles.starIcon} />
157
169
  <OText size={10} style={{ lineHeight: 15 }}>
158
- {parseNumber(business?.reviews?.total, { separator: '.' })}
170
+ {parseNumber(businessReviews?.reviews?.total ?? business?.reviews?.total, { separator: '.' })}
159
171
  </OText>
160
172
  </Reviews>
161
173
  )}
@@ -181,15 +193,17 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
181
193
  </View>
182
194
  ) : (
183
195
  <View style={styles.bullet}>
184
- <OText size={10} color={theme.colors.textSecondary}>
185
- {`${t('DELIVERY_FEE', 'Delivery fee')} ${parsePrice(business?.delivery_price) + ' \u2022 '}`}
186
- </OText>
196
+ {orderState?.options?.type === 1 && (
197
+ <OText size={10} color={theme.colors.textSecondary}>
198
+ {`${t('DELIVERY_FEE', 'Delivery fee')} ${parsePrice(businessDeliveryPrice ?? business?.delivery_price) + ' \u2022 '}`}
199
+ </OText>
200
+ )}
187
201
  <OText size={10} color={theme.colors.textSecondary}>{`${convertHoursToMinutes(
188
202
  orderState?.options?.type === 1
189
- ? business?.delivery_time
190
- : business?.pickup_time,
203
+ ? (businessDeliveryTime ?? business?.delivery_time)
204
+ : (businessPickupTime ?? business?.pickup_time),
191
205
  )} \u2022 `}</OText>
192
- <OText size={10} color={theme.colors.textSecondary}>{parseDistance(business?.distance)}</OText>
206
+ <OText size={10} color={theme.colors.textSecondary}>{parseDistance(businessDistance ?? business?.distance)}</OText>
193
207
  </View>
194
208
  )}
195
209
  </Metadata>
@@ -1,4 +1,4 @@
1
- import React from 'react'
1
+ import React, { useEffect } from 'react'
2
2
  import { useLanguage, BusinessMenuListing } from 'ordering-components/native'
3
3
  import { OText } from '../shared'
4
4
  import { BusinessMenuListParams } from '../../types'
@@ -7,6 +7,7 @@ import { useTheme } from 'styled-components/native'
7
7
  import IconAntDesign from 'react-native-vector-icons/AntDesign'
8
8
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder'
9
9
  import SelectDropdown from 'react-native-select-dropdown'
10
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
10
11
 
11
12
  const windowHeight = Dimensions.get('window').height;
12
13
 
@@ -18,6 +19,7 @@ const BusinessMenuListUI = (props: BusinessMenuListParams) => {
18
19
 
19
20
  const [, t] = useLanguage()
20
21
  const theme = useTheme()
22
+ const { top } = useSafeAreaInsets()
21
23
 
22
24
  const styles = StyleSheet.create({
23
25
  container: {
@@ -34,7 +36,7 @@ const BusinessMenuListUI = (props: BusinessMenuListParams) => {
34
36
  height: 44,
35
37
  width: '100%'
36
38
  }
37
- })
39
+ })
38
40
 
39
41
  const dropDownIcon = () => {
40
42
  return (
@@ -46,12 +48,18 @@ const BusinessMenuListUI = (props: BusinessMenuListParams) => {
46
48
  )
47
49
  }
48
50
 
51
+ useEffect(() => {
52
+ if (!businessMenuList?.loading && businessMenuList?.menus?.length === 1){
53
+ setMenu(businessMenuList?.menus[0])
54
+ }
55
+ }, [businessMenuList?.menus])
56
+
49
57
  return (
50
58
  <>
51
59
  {businessMenuList.loading ? (
52
60
  <Placeholder Animation={Fade}>
53
61
  <View>
54
- <PlaceholderLine height={44}/>
62
+ <PlaceholderLine height={44} />
55
63
  </View>
56
64
  </Placeholder>
57
65
  ) : (
@@ -65,6 +73,7 @@ const BusinessMenuListUI = (props: BusinessMenuListParams) => {
65
73
  onSelect={(selectedItem, index) => {
66
74
  setMenu(selectedItem)
67
75
  }}
76
+ defaultValue={businessMenuList?.menus?.length === 1 && businessMenuList?.menus[0]}
68
77
  buttonTextAfterSelection={(selectedItem, index) => {
69
78
  return selectedItem.name
70
79
  }}
@@ -81,7 +90,7 @@ const BusinessMenuListUI = (props: BusinessMenuListParams) => {
81
90
  dropdownStyle={{
82
91
  borderRadius: 8,
83
92
  borderColor: theme.colors.lightGray,
84
- marginTop: Platform.OS === 'ios' ? 12 : -15,
93
+ marginTop: Platform.OS === 'ios' ? 12 : -top,
85
94
  maxHeight: 160
86
95
  }}
87
96
  rowStyle={{
@@ -123,4 +132,4 @@ export const BusinessMenuList = (props: any) => {
123
132
  };
124
133
 
125
134
  return <BusinessMenuListing {...businessMenuListProps} />;
126
- };
135
+ };