ordering-ui-react-native 0.15.34 → 0.15.37
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 +1 -1
- package/themes/original/index.tsx +11 -1
- package/themes/original/src/components/BusinessController/index.tsx +4 -1
- package/themes/original/src/components/BusinessProductsListing/index.tsx +15 -1
- package/themes/original/src/components/BusinessesListing/index.tsx +23 -21
- package/themes/original/src/components/OrderDetails/index.tsx +10 -2
- package/themes/original/src/components/ProductForm/index.tsx +16 -9
- package/themes/single-business/src/components/OrderTypeSelector/index.tsx +5 -5
package/package.json
CHANGED
|
@@ -7,11 +7,15 @@ import { SignupForm } from './src/components/SignupForm';
|
|
|
7
7
|
import { ActiveOrders } from './src/components/ActiveOrders';
|
|
8
8
|
import { AddressList } from './src/components/AddressList';
|
|
9
9
|
import { AppleLogin } from './src/components/AppleLogin';
|
|
10
|
+
import { BusinessBasicInformation } from './src/components/BusinessBasicInformation';
|
|
11
|
+
import { BusinessProductsCategories } from './src/components/BusinessProductsCategories';
|
|
12
|
+
import { BusinessProductsList } from './src/components/BusinessProductsList';
|
|
10
13
|
import { BusinessesListing } from './src/components/BusinessesListing';
|
|
11
14
|
import { BusinessProductsListing } from './src/components/BusinessProductsListing';
|
|
12
15
|
import { CartContent } from './src/components/CartContent';
|
|
13
16
|
import { BusinessCart } from './src/components/BusinessCart';
|
|
14
17
|
import { Checkout } from './src/components/Checkout';
|
|
18
|
+
import { FloatingButton } from './src/components/FloatingButton';
|
|
15
19
|
import { ForgotPasswordForm } from './src/components/ForgotPasswordForm';
|
|
16
20
|
import { MomentOption } from './src/components/MomentOption';
|
|
17
21
|
import { OrdersOption } from './src/components/OrdersOption';
|
|
@@ -33,6 +37,7 @@ import { HelpOrder } from './src/components/HelpOrder';
|
|
|
33
37
|
import { NetworkError } from './src/components/NetworkError';
|
|
34
38
|
import { NotFoundSource } from './src/components/NotFoundSource';
|
|
35
39
|
import { OrderTypeSelector } from './src/components/OrderTypeSelector';
|
|
40
|
+
import { SearchBar } from './src/components/SearchBar';
|
|
36
41
|
import { Wallets } from './src/components/Wallets';
|
|
37
42
|
import { PaymentOptionWallet } from './src/components/PaymentOptionWallet';
|
|
38
43
|
import { ProductForm } from './src/components/ProductForm';
|
|
@@ -94,7 +99,7 @@ export {
|
|
|
94
99
|
BusinessMenuList,
|
|
95
100
|
UserProfile,
|
|
96
101
|
MessageListing,
|
|
97
|
-
|
|
102
|
+
Messages,
|
|
98
103
|
Help,
|
|
99
104
|
HelpAccountAndPayment,
|
|
100
105
|
HelpGuide,
|
|
@@ -108,6 +113,11 @@ export {
|
|
|
108
113
|
UpsellingProducts,
|
|
109
114
|
UserVerification,
|
|
110
115
|
BusinessListingSearch,
|
|
116
|
+
BusinessBasicInformation,
|
|
117
|
+
BusinessProductsCategories,
|
|
118
|
+
BusinessProductsList,
|
|
119
|
+
FloatingButton,
|
|
120
|
+
SearchBar,
|
|
111
121
|
|
|
112
122
|
// OComponents
|
|
113
123
|
Toast,
|
|
@@ -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';
|
|
@@ -44,6 +45,8 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
|
|
|
44
45
|
const [orderState] = useOrder();
|
|
45
46
|
const [, t] = useLanguage();
|
|
46
47
|
const theme = useTheme()
|
|
48
|
+
const [{ configs }] = useConfig();
|
|
49
|
+
const isPreOrderSetting = configs?.preorder_status_enabled?.value === '1'
|
|
47
50
|
|
|
48
51
|
const styles = StyleSheet.create({
|
|
49
52
|
headerStyle: {
|
|
@@ -112,7 +115,7 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
|
|
|
112
115
|
};
|
|
113
116
|
|
|
114
117
|
const handleBusinessClick = (selectedBusiness: any) => {
|
|
115
|
-
if (business?.open) handleClick && handleClick(selectedBusiness)
|
|
118
|
+
if (business?.open || !isPreOrderSetting) handleClick && handleClick(selectedBusiness)
|
|
116
119
|
else {
|
|
117
120
|
navigation.navigate('BusinessPreorder', { business: selectedBusiness, handleBusinessClick: handleClick })
|
|
118
121
|
}
|
|
@@ -17,6 +17,7 @@ import { SearchBar } from '../SearchBar'
|
|
|
17
17
|
import { BusinessProductsCategories } from '../BusinessProductsCategories'
|
|
18
18
|
import { BusinessProductsList } from '../BusinessProductsList'
|
|
19
19
|
import { BusinessProductsListingParams } from '../../types'
|
|
20
|
+
import { _retrieveStoreData, _removeStoreData } from '../../providers/StoreUtil';
|
|
20
21
|
import {
|
|
21
22
|
TopHeader,
|
|
22
23
|
WrapSearchBar,
|
|
@@ -50,7 +51,7 @@ const BusinessProductsListingUI = (props: BusinessProductsListingParams) => {
|
|
|
50
51
|
const theme = useTheme();
|
|
51
52
|
const [, t] = useLanguage()
|
|
52
53
|
const [{ auth }] = useSession()
|
|
53
|
-
const [orderState] = useOrder()
|
|
54
|
+
const [orderState, { clearCart }] = useOrder()
|
|
54
55
|
const [{ parsePrice }] = useUtils()
|
|
55
56
|
const [, { showToast }] = useToast()
|
|
56
57
|
const [{ configs }] = useConfig()
|
|
@@ -163,6 +164,19 @@ const BusinessProductsListingUI = (props: BusinessProductsListingParams) => {
|
|
|
163
164
|
navigation?.canGoBack() ? navigation.goBack() : navigation.navigate('BottomTab')
|
|
164
165
|
}
|
|
165
166
|
|
|
167
|
+
const removeCartByReOrder = async () => {
|
|
168
|
+
const removeCardId = await _retrieveStoreData('remove-cartId')
|
|
169
|
+
if (currentCart && removeCardId) {
|
|
170
|
+
clearCart(removeCardId)
|
|
171
|
+
_removeStoreData('remove-cartId')
|
|
172
|
+
showToast(ToastType.Info, t('PRODUCT_REMOVED', 'Products removed from cart'))
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
useEffect(() => {
|
|
177
|
+
removeCartByReOrder()
|
|
178
|
+
}, [])
|
|
179
|
+
|
|
166
180
|
return (
|
|
167
181
|
<SafeAreaView
|
|
168
182
|
style={{ flex: 1 }}
|
|
@@ -61,7 +61,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
61
61
|
handleChangeSearch,
|
|
62
62
|
businessId
|
|
63
63
|
} = props;
|
|
64
|
-
|
|
64
|
+
|
|
65
65
|
const theme = useTheme();
|
|
66
66
|
const isFocused = useIsFocused();
|
|
67
67
|
const appState = useRef(AppState.currentState)
|
|
@@ -120,7 +120,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
120
120
|
|
|
121
121
|
const isPreorderEnabled = (configs?.preorder_status_enabled?.value === '1' || configs?.preorder_status_enabled?.value === 'true') &&
|
|
122
122
|
Number(configs?.max_days_preorder?.value) > 0
|
|
123
|
-
|
|
123
|
+
const isPreOrderSetting = configs?.preorder_status_enabled?.value === '1'
|
|
124
124
|
const timerId = useRef<any>(false)
|
|
125
125
|
// const panResponder = useRef(
|
|
126
126
|
// PanResponder.create({
|
|
@@ -266,25 +266,27 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
266
266
|
style={{ marginStart: 8 }}
|
|
267
267
|
/>
|
|
268
268
|
</WrapMomentOption>
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
269
|
+
{isPreOrderSetting && (
|
|
270
|
+
<WrapMomentOption
|
|
271
|
+
onPress={() => handleMomentClick()}>
|
|
272
|
+
<OText
|
|
273
|
+
size={12}
|
|
274
|
+
numberOfLines={1}
|
|
275
|
+
ellipsizeMode="tail"
|
|
276
|
+
color={theme.colors.textSecondary}>
|
|
277
|
+
{orderState.options?.momentß
|
|
278
|
+
? parseDate(orderState.options?.moment, { outputFormat: configs?.dates_moment_format?.value })
|
|
279
|
+
: t('ASAP_ABBREVIATION', 'ASAP')}
|
|
280
|
+
</OText>
|
|
281
|
+
{isPreorderEnabled && (
|
|
282
|
+
<OIcon
|
|
283
|
+
src={theme.images.general.arrow_down}
|
|
284
|
+
width={10}
|
|
285
|
+
style={{ marginStart: 8 }}
|
|
286
|
+
/>
|
|
287
|
+
)}
|
|
288
|
+
</WrapMomentOption>
|
|
289
|
+
)}
|
|
288
290
|
|
|
289
291
|
{!businessId && (
|
|
290
292
|
<SearchBar
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import React, { useState, useEffect } from 'react';
|
|
2
2
|
import { View, StyleSheet, BackHandler, Platform, Linking } from 'react-native';
|
|
3
3
|
import LinearGradient from 'react-native-linear-gradient';
|
|
4
|
+
import { _setStoreData } from '../../providers/StoreUtil';
|
|
4
5
|
import {
|
|
5
6
|
useLanguage,
|
|
6
7
|
OrderDetails as OrderDetailsConTableoller,
|
|
7
8
|
useUtils,
|
|
9
|
+
useOrder,
|
|
8
10
|
useConfig
|
|
9
11
|
} from 'ordering-components/native';
|
|
10
12
|
import { useTheme } from 'styled-components/native';
|
|
@@ -87,9 +89,10 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
87
89
|
const [, t] = useLanguage();
|
|
88
90
|
const [{ parsePrice, parseNumber, parseDate }] = useUtils();
|
|
89
91
|
const [{ configs }] = useConfig();
|
|
92
|
+
const [{ carts }] = useOrder()
|
|
93
|
+
|
|
90
94
|
const [isReviewed, setIsReviewed] = useState(false)
|
|
91
95
|
const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, tax: null, type: '' })
|
|
92
|
-
|
|
93
96
|
const { order, businessData } = props.order;
|
|
94
97
|
|
|
95
98
|
const walletName: any = {
|
|
@@ -362,7 +365,12 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
362
365
|
|
|
363
366
|
useEffect(() => {
|
|
364
367
|
if (reorderState?.error) {
|
|
365
|
-
|
|
368
|
+
const _businessId = 'businessId:' + businessData?.id
|
|
369
|
+
const _uuid = carts[_businessId]?.uuid
|
|
370
|
+
if (_uuid) {
|
|
371
|
+
_setStoreData('remove-cartId', JSON.stringify(_uuid))
|
|
372
|
+
navigation.navigate('Business', { store: businessData?.slug })
|
|
373
|
+
}
|
|
366
374
|
}
|
|
367
375
|
if (!reorderState?.error && reorderState?.result?.uuid) {
|
|
368
376
|
onNavigationRedirect && onNavigationRedirect('CheckoutNavigator', { cartUuid: reorderState?.result.uuid })
|
|
@@ -46,7 +46,6 @@ import { ProductOptionSubOption } from '../ProductOptionSubOption';
|
|
|
46
46
|
import { NotFoundSource } from '../NotFoundSource';
|
|
47
47
|
import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder';
|
|
48
48
|
import { useState } from 'react';
|
|
49
|
-
|
|
50
49
|
const windowHeight = Dimensions.get('window').height;
|
|
51
50
|
const windowWidth = Dimensions.get('window').width;
|
|
52
51
|
|
|
@@ -291,15 +290,23 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
291
290
|
if (img?.video) {
|
|
292
291
|
const keys = img?.video.split('/')
|
|
293
292
|
let _videoId = keys[keys.length - 1]
|
|
293
|
+
|
|
294
294
|
if (_videoId.includes('watch')) {
|
|
295
|
-
|
|
296
|
-
|
|
295
|
+
const __url = _videoId.split('=')[1]
|
|
296
|
+
_videoId = __url
|
|
297
|
+
} else if (_videoId.includes('?')) {
|
|
298
|
+
const __url = _videoId.split('?')[0]
|
|
299
|
+
_videoId = __url
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
if (_videoId.search(/&/i) >= 0) {
|
|
303
|
+
_videoId = _videoId.split('&')[0]
|
|
304
|
+
} else if (_videoId.search(/\?/i) >= 0) {
|
|
305
|
+
_videoId = _videoId.split('?')[0]
|
|
297
306
|
}
|
|
298
|
-
if (_videoId.
|
|
299
|
-
|
|
300
|
-
_videoId = __url
|
|
307
|
+
if ((_videoId.length === 11)) {
|
|
308
|
+
videoList.push(_videoId)
|
|
301
309
|
}
|
|
302
|
-
videoList.push(_videoId)
|
|
303
310
|
}
|
|
304
311
|
}
|
|
305
312
|
}
|
|
@@ -338,9 +345,9 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
338
345
|
</OText>
|
|
339
346
|
</TouchableOpacity>
|
|
340
347
|
)}
|
|
341
|
-
{options.map(({ id, name, respect_to }: any) => (
|
|
348
|
+
{options.map(({ id, name, respect_to, suboptions }: any) => (
|
|
342
349
|
<React.Fragment key={`cont_key_${id}`}>
|
|
343
|
-
{respect_to == null && (
|
|
350
|
+
{respect_to == null && suboptions?.length > 0 && (
|
|
344
351
|
<TouchableOpacity
|
|
345
352
|
key={`eopt_key_${id}`}
|
|
346
353
|
onPress={() => setSelectedOpt(id)}
|
|
@@ -97,27 +97,27 @@ export const OrderTypeSelector = (props: any) => {
|
|
|
97
97
|
{
|
|
98
98
|
value: 1,
|
|
99
99
|
content: t('DELIVERY', 'Delivery'),
|
|
100
|
-
description: t('ORDERTYPE_DESCRIPTION_DELIVERY', '
|
|
100
|
+
description: t('ORDERTYPE_DESCRIPTION_DELIVERY', 'Delivery description')
|
|
101
101
|
},
|
|
102
102
|
{
|
|
103
103
|
value: 2,
|
|
104
104
|
content: t('PICKUP', 'Pickup'),
|
|
105
|
-
description: t('ORDERTYPE_DESCRIPTION_PICKUP', '
|
|
105
|
+
description: t('ORDERTYPE_DESCRIPTION_PICKUP', 'Pickup description')
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
108
|
value: 3,
|
|
109
109
|
content: t('EAT_IN', 'Eat in'),
|
|
110
|
-
description: t('ORDERTYPE_DESCRIPTION_EATIN', '
|
|
110
|
+
description: t('ORDERTYPE_DESCRIPTION_EATIN', 'Eat in description')
|
|
111
111
|
},
|
|
112
112
|
{
|
|
113
113
|
value: 4,
|
|
114
114
|
content: t('CURBSIDE', 'Curbside'),
|
|
115
|
-
description: t('ORDERTYPE_DESCRIPTION_CURBSIDE', '
|
|
115
|
+
description: t('ORDERTYPE_DESCRIPTION_CURBSIDE', 'Curbside description')
|
|
116
116
|
},
|
|
117
117
|
{
|
|
118
118
|
value: 5,
|
|
119
119
|
content: t('DRIVE_THRU', 'Drive thru'),
|
|
120
|
-
description: t('ORDERTYPE_DESCRIPTION_DRIVETHRU', '
|
|
120
|
+
description: t('ORDERTYPE_DESCRIPTION_DRIVETHRU', 'Drive Thru description')
|
|
121
121
|
}
|
|
122
122
|
]
|
|
123
123
|
}
|