ordering-ui-react-native 0.14.93 → 0.14.95-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 (120) 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/Cart/index.tsx +1 -1
  7. package/src/components/Checkout/index.tsx +0 -1
  8. package/src/components/Home/index.tsx +3 -5
  9. package/src/components/LanguageSelector/index.tsx +65 -97
  10. package/src/components/LanguageSelector/styles.tsx +4 -17
  11. package/src/components/Messages/index.tsx +38 -30
  12. package/src/components/MomentOption/index.tsx +3 -1
  13. package/src/components/OrderDetails/index.tsx +26 -5
  14. package/src/components/PaymentOptions/index.tsx +7 -16
  15. package/src/components/PaymentOptionsWebView/index.tsx +123 -124
  16. package/src/components/ProductForm/index.tsx +1 -1
  17. package/src/components/ProductForm/styles.tsx +1 -0
  18. package/src/components/StripeElementsForm/index.tsx +27 -48
  19. package/src/components/UserProfileForm/index.tsx +35 -1
  20. package/src/components/VerifyPhone/styles.tsx +1 -2
  21. package/src/config.json +0 -2
  22. package/src/pages/Checkout.tsx +1 -1
  23. package/src/types/index.tsx +2 -9
  24. package/src/utils/index.tsx +2 -1
  25. package/themes/business/index.tsx +2 -0
  26. package/themes/business/src/components/Chat/index.tsx +32 -31
  27. package/themes/business/src/components/OrderDetails/Business.tsx +1 -0
  28. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +85 -17
  29. package/themes/business/src/components/OrdersListManager/index.tsx +871 -0
  30. package/themes/business/src/components/OrdersListManager/styles.tsx +123 -0
  31. package/themes/business/src/components/OrdersListManager/utils.tsx +216 -0
  32. package/themes/business/src/components/OrdersOption/index.tsx +18 -68
  33. package/themes/business/src/components/OrdersOption/styles.tsx +2 -5
  34. package/themes/business/src/components/PreviousOrders/index.tsx +80 -23
  35. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  36. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  37. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  38. package/themes/kiosk/src/components/BusinessController/index.tsx +27 -6
  39. package/themes/kiosk/src/components/BusinessController/styles.tsx +1 -1
  40. package/themes/kiosk/src/components/BusinessProductsListing/index.tsx +51 -24
  41. package/themes/kiosk/src/components/Cart/index.tsx +1 -1
  42. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +1 -1
  43. package/themes/kiosk/src/components/CartBottomSheet/styles.tsx +1 -1
  44. package/themes/kiosk/src/components/CartContent/index.tsx +13 -3
  45. package/themes/kiosk/src/components/CartItem/index.tsx +20 -8
  46. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +7 -5
  47. package/themes/kiosk/src/components/CustomerName/index.tsx +89 -88
  48. package/themes/kiosk/src/components/Intro/index.tsx +13 -13
  49. package/themes/kiosk/src/components/LanguageSelector/index.tsx +12 -8
  50. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  51. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  52. package/themes/kiosk/src/components/OrderDetails/index.tsx +2 -2
  53. package/themes/kiosk/src/components/OrderSummary/index.tsx +1 -1
  54. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +10 -12
  55. package/themes/kiosk/src/components/ProductForm/index.tsx +172 -124
  56. package/themes/kiosk/src/components/ProductForm/styles.tsx +1 -1
  57. package/themes/kiosk/src/components/ProductOption/index.tsx +1 -0
  58. package/themes/kiosk/src/components/ProductOption/styles.tsx +1 -0
  59. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +48 -34
  60. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  61. package/themes/kiosk/src/components/shared/OCard.tsx +112 -78
  62. package/themes/original/index.tsx +34 -6
  63. package/themes/original/src/components/AddressForm/index.tsx +15 -10
  64. package/themes/original/src/components/AddressList/index.tsx +27 -1
  65. package/themes/original/src/components/AnalyticsSegment/index.tsx +127 -0
  66. package/themes/original/src/components/BusinessBasicInformation/index.tsx +100 -45
  67. package/themes/original/src/components/BusinessController/index.tsx +37 -18
  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 +52 -8
  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/BusinessesListing/index.tsx +39 -52
  75. package/themes/original/src/components/Cart/index.tsx +42 -9
  76. package/themes/original/src/components/CartContent/index.tsx +2 -2
  77. package/themes/original/src/components/Checkout/index.tsx +56 -32
  78. package/themes/original/src/components/Checkout/styles.tsx +7 -0
  79. package/themes/original/src/components/CouponControl/index.tsx +1 -0
  80. package/themes/original/src/components/DriverTips/index.tsx +1 -1
  81. package/themes/original/src/components/ForgotPasswordForm/index.tsx +8 -12
  82. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +105 -90
  83. package/themes/original/src/components/LoginForm/index.tsx +83 -68
  84. package/themes/original/src/components/Messages/index.tsx +52 -45
  85. package/themes/original/src/components/Messages/styles.tsx +1 -3
  86. package/themes/original/src/components/MomentOption/index.tsx +127 -152
  87. package/themes/original/src/components/MomentOption/styles.tsx +42 -18
  88. package/themes/original/src/components/OrderDetails/index.tsx +103 -124
  89. package/themes/original/src/components/OrderDetails/styles.tsx +3 -1
  90. package/themes/original/src/components/OrderProgress/index.tsx +5 -6
  91. package/themes/original/src/components/OrderSummary/index.tsx +34 -1
  92. package/themes/original/src/components/OrdersOption/index.tsx +15 -46
  93. package/themes/original/src/components/OrdersOption/styles.tsx +0 -6
  94. package/themes/original/src/components/PaymentOptions/index.tsx +24 -25
  95. package/themes/original/src/components/PhoneInputNumber/index.tsx +15 -8
  96. package/themes/original/src/components/PlaceSpot/index.tsx +114 -0
  97. package/themes/original/src/components/PlaceSpot/styles.tsx +11 -0
  98. package/themes/original/src/components/PreviousOrders/index.tsx +19 -13
  99. package/themes/original/src/components/ProductForm/index.tsx +154 -105
  100. package/themes/original/src/components/ProductForm/styles.tsx +5 -3
  101. package/themes/original/src/components/ProductOptionSubOption/index.tsx +6 -1
  102. package/themes/original/src/components/ReviewOrder/index.tsx +10 -9
  103. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  104. package/themes/original/src/components/SignupForm/index.tsx +173 -154
  105. package/themes/original/src/components/SingleProductCard/index.tsx +6 -13
  106. package/themes/original/src/components/SingleProductCard/styles.tsx +1 -1
  107. package/themes/original/src/components/StripeElementsForm/index.tsx +55 -72
  108. package/themes/original/src/components/UpsellingProducts/index.tsx +6 -6
  109. package/themes/original/src/components/UserDetails/index.tsx +4 -95
  110. package/themes/original/src/components/UserFormDetails/index.tsx +2 -14
  111. package/themes/original/src/components/UserProfile/index.tsx +16 -11
  112. package/themes/original/src/components/UserProfileForm/index.tsx +16 -8
  113. package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
  114. package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
  115. package/themes/original/src/components/shared/HeaderTitle.tsx +20 -0
  116. package/themes/original/src/components/shared/index.tsx +2 -0
  117. package/themes/original/src/types/index.tsx +25 -9
  118. package/themes/single-business/src/components/OrderTypeSelector/index.tsx +5 -5
  119. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  120. package/src/components/StripeMethodForm/index.tsx +0 -163
