ordering-ui-react-native 0.15.13 → 0.15.14-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 +5 -3
- package/src/DeliveryApp.tsx +43 -1
- package/src/components/BusinessTypeFilter/index.tsx +12 -2
- package/src/components/BusinessTypeFilter/styles.tsx +1 -1
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/Checkout/index.tsx +0 -1
- package/src/components/LanguageSelector/index.tsx +1 -0
- package/src/components/OrderDetails/index.tsx +26 -5
- package/src/components/PaymentOptions/index.tsx +9 -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/VerifyPhone/styles.tsx +1 -2
- package/src/config.json +0 -2
- package/src/navigators/HomeNavigator.tsx +6 -0
- package/src/pages/BusinessProductsList.tsx +1 -0
- package/src/pages/BusinessesListing.tsx +1 -1
- package/src/pages/Checkout.tsx +1 -1
- package/src/pages/Sessions.tsx +22 -0
- package/src/types/index.tsx +1 -9
- package/src/utils/index.tsx +68 -1
- package/themes/business/index.tsx +2 -0
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +56 -8
- package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +5 -0
- package/themes/business/src/components/Home/index.tsx +128 -55
- package/themes/business/src/components/Home/styles.tsx +8 -1
- package/themes/business/src/components/NewOrderNotification/index.tsx +59 -98
- package/themes/business/src/components/OrderDetails/Business.tsx +2 -1
- package/themes/business/src/components/OrderDetails/Delivery.tsx +9 -9
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +150 -89
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +91 -17
- package/themes/business/src/components/OrderDetails/styles.tsx +7 -0
- 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 +82 -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 +48 -21
- package/themes/kiosk/src/components/Cart/index.tsx +98 -24
- package/themes/kiosk/src/components/Cart/styles.tsx +6 -0
- 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 +6 -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 +136 -41
- package/themes/kiosk/src/components/OrderDetails/styles.tsx +5 -0
- 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 +174 -125
- 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/kiosk/src/types/index.d.ts +2 -0
- package/themes/original/index.tsx +179 -0
- package/themes/original/src/components/AddressForm/index.tsx +15 -10
- package/themes/original/src/components/AddressList/index.tsx +56 -18
- package/themes/original/src/components/AppleLogin/index.tsx +119 -78
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +96 -45
- package/themes/original/src/components/BusinessBasicInformation/styles.tsx +28 -1
- package/themes/original/src/components/BusinessController/index.tsx +52 -22
- package/themes/original/src/components/BusinessController/styles.tsx +22 -0
- package/themes/original/src/components/BusinessFeaturedController/index.tsx +20 -1
- package/themes/original/src/components/BusinessFeaturedController/styles.tsx +23 -0
- package/themes/original/src/components/BusinessListingSearch/index.tsx +4 -0
- package/themes/original/src/components/BusinessMenuList/index.tsx +11 -4
- package/themes/original/src/components/BusinessPreorder/index.tsx +141 -121
- package/themes/original/src/components/BusinessProductsCategories/index.tsx +7 -5
- package/themes/original/src/components/BusinessProductsList/index.tsx +129 -22
- package/themes/original/src/components/BusinessProductsList/styles.tsx +29 -2
- package/themes/original/src/components/BusinessProductsListing/index.tsx +92 -37
- package/themes/original/src/components/BusinessProductsListing/styles.tsx +22 -0
- package/themes/original/src/components/BusinessReviews/index.tsx +4 -25
- package/themes/original/src/components/BusinessTypeFilter/index.tsx +1 -2
- package/themes/original/src/components/BusinessesListing/index.tsx +49 -58
- package/themes/original/src/components/Cart/index.tsx +58 -21
- package/themes/original/src/components/CartContent/index.tsx +2 -2
- package/themes/original/src/components/Checkout/index.tsx +24 -28
- 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 +97 -89
- package/themes/original/src/components/Home/index.tsx +1 -1
- package/themes/original/src/components/LoginForm/index.tsx +156 -70
- package/themes/original/src/components/LoginForm/styles.tsx +6 -1
- package/themes/original/src/components/MessageListing/index.tsx +10 -1
- package/themes/original/src/components/Messages/index.tsx +50 -45
- package/themes/original/src/components/Messages/styles.tsx +1 -3
- package/themes/original/src/components/MomentOption/index.tsx +10 -1
- package/themes/original/src/components/MomentOption/styles.tsx +1 -1
- package/themes/original/src/components/OrderDetails/index.tsx +105 -127
- package/themes/original/src/components/OrderDetails/styles.tsx +3 -1
- package/themes/original/src/components/OrderProgress/index.tsx +4 -4
- package/themes/original/src/components/OrderProgress/styles.tsx +1 -0
- package/themes/original/src/components/OrderSummary/index.tsx +35 -2
- package/themes/original/src/components/OrderTypeSelector/index.tsx +4 -2
- package/themes/original/src/components/OrdersOption/index.tsx +25 -33
- package/themes/original/src/components/OrdersOption/styles.tsx +0 -6
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +9 -4
- package/themes/original/src/components/PaymentOptionWallet/styles.tsx +1 -1
- package/themes/original/src/components/PaymentOptions/index.tsx +9 -19
- 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 +47 -36
- package/themes/original/src/components/ProductForm/styles.tsx +2 -2
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +5 -3
- package/themes/original/src/components/Promotions/index.tsx +234 -0
- package/themes/original/src/components/Promotions/styles.tsx +60 -0
- 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/Sessions/index.tsx +160 -0
- package/themes/original/src/components/Sessions/styles.tsx +15 -0
- package/themes/original/src/components/SignupForm/index.tsx +173 -154
- package/themes/original/src/components/SingleProductCard/index.tsx +47 -21
- package/themes/original/src/components/SingleProductCard/styles.tsx +28 -1
- package/themes/original/src/components/StripeElementsForm/index.tsx +55 -72
- package/themes/original/src/components/TaxInformation/index.tsx +17 -7
- package/themes/original/src/components/UpsellingProducts/index.tsx +87 -71
- package/themes/original/src/components/UserDetails/index.tsx +4 -95
- package/themes/original/src/components/UserFormDetails/index.tsx +32 -31
- package/themes/original/src/components/UserProfile/index.tsx +70 -20
- package/themes/original/src/components/UserProfileForm/index.tsx +28 -24
- 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/Wallets/index.tsx +75 -8
- package/themes/original/src/components/Wallets/styles.tsx +21 -0
- package/themes/original/src/components/shared/HeaderTitle.tsx +21 -0
- package/themes/original/src/components/shared/index.tsx +2 -0
- package/themes/original/src/config/constants.tsx +6 -6
- package/themes/original/src/types/index.tsx +79 -25
- package/themes/original/src/utils/index.tsx +12 -2
- package/themes/single-business/src/components/AddressList/index.tsx +1 -1
- package/themes/single-business/src/components/OrderTypeSelector/index.tsx +6 -6
- package/themes/single-business/src/components/UserProfile/index.tsx +1 -1
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/StripeMethodForm/index.tsx +0 -168
|
@@ -97,28 +97,18 @@ const MessagesUI = (props: MessagesParams) => {
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
const handleImagePicker = () => {
|
|
100
|
-
launchImageLibrary({ mediaType: 'photo', maxHeight:
|
|
101
|
-
if (response
|
|
102
|
-
|
|
103
|
-
} else if (response
|
|
104
|
-
console.log('ImagePicker Error: ', response.errorMessage);
|
|
100
|
+
launchImageLibrary({ mediaType: 'photo', maxHeight: 2048, maxWidth: 2048, includeBase64: true }, (response: any) => {
|
|
101
|
+
if (response?.didCancel) {
|
|
102
|
+
showToast(ToastType.Error, t('IMAGE_CANCELLED', 'User cancelled image picker'));
|
|
103
|
+
} else if (response?.errorMessage) {
|
|
105
104
|
showToast(ToastType.Error, response.errorMessage);
|
|
106
105
|
} else {
|
|
107
|
-
if (
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
} else {
|
|
112
|
-
showToast(ToastType.Error, t('IMAGE_NOT_FOUND', 'Image not found'));
|
|
113
|
-
}
|
|
106
|
+
if (response?.assets?.length > 0) {
|
|
107
|
+
const image = response?.assets[0]
|
|
108
|
+
const url = `data:${image.type};base64,${image.base64}`
|
|
109
|
+
setImage && setImage(url);
|
|
114
110
|
} else {
|
|
115
|
-
|
|
116
|
-
const image = response?.assets[0]
|
|
117
|
-
const url = `data:${image.type};base64,${image.base64}`
|
|
118
|
-
setImage && setImage(url);
|
|
119
|
-
} else {
|
|
120
|
-
showToast(ToastType.Error, t('IMAGE_NOT_FOUND', 'Image not found'));
|
|
121
|
-
}
|
|
111
|
+
showToast(ToastType.Error, t('IMAGE_NOT_FOUND', 'Image not found'));
|
|
122
112
|
}
|
|
123
113
|
}
|
|
124
114
|
});
|
|
@@ -237,7 +227,7 @@ const MessagesUI = (props: MessagesParams) => {
|
|
|
237
227
|
{image && (
|
|
238
228
|
<TouchableOpacity
|
|
239
229
|
style={{ position: 'absolute', top: -5, right: -5, borderColor: theme.colors.backgroundDark, backgroundColor: theme.colors.white, borderRadius: 25 }}
|
|
240
|
-
onPress={
|
|
230
|
+
onPress={removeImage}
|
|
241
231
|
>
|
|
242
232
|
<MaterialCommunityIcon name='close-circle-outline' color={theme.colors.backgroundDark} size={24} />
|
|
243
233
|
</TouchableOpacity>
|
|
@@ -342,30 +332,34 @@ const MessagesUI = (props: MessagesParams) => {
|
|
|
342
332
|
)
|
|
343
333
|
)
|
|
344
334
|
|
|
345
|
-
const renderSend = (props: any) =>
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
335
|
+
const renderSend = (props: any) => {
|
|
336
|
+
const isDisabled = (sendMessage?.loading || (message === '' && !image) || messages?.loading)
|
|
337
|
+
return (
|
|
338
|
+
<Send
|
|
339
|
+
{...props}
|
|
340
|
+
disabled={isDisabled}
|
|
341
|
+
alwaysShowSend
|
|
342
|
+
containerStyle={styles.containerSend}
|
|
343
|
+
>
|
|
344
|
+
<OIconButton
|
|
345
|
+
onClick={onSubmit}
|
|
346
|
+
style={{
|
|
347
|
+
height: 44,
|
|
348
|
+
width: 44,
|
|
349
|
+
borderRadius: 7.6,
|
|
350
|
+
opacity: isDisabled ? 0.2 : 1,
|
|
351
|
+
borderColor: isDisabled ? theme.colors.secondary : theme.colors.primary,
|
|
352
|
+
backgroundColor: isDisabled ? theme.colors.secondary : theme.colors.primary,
|
|
353
|
+
}}
|
|
354
|
+
iconStyle={{ marginTop: 3, marginRight: 2 }}
|
|
355
|
+
icon={theme.images.general.enter}
|
|
356
|
+
iconColor={isDisabled ? '#000' : '#fff'}
|
|
357
|
+
disabled={isDisabled}
|
|
358
|
+
disabledColor={theme.colors.secondary}
|
|
359
|
+
/>
|
|
360
|
+
</Send>
|
|
361
|
+
)
|
|
362
|
+
}
|
|
369
363
|
|
|
370
364
|
const renderBubble = (props: any) => (
|
|
371
365
|
<Bubble
|
|
@@ -545,9 +539,20 @@ const styles = StyleSheet.create({
|
|
|
545
539
|
})
|
|
546
540
|
|
|
547
541
|
export const Messages = (props: MessagesParams) => {
|
|
542
|
+
const [allMessages, setAllMessages] = useState(props.messages)
|
|
543
|
+
|
|
544
|
+
useEffect(() => {
|
|
545
|
+
setAllMessages(props.messages)
|
|
546
|
+
}, [props.messages])
|
|
547
|
+
|
|
548
548
|
const MessagesProps = {
|
|
549
549
|
...props,
|
|
550
|
-
UIComponent: MessagesUI
|
|
550
|
+
UIComponent: MessagesUI,
|
|
551
|
+
messages: allMessages,
|
|
552
|
+
setMessages: (values: any) => {
|
|
553
|
+
props.setMessages && props.setMessages(values)
|
|
554
|
+
setAllMessages(values)
|
|
555
|
+
}
|
|
551
556
|
}
|
|
552
557
|
return <MessagesController {...MessagesProps} />
|
|
553
558
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
1
|
import styled, { css } from 'styled-components/native'
|
|
3
2
|
|
|
4
|
-
|
|
5
3
|
export const Wrapper = styled.View`
|
|
6
4
|
flex: 1;
|
|
7
5
|
background-color: ${(props: any) => props.theme.colors.white};
|
|
@@ -39,4 +37,4 @@ export const MessageTypeItem = styled.View`
|
|
|
39
37
|
${({ active }: any) => active && css`
|
|
40
38
|
background-color: ${(props: any) => props.theme.colors.whiteGray};
|
|
41
39
|
`}
|
|
42
|
-
`
|
|
40
|
+
`
|
|
@@ -4,6 +4,7 @@ import CalendarStrip from 'react-native-calendar-strip'
|
|
|
4
4
|
import {
|
|
5
5
|
useLanguage,
|
|
6
6
|
useConfig,
|
|
7
|
+
useUtils,
|
|
7
8
|
useOrder,
|
|
8
9
|
MomentOption as MomentOptionController,
|
|
9
10
|
} from 'ordering-components/native';
|
|
@@ -132,6 +133,7 @@ const MomentOptionUI = (props: MomentOptionParams) => {
|
|
|
132
133
|
|
|
133
134
|
const [, t] = useLanguage();
|
|
134
135
|
const [{ configs }] = useConfig();
|
|
136
|
+
const [{ parseTime }] = useUtils()
|
|
135
137
|
const [orderState] = useOrder();
|
|
136
138
|
const [optionSelected, setOptionSelected] = useState({
|
|
137
139
|
isAsap: false,
|
|
@@ -143,6 +145,8 @@ const MomentOptionUI = (props: MomentOptionParams) => {
|
|
|
143
145
|
});
|
|
144
146
|
const { bottom } = useSafeAreaInsets();
|
|
145
147
|
|
|
148
|
+
const is12hours = configs?.dates_moment_format?.value?.includes('hh:mm')
|
|
149
|
+
|
|
146
150
|
const [selectedTime, setSelectedTime] = useState(null);
|
|
147
151
|
const [datesWhitelist, setDateWhitelist] = useState<any>([{ start: null, end: null }])
|
|
148
152
|
const [selectDate, setSelectedDate] = useState<any>(null)
|
|
@@ -338,7 +342,12 @@ const MomentOptionUI = (props: MomentOptionParams) => {
|
|
|
338
342
|
style={{
|
|
339
343
|
lineHeight: 24
|
|
340
344
|
}}
|
|
341
|
-
>{
|
|
345
|
+
>{is12hours ? (
|
|
346
|
+
time.startTime.includes('12')
|
|
347
|
+
? `${time.startTime}PM`
|
|
348
|
+
: parseTime(moment(time.startTime, 'HH:mm'), { outputFormat: 'hh:mma' })
|
|
349
|
+
) : time.startTime
|
|
350
|
+
}</OText>
|
|
342
351
|
</TimeItem>
|
|
343
352
|
</TouchableOpacity>
|
|
344
353
|
))}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import React, { useState, useEffect } from 'react';
|
|
2
|
-
import { View, StyleSheet, BackHandler,
|
|
3
|
-
import Spinner from 'react-native-loading-spinner-overlay';
|
|
2
|
+
import { View, StyleSheet, BackHandler, Platform, Linking } from 'react-native';
|
|
4
3
|
import LinearGradient from 'react-native-linear-gradient';
|
|
5
|
-
import { Messages } from '../Messages';
|
|
6
4
|
import {
|
|
7
5
|
useLanguage,
|
|
8
6
|
OrderDetails as OrderDetailsConTableoller,
|
|
9
7
|
useUtils,
|
|
10
|
-
useConfig
|
|
11
|
-
useSession,
|
|
8
|
+
useConfig
|
|
12
9
|
} from 'ordering-components/native';
|
|
13
10
|
import { useTheme } from 'styled-components/native';
|
|
14
11
|
import {
|
|
@@ -16,14 +13,10 @@ import {
|
|
|
16
13
|
Header,
|
|
17
14
|
OrderContent,
|
|
18
15
|
OrderBusiness,
|
|
19
|
-
Logo,
|
|
20
16
|
OrderData,
|
|
21
17
|
OrderInfo,
|
|
22
|
-
OrderStatus,
|
|
23
18
|
StaturBar,
|
|
24
|
-
StatusImage,
|
|
25
19
|
OrderCustomer,
|
|
26
|
-
CustomerPhoto,
|
|
27
20
|
InfoBlock,
|
|
28
21
|
HeaderInfo,
|
|
29
22
|
Customer,
|
|
@@ -31,17 +24,16 @@ import {
|
|
|
31
24
|
Table,
|
|
32
25
|
OrderBill,
|
|
33
26
|
Total,
|
|
34
|
-
NavBack,
|
|
35
27
|
Icons,
|
|
36
28
|
OrderDriver,
|
|
37
29
|
Map,
|
|
38
30
|
Divider,
|
|
31
|
+
OrderAction
|
|
39
32
|
} from './styles';
|
|
40
33
|
import { OButton, OIcon, OModal, OText } from '../shared';
|
|
41
34
|
import { ProductItemAccordion } from '../ProductItemAccordion';
|
|
42
35
|
import { TouchableOpacity } from 'react-native-gesture-handler';
|
|
43
36
|
import { OrderDetailsParams } from '../../types';
|
|
44
|
-
import { USER_TYPE } from '../../config/constants';
|
|
45
37
|
import { GoogleMap } from '../GoogleMap';
|
|
46
38
|
import { verifyDecimals } from '../../utils';
|
|
47
39
|
import { OSRow } from '../OrderSummary/styles';
|
|
@@ -55,9 +47,11 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
55
47
|
messages,
|
|
56
48
|
setMessages,
|
|
57
49
|
readMessages,
|
|
58
|
-
messagesReadList,
|
|
59
50
|
isFromCheckout,
|
|
60
51
|
driverLocation,
|
|
52
|
+
onNavigationRedirect,
|
|
53
|
+
reorderState,
|
|
54
|
+
handleReorder
|
|
61
55
|
} = props;
|
|
62
56
|
|
|
63
57
|
const theme = useTheme();
|
|
@@ -92,19 +86,12 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
92
86
|
|
|
93
87
|
const [, t] = useLanguage();
|
|
94
88
|
const [{ parsePrice, parseNumber, parseDate }] = useUtils();
|
|
95
|
-
const [{ user }] = useSession();
|
|
96
89
|
const [{ configs }] = useConfig();
|
|
97
|
-
|
|
98
|
-
const [openModalForBusiness, setOpenModalForBusiness] = useState(false);
|
|
99
|
-
const [openModalForDriver, setOpenModalForDriver] = useState(false);
|
|
100
90
|
const [isReviewed, setIsReviewed] = useState(false)
|
|
101
|
-
const [unreadAlert, setUnreadAlert] = useState({
|
|
102
|
-
business: false,
|
|
103
|
-
driver: false,
|
|
104
|
-
});
|
|
105
91
|
const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, tax: null, type: '' })
|
|
106
92
|
|
|
107
93
|
const { order, businessData } = props.order;
|
|
94
|
+
const mapValidStatuses = [9, 19, 23]
|
|
108
95
|
|
|
109
96
|
const walletName: any = {
|
|
110
97
|
cash: {
|
|
@@ -293,18 +280,18 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
293
280
|
percentage: 95,
|
|
294
281
|
image: theme.images.order.status7,
|
|
295
282
|
},
|
|
296
|
-
{
|
|
297
|
-
key: 22,
|
|
298
|
-
value: t('ORDER_LOOKING_FOR_DRIVER', 'Looking for driver'),
|
|
299
|
-
slug: 'ORDER_LOOKING_FOR_DRIVER',
|
|
300
|
-
percentage: 35,
|
|
301
|
-
image: theme.images.order.status8
|
|
283
|
+
{
|
|
284
|
+
key: 22,
|
|
285
|
+
value: t('ORDER_LOOKING_FOR_DRIVER', 'Looking for driver'),
|
|
286
|
+
slug: 'ORDER_LOOKING_FOR_DRIVER',
|
|
287
|
+
percentage: 35,
|
|
288
|
+
image: theme.images.order.status8
|
|
302
289
|
},
|
|
303
|
-
{
|
|
304
|
-
key: 23,
|
|
305
|
-
value: t('ORDER_DRIVER_ON_WAY', 'Driver on way'),
|
|
306
|
-
slug: 'ORDER_DRIVER_ON_WAY',
|
|
307
|
-
percentage: 45,
|
|
290
|
+
{
|
|
291
|
+
key: 23,
|
|
292
|
+
value: t('ORDER_DRIVER_ON_WAY', 'Driver on way'),
|
|
293
|
+
slug: 'ORDER_DRIVER_ON_WAY',
|
|
294
|
+
percentage: 45,
|
|
308
295
|
image: theme.images.order.status8
|
|
309
296
|
}
|
|
310
297
|
];
|
|
@@ -314,38 +301,24 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
314
301
|
return objectStatus && objectStatus;
|
|
315
302
|
};
|
|
316
303
|
|
|
317
|
-
const
|
|
318
|
-
setOpenModalForBusiness(true);
|
|
319
|
-
readMessages && readMessages();
|
|
320
|
-
setUnreadAlert({ ...unreadAlert, business: false });
|
|
321
|
-
};
|
|
322
|
-
|
|
323
|
-
const handleOpenMessagesForDriver = () => {
|
|
324
|
-
setOpenModalForDriver(true);
|
|
304
|
+
const handleGoToMessages = (type: string) => {
|
|
325
305
|
readMessages && readMessages();
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
setUnreadAlert({ business, driver });
|
|
343
|
-
};
|
|
344
|
-
|
|
345
|
-
const handleCloseModal = () => {
|
|
346
|
-
setOpenModalForBusiness(false);
|
|
347
|
-
setOpenModalForDriver(false);
|
|
348
|
-
};
|
|
306
|
+
navigation.navigate(
|
|
307
|
+
'MessageDetails',
|
|
308
|
+
{
|
|
309
|
+
type,
|
|
310
|
+
order,
|
|
311
|
+
messages,
|
|
312
|
+
setMessages,
|
|
313
|
+
orderId: order?.id,
|
|
314
|
+
business: type === 'business',
|
|
315
|
+
driver: type === 'driver',
|
|
316
|
+
onClose: () => navigation?.canGoBack()
|
|
317
|
+
? navigation.goBack()
|
|
318
|
+
: navigation.navigate('BottomTab', { screen: 'MyOrders' }),
|
|
319
|
+
}
|
|
320
|
+
)
|
|
321
|
+
}
|
|
349
322
|
|
|
350
323
|
const handleArrowBack: any = () => {
|
|
351
324
|
if (!isFromCheckout) {
|
|
@@ -387,6 +360,16 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
387
360
|
)
|
|
388
361
|
}
|
|
389
362
|
|
|
363
|
+
|
|
364
|
+
useEffect(() => {
|
|
365
|
+
if (reorderState?.error) {
|
|
366
|
+
navigation.navigate('Business', { store: businessData?.slug })
|
|
367
|
+
}
|
|
368
|
+
if (!reorderState?.error && reorderState?.result?.uuid) {
|
|
369
|
+
onNavigationRedirect && onNavigationRedirect('CheckoutNavigator', { cartUuid: reorderState?.result.uuid })
|
|
370
|
+
}
|
|
371
|
+
}, [reorderState])
|
|
372
|
+
|
|
390
373
|
useEffect(() => {
|
|
391
374
|
BackHandler.addEventListener('hardwareBackPress', handleArrowBack);
|
|
392
375
|
return () => {
|
|
@@ -394,14 +377,6 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
394
377
|
};
|
|
395
378
|
}, []);
|
|
396
379
|
|
|
397
|
-
useEffect(() => {
|
|
398
|
-
if (messagesReadList?.length) {
|
|
399
|
-
openModalForBusiness
|
|
400
|
-
? setUnreadAlert({ ...unreadAlert, business: false })
|
|
401
|
-
: setUnreadAlert({ ...unreadAlert, driver: false });
|
|
402
|
-
}
|
|
403
|
-
}, [messagesReadList]);
|
|
404
|
-
|
|
405
380
|
const locations = [
|
|
406
381
|
{
|
|
407
382
|
...order?.driver?.location,
|
|
@@ -430,10 +405,6 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
430
405
|
}
|
|
431
406
|
}, [driverLocation]);
|
|
432
407
|
|
|
433
|
-
useEffect(() => {
|
|
434
|
-
console.log('order: ', order)
|
|
435
|
-
}, [order]);
|
|
436
|
-
|
|
437
408
|
return (
|
|
438
409
|
<OrderDetailsContainer keyboardShouldPersistTaps="handled">
|
|
439
410
|
{(!order || Object.keys(order).length === 0) && (
|
|
@@ -481,7 +452,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
481
452
|
<PlaceholderLine width={65} height={10} />
|
|
482
453
|
<PlaceholderLine width={80} height={10} />
|
|
483
454
|
<PlaceholderLine width={70} height={10} />
|
|
484
|
-
<View style={{marginTop: 10}}>
|
|
455
|
+
<View style={{ marginTop: 10 }}>
|
|
485
456
|
<PlaceholderLine width={60} height={20} />
|
|
486
457
|
<PlaceholderLine width={40} height={10} />
|
|
487
458
|
</View>
|
|
@@ -594,21 +565,23 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
594
565
|
{order?.business?.name}
|
|
595
566
|
</OText>
|
|
596
567
|
<Icons>
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
568
|
+
{!!order?.business?.cellphone && (
|
|
569
|
+
<TouchableOpacity
|
|
570
|
+
onPress={() => order?.business?.cellphone &&
|
|
571
|
+
Linking.openURL(`tel:${order?.business?.cellphone}`)
|
|
572
|
+
}
|
|
573
|
+
style={{ paddingEnd: 5 }}
|
|
574
|
+
>
|
|
575
|
+
<OIcon
|
|
576
|
+
src={theme.images.general.phone}
|
|
577
|
+
width={16}
|
|
578
|
+
color={theme.colors.disabled}
|
|
579
|
+
/>
|
|
580
|
+
</TouchableOpacity>
|
|
581
|
+
)}
|
|
609
582
|
<TouchableOpacity
|
|
610
583
|
style={{ paddingStart: 5 }}
|
|
611
|
-
onPress={() =>
|
|
584
|
+
onPress={() => handleGoToMessages('business')}>
|
|
612
585
|
<OIcon
|
|
613
586
|
src={theme.images.general.chat}
|
|
614
587
|
width={16}
|
|
@@ -624,13 +597,15 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
624
597
|
mBottom={2}>
|
|
625
598
|
{order?.business?.email}
|
|
626
599
|
</OText>
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
600
|
+
{!!order?.business?.cellphone && (
|
|
601
|
+
<OText
|
|
602
|
+
size={12}
|
|
603
|
+
lineHeight={18}
|
|
604
|
+
color={theme.colors.textNormal}
|
|
605
|
+
mBottom={2}>
|
|
606
|
+
{order?.business?.cellphone}
|
|
607
|
+
</OText>
|
|
608
|
+
)}
|
|
634
609
|
<OText size={12} lineHeight={18} color={theme.colors.textNormal}>
|
|
635
610
|
{order?.business?.address}
|
|
636
611
|
</OText>
|
|
@@ -698,7 +673,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
698
673
|
)}
|
|
699
674
|
{order?.driver && (
|
|
700
675
|
<>
|
|
701
|
-
{order?.driver?.location && parseInt(order?.status)
|
|
676
|
+
{order?.driver?.location && mapValidStatuses.includes(parseInt(order?.status)) && (
|
|
702
677
|
<Map>
|
|
703
678
|
<GoogleMap
|
|
704
679
|
location={order?.driver?.location}
|
|
@@ -735,7 +710,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
735
710
|
</OText>
|
|
736
711
|
<Icons>
|
|
737
712
|
<TouchableOpacity
|
|
738
|
-
onPress={() =>
|
|
713
|
+
onPress={() => handleGoToMessages('driver')}>
|
|
739
714
|
<OIcon
|
|
740
715
|
src={theme.images.general.chat}
|
|
741
716
|
width={16}
|
|
@@ -776,16 +751,37 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
776
751
|
'Once business accepts your order, we will send you an email, thank you!',
|
|
777
752
|
)}
|
|
778
753
|
</OText>
|
|
779
|
-
<
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
754
|
+
<OrderAction>
|
|
755
|
+
<OButton
|
|
756
|
+
text={t('YOUR_ORDERS', 'Your Orders')}
|
|
757
|
+
textStyle={{ fontSize: 14, color: theme.colors.primary }}
|
|
758
|
+
imgRightSrc={null}
|
|
759
|
+
borderColor={theme.colors.primary}
|
|
760
|
+
bgColor={theme.colors.clear}
|
|
761
|
+
style={{ borderRadius: 7.6, borderWidth: 1, height: 44, shadowOpacity: 0 }}
|
|
762
|
+
parentStyle={{ marginTop: 29, marginEnd: 15 }}
|
|
763
|
+
onClick={() => navigation.navigate('BottomTab', { screen: 'MyOrders' })}
|
|
764
|
+
/>
|
|
765
|
+
{(
|
|
766
|
+
parseInt(order?.status) === 1 ||
|
|
767
|
+
parseInt(order?.status) === 2 ||
|
|
768
|
+
parseInt(order?.status) === 5 ||
|
|
769
|
+
parseInt(order?.status) === 6 ||
|
|
770
|
+
parseInt(order?.status) === 10 ||
|
|
771
|
+
parseInt(order?.status) === 11 ||
|
|
772
|
+
parseInt(order?.status) === 12
|
|
773
|
+
) && (
|
|
774
|
+
<OButton
|
|
775
|
+
text={order.id === reorderState?.loading ? t('LOADING', 'Loading..') : t('REORDER', 'Reorder')}
|
|
776
|
+
textStyle={{ fontSize: 14, color: theme.colors.primary }}
|
|
777
|
+
imgRightSrc={null}
|
|
778
|
+
borderColor='transparent'
|
|
779
|
+
bgColor={theme.colors.primary + 10}
|
|
780
|
+
style={{ borderRadius: 7.6, borderWidth: 1, height: 44, shadowOpacity: 0, marginTop: 29 }}
|
|
781
|
+
onClick={() => handleReorder && handleReorder(order.id)}
|
|
782
|
+
/>
|
|
783
|
+
)}
|
|
784
|
+
</OrderAction>
|
|
789
785
|
</HeaderInfo>
|
|
790
786
|
<OrderProducts>
|
|
791
787
|
{order?.products?.length &&
|
|
@@ -895,7 +891,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
895
891
|
<OSRow>
|
|
896
892
|
<OText size={12} lineHeight={18} weight={'400'} color={theme.colors.textNormal} numberOfLines={1}>
|
|
897
893
|
{fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
|
|
898
|
-
({fee?.fixed > 0 && `${parsePrice(fee?.fixed)} + `}{fee.percentage}
|
|
894
|
+
({fee?.fixed > 0 && `${parsePrice(fee?.fixed)}${fee.percentage > 0 ? ' + ' : ''}`}{fee.percentage > 0 && `${fee.percentage}%`}){' '}
|
|
899
895
|
</OText>
|
|
900
896
|
<TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: fee, type: 'fee' })}>
|
|
901
897
|
<AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
|
|
@@ -978,7 +974,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
978
974
|
marginTop: 10
|
|
979
975
|
}}
|
|
980
976
|
>
|
|
981
|
-
{order?.payment_events?.map((event: any) => (
|
|
977
|
+
{order?.payment_events?.map((event: any) => event.amount > 0 && (
|
|
982
978
|
<View
|
|
983
979
|
key={event.id}
|
|
984
980
|
style={{
|
|
@@ -1018,28 +1014,10 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
1018
1014
|
</OrderContent>
|
|
1019
1015
|
</>
|
|
1020
1016
|
)}
|
|
1021
|
-
<OModal
|
|
1022
|
-
open={openModalForBusiness || openModalForDriver}
|
|
1023
|
-
entireModal
|
|
1024
|
-
customClose
|
|
1025
|
-
onClose={() => handleCloseModal()}>
|
|
1026
|
-
<Messages
|
|
1027
|
-
type={openModalForBusiness ? USER_TYPE.BUSINESS : USER_TYPE.DRIVER}
|
|
1028
|
-
orderId={order?.id}
|
|
1029
|
-
messages={messages}
|
|
1030
|
-
order={order}
|
|
1031
|
-
business={openModalForBusiness}
|
|
1032
|
-
driver={openModalForDriver}
|
|
1033
|
-
setMessages={setMessages}
|
|
1034
|
-
onClose={handleCloseModal}
|
|
1035
|
-
/>
|
|
1036
|
-
</OModal>
|
|
1037
1017
|
<OModal
|
|
1038
1018
|
open={openTaxModal.open}
|
|
1039
1019
|
onClose={() => setOpenTaxModal({ open: false, data: null, type: '' })}
|
|
1040
1020
|
entireModal
|
|
1041
|
-
title={`${openTaxModal.data?.name ||
|
|
1042
|
-
t('INHERIT_FROM_BUSINESS', 'Inherit from business')} ${openTaxModal.data?.rate_type !== 2 ? `(${typeof openTaxModal.data?.rate === 'number' ? `${openTaxModal.data?.rate}%` : `${parsePrice(openTaxModal.data?.fixed ?? 0)} + ${openTaxModal.data?.percentage}%`})` : ''} `}
|
|
1043
1021
|
>
|
|
1044
1022
|
<TaxInformation
|
|
1045
1023
|
type={openTaxModal.type}
|
|
@@ -5,7 +5,6 @@ export const OrderDetailsContainer = styled.ScrollView`
|
|
|
5
5
|
`
|
|
6
6
|
|
|
7
7
|
export const NavBack = styled.TouchableOpacity`
|
|
8
|
-
|
|
9
8
|
`
|
|
10
9
|
|
|
11
10
|
|
|
@@ -125,3 +124,6 @@ export const Divider = styled.View`
|
|
|
125
124
|
margin-top: 5px;
|
|
126
125
|
margin-bottom: 5px;
|
|
127
126
|
`
|
|
127
|
+
export const OrderAction = styled.View`
|
|
128
|
+
flex-direction: row;
|
|
129
|
+
`
|
|
@@ -98,7 +98,7 @@ const OrderProgressUI = (props: any) => {
|
|
|
98
98
|
{ key: 20, value: t('ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS', theme?.defaultLanguages?.ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS || 'Customer almost arrived to business'), slug: 'ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS', percentage: 90 },
|
|
99
99
|
{ key: 21, value: t('ORDER_CUSTOMER_ARRIVED_BUSINESS', theme?.defaultLanguages?.ORDER_CUSTOMER_ARRIVED_BUSINESS || 'Customer arrived to business'), slug: 'ORDER_CUSTOMER_ARRIVED_BUSINESS', percentage: 95 },
|
|
100
100
|
{ key: 22, value: t('ORDER_LOOKING_FOR_DRIVER', theme?.defaultLanguages?.ORDER_LOOKING_FOR_DRIVER || 'Looking for driver'), slug: 'ORDER_LOOKING_FOR_DRIVER', percentage: 35 },
|
|
101
|
-
{ key: 23, value: t('ORDER_DRIVER_ON_WAY', theme?.defaultLanguages?.ORDER_DRIVER_ON_WAY
|
|
101
|
+
{ key: 23, value: t('ORDER_DRIVER_ON_WAY', theme?.defaultLanguages?.ORDER_DRIVER_ON_WAY || 'Driver on way'), slug: 'ORDER_DRIVER_ON_WAY', percentage: 45 }
|
|
102
102
|
]
|
|
103
103
|
|
|
104
104
|
const objectStatus = orderStatus.find((o) => o.key === status)
|
|
@@ -131,7 +131,7 @@ const OrderProgressUI = (props: any) => {
|
|
|
131
131
|
|
|
132
132
|
useEffect(() => {
|
|
133
133
|
if (isFocused) {
|
|
134
|
-
loadOrders()
|
|
134
|
+
loadOrders(false, false, false, true)
|
|
135
135
|
}
|
|
136
136
|
}, [isFocused])
|
|
137
137
|
|
|
@@ -188,7 +188,7 @@ const OrderProgressUI = (props: any) => {
|
|
|
188
188
|
<ProgressBar style={{ width: getOrderStatus(lastOrder.status)?.percentage ? `${getOrderStatus(lastOrder.status)?.percentage}%` : '0%' }} />
|
|
189
189
|
</ProgressContentWrapper>
|
|
190
190
|
<ProgressTextWrapper>
|
|
191
|
-
<OText size={12}>{getOrderStatus(lastOrder.status)?.value}</OText>
|
|
191
|
+
<OText size={12} style={{ width: '50%' }}>{getOrderStatus(lastOrder.status)?.value}</OText>
|
|
192
192
|
<TimeWrapper>
|
|
193
193
|
<OText size={11}>{t('ESTIMATED_DELIVERY', 'Estimated delivery')}</OText>
|
|
194
194
|
<OText size={11}>
|
|
@@ -218,7 +218,7 @@ export const OrderProgress = (props: any) => {
|
|
|
218
218
|
const orderProgressProps = {
|
|
219
219
|
...props,
|
|
220
220
|
UIComponent: OrderProgressUI,
|
|
221
|
-
orderStatus: [0, 3, 4, 7, 8, 9, 13, 14,
|
|
221
|
+
orderStatus: [0, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 21, 22, 23],
|
|
222
222
|
useDefualtSessionManager: true,
|
|
223
223
|
paginationSettings: {
|
|
224
224
|
initialPage: 1,
|