ordering-ui-react-native 0.14.95 → 0.14.97-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.
- package/package.json +6 -3
- package/src/DeliveryApp.tsx +32 -1
- package/src/components/BusinessTypeFilter/index.tsx +9 -2
- package/src/components/BusinessTypeFilter/styles.tsx +1 -1
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/Cart/index.tsx +1 -1
- package/src/components/Checkout/index.tsx +0 -1
- package/src/components/Home/index.tsx +3 -5
- package/src/components/LanguageSelector/index.tsx +65 -97
- package/src/components/LanguageSelector/styles.tsx +4 -17
- package/src/components/Messages/index.tsx +38 -30
- package/src/components/MomentOption/index.tsx +3 -1
- package/src/components/OrderDetails/index.tsx +26 -5
- package/src/components/PaymentOptions/index.tsx +7 -16
- package/src/components/PaymentOptionsWebView/index.tsx +123 -124
- package/src/components/ProductForm/index.tsx +1 -1
- package/src/components/ProductForm/styles.tsx +1 -0
- package/src/components/StripeElementsForm/index.tsx +27 -48
- package/src/components/UserProfileForm/index.tsx +35 -1
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/config.json +0 -2
- package/src/pages/Checkout.tsx +1 -1
- package/src/types/index.tsx +2 -9
- package/src/utils/index.tsx +2 -1
- package/themes/business/index.tsx +2 -0
- package/themes/business/src/components/Chat/index.tsx +32 -31
- package/themes/business/src/components/OrderDetails/Business.tsx +1 -0
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +85 -17
- package/themes/business/src/components/OrdersListManager/index.tsx +874 -0
- package/themes/business/src/components/OrdersListManager/styles.tsx +123 -0
- package/themes/business/src/components/OrdersListManager/utils.tsx +216 -0
- package/themes/business/src/components/OrdersOption/index.tsx +70 -116
- package/themes/business/src/components/OrdersOption/styles.tsx +2 -5
- package/themes/business/src/components/PreviousOrders/index.tsx +80 -23
- package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
- package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/kiosk/src/components/BusinessController/index.tsx +27 -6
- package/themes/kiosk/src/components/BusinessController/styles.tsx +1 -1
- package/themes/kiosk/src/components/BusinessProductsListing/index.tsx +51 -24
- package/themes/kiosk/src/components/Cart/index.tsx +1 -1
- package/themes/kiosk/src/components/CartBottomSheet/index.tsx +1 -1
- package/themes/kiosk/src/components/CartBottomSheet/styles.tsx +1 -1
- package/themes/kiosk/src/components/CartContent/index.tsx +13 -3
- package/themes/kiosk/src/components/CartItem/index.tsx +20 -8
- package/themes/kiosk/src/components/CategoriesMenu/index.tsx +7 -5
- package/themes/kiosk/src/components/CustomerName/index.tsx +89 -88
- package/themes/kiosk/src/components/Intro/index.tsx +13 -13
- package/themes/kiosk/src/components/LanguageSelector/index.tsx +12 -8
- package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
- package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
- package/themes/kiosk/src/components/OrderDetails/index.tsx +2 -2
- package/themes/kiosk/src/components/OrderSummary/index.tsx +1 -1
- package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +10 -12
- package/themes/kiosk/src/components/ProductForm/index.tsx +172 -124
- package/themes/kiosk/src/components/ProductForm/styles.tsx +1 -1
- package/themes/kiosk/src/components/ProductOption/index.tsx +1 -0
- package/themes/kiosk/src/components/ProductOption/styles.tsx +1 -0
- package/themes/kiosk/src/components/UpsellingProducts/index.tsx +48 -34
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/kiosk/src/components/shared/OCard.tsx +112 -78
- package/themes/original/index.tsx +28 -2
- package/themes/original/src/components/AddressForm/index.tsx +15 -10
- package/themes/original/src/components/AddressList/index.tsx +27 -1
- package/themes/original/src/components/AnalyticsSegment/index.tsx +127 -0
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +100 -45
- package/themes/original/src/components/BusinessBasicInformation/styles.tsx +28 -1
- package/themes/original/src/components/BusinessController/index.tsx +36 -22
- package/themes/original/src/components/BusinessMenuList/index.tsx +14 -5
- package/themes/original/src/components/BusinessPreorder/index.tsx +142 -121
- package/themes/original/src/components/BusinessProductsCategories/index.tsx +7 -5
- package/themes/original/src/components/BusinessProductsList/index.tsx +52 -8
- package/themes/original/src/components/BusinessProductsListing/index.tsx +21 -15
- package/themes/original/src/components/BusinessReviews/index.tsx +4 -3
- package/themes/original/src/components/BusinessTypeFilter/index.tsx +2 -13
- package/themes/original/src/components/BusinessesListing/index.tsx +41 -58
- package/themes/original/src/components/Cart/index.tsx +41 -8
- package/themes/original/src/components/CartContent/index.tsx +2 -2
- package/themes/original/src/components/Checkout/index.tsx +56 -32
- package/themes/original/src/components/Checkout/styles.tsx +7 -0
- package/themes/original/src/components/CouponControl/index.tsx +1 -0
- package/themes/original/src/components/DriverTips/index.tsx +1 -1
- package/themes/original/src/components/ForgotPasswordForm/index.tsx +8 -12
- package/themes/original/src/components/HighestRatedBusinesses/index.tsx +105 -90
- package/themes/original/src/components/LoginForm/index.tsx +83 -68
- package/themes/original/src/components/Messages/index.tsx +52 -45
- package/themes/original/src/components/Messages/styles.tsx +1 -3
- package/themes/original/src/components/MomentOption/index.tsx +127 -152
- package/themes/original/src/components/MomentOption/styles.tsx +42 -18
- package/themes/original/src/components/OrderDetails/index.tsx +103 -124
- package/themes/original/src/components/OrderDetails/styles.tsx +3 -1
- package/themes/original/src/components/OrderProgress/index.tsx +5 -6
- package/themes/original/src/components/OrderSummary/index.tsx +34 -1
- package/themes/original/src/components/OrdersOption/index.tsx +15 -46
- package/themes/original/src/components/OrdersOption/styles.tsx +0 -6
- package/themes/original/src/components/PaymentOptions/index.tsx +24 -25
- package/themes/original/src/components/PhoneInputNumber/index.tsx +15 -8
- package/themes/original/src/components/PlaceSpot/index.tsx +114 -0
- package/themes/original/src/components/PlaceSpot/styles.tsx +11 -0
- package/themes/original/src/components/PreviousOrders/index.tsx +19 -13
- package/themes/original/src/components/ProductForm/index.tsx +153 -104
- package/themes/original/src/components/ProductForm/styles.tsx +5 -3
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +6 -1
- package/themes/original/src/components/ReviewOrder/index.tsx +10 -9
- package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
- package/themes/original/src/components/SearchBar/index.tsx +4 -10
- package/themes/original/src/components/SignupForm/index.tsx +173 -154
- package/themes/original/src/components/SingleProductCard/index.tsx +7 -22
- package/themes/original/src/components/StripeElementsForm/index.tsx +55 -72
- package/themes/original/src/components/UpsellingProducts/index.tsx +6 -6
- package/themes/original/src/components/UserDetails/index.tsx +4 -95
- package/themes/original/src/components/UserFormDetails/index.tsx +2 -14
- package/themes/original/src/components/UserProfile/index.tsx +16 -11
- package/themes/original/src/components/UserProfileForm/index.tsx +16 -8
- package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
- package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
- package/themes/original/src/components/shared/HeaderTitle.tsx +20 -0
- package/themes/original/src/components/shared/OInput.tsx +1 -2
- package/themes/original/src/components/shared/index.tsx +2 -0
- package/themes/original/src/types/index.tsx +25 -28
- package/themes/single-business/src/components/OrderTypeSelector/index.tsx +5 -5
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/StripeMethodForm/index.tsx +0 -163
- package/themes/original/src/components/BusinessListingSearch/index.tsx +0 -469
- 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
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
97
|
+
timeout && clearTimeout(timeout)
|
|
76
98
|
}
|
|
77
|
-
|
|
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={() =>
|
|
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
|
-
<
|
|
125
|
-
{
|
|
126
|
-
|
|
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
|
-
|
|
185
|
-
|
|
186
|
-
{
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
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
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
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)}
|
|
126
|
+
<Card activeOpacity={1} onPress={() => handleBusinessClick(business)}>
|
|
115
127
|
<BusinessHero>
|
|
116
128
|
<FastImage
|
|
117
129
|
style={{ height: 120 }}
|
|
118
130
|
source={{
|
|
119
|
-
|
|
120
|
-
|
|
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
|
-
|
|
149
|
-
|
|
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
|
-
|
|
185
|
-
{
|
|
186
|
-
|
|
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 : -
|
|
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
|
+
};
|