@@ -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
+ });
@@ -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,12 +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 { business, handleClick, navigation, isBusinessOpen } = props;
29
- const [{ parsePrice, parseDistance, parseNumber, optimizeImage }] =
30
- useUtils();
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
43
+ } = props;
44
+ const [{ parsePrice, parseDistance, parseNumber, optimizeImage }] = useUtils();
31
45
  const [orderState] = useOrder();
46
+ const [configState] = useConfig();
32
47
  const [, t] = useLanguage();
33
48
  const theme = useTheme()
49
+ const [{ configs }] = useConfig();
50
+ const isPreOrderSetting = configs?.preorder_status_enabled?.value === '1'
34
51
 
35
52
  const styles = StyleSheet.create({
36
53
  headerStyle: {
@@ -99,7 +116,7 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
99
116
  };
100
117
 
101
118
  const handleBusinessClick = (selectedBusiness: any) => {
102
- if (business?.open) handleClick && handleClick(selectedBusiness)
119
+ if (business?.open || !isPreOrderSetting) handleClick && handleClick(selectedBusiness)
103
120
  else {
104
121
  navigation.navigate('BusinessPreorder', { business: selectedBusiness, handleBusinessClick: handleClick })
105
122
  }
@@ -111,18 +128,18 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
111
128
  <FastImage
112
129
  style={{ height: 120 }}
113
130
  source={{
114
- uri: optimizeImage(business?.header, 'h_120,c_limit'),
115
- priority: FastImage.priority.normal,
131
+ uri: optimizeImage(businessHeader || business?.header, 'h_500,c_limit'),
132
+ priority: FastImage.priority.normal,
116
133
  }}
117
134
  resizeMode={FastImage.resizeMode.cover}
118
135
  />
119
- {business?.featured && (
136
+ {(businessFeatured ?? business?.featured) && (
120
137
  <View style={styles.featured}>
121
138
  <FontAwesomeIcon name="crown" size={26} color="gold" />
122
139
  </View>
123
140
  )}
124
141
  <BusinessState>
125
- {!isBusinessOpen && (
142
+ {!isBusinessOpen && (configState?.configs?.preorder_status_enabled?.value === '1') && (
126
143
  <View style={styles.businessStateView}>
127
144
  <OText
128
145
  color={theme.colors.textThird}
@@ -140,17 +157,17 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
140
157
  <FastImage
141
158
  style={{ width: 56, height: 56 }}
142
159
  source={{
143
- uri: optimizeImage(business?.logo, 'h_60,c_limit'),
144
- priority: FastImage.priority.normal,
160
+ uri: optimizeImage(businessLogo || business?.logo, 'h_150,c_limit'),
161
+ priority: FastImage.priority.normal,
145
162
  }}
146
163
  resizeMode={FastImage.resizeMode.cover}
147
164
  />
148
165
  </BusinessLogo>
149
- {business?.reviews?.total > 0 && (
166
+ {(businessReviews?.reviews?.total > 0 ?? business?.reviews?.total > 0) && (
150
167
  <Reviews>
151
168
  <OIcon src={theme.images.general.star} width={12} style={styles.starIcon} />
152
169
  <OText size={10} style={{ lineHeight: 15 }}>
153
- {parseNumber(business?.reviews?.total, { separator: '.' })}
170
+ {parseNumber(businessReviews?.reviews?.total ?? business?.reviews?.total, { separator: '.' })}
154
171
  </OText>
155
172
  </Reviews>
156
173
  )}
@@ -176,15 +193,17 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
176
193
  </View>
177
194
  ) : (
178
195
  <View style={styles.bullet}>
179
- <OText size={10} color={theme.colors.textSecondary}>
180
- {`${t('DELIVERY_FEE', 'Delivery fee')} ${parsePrice(business?.delivery_price) + ' \u2022 '}`}
181
- </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
+ )}
182
201
  <OText size={10} color={theme.colors.textSecondary}>{`${convertHoursToMinutes(
183
202
  orderState?.options?.type === 1
184
- ? business?.delivery_time
185
- : business?.pickup_time,
203
+ ? (businessDeliveryTime ?? business?.delivery_time)
204
+ : (businessPickupTime ?? business?.pickup_time),
186
205
  )} \u2022 `}</OText>
187
- <OText size={10} color={theme.colors.textSecondary}>{parseDistance(business?.distance)}</OText>
206
+ <OText size={10} color={theme.colors.textSecondary}>{parseDistance(businessDistance ?? business?.distance)}</OText>
188
207
  </View>
189
208
  )}
190
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
+ };