ordering-ui-react-native 0.17.66 → 0.17.67-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 +8 -7
- package/src/DeliveryApp.tsx +43 -1
- package/src/components/BusinessInformation/index.tsx +10 -9
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/OrderCreating/index.tsx +1 -21
- package/src/components/PaymentOptionsWebView/index.tsx +29 -8
- package/src/components/PhoneInputNumber/index.tsx +6 -2
- package/src/components/StripeMethodForm/index.tsx +136 -102
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/components/shared/OToast.tsx +2 -1
- package/src/types/index.tsx +5 -0
- package/src/utils/index.tsx +5 -0
- package/themes/business/index.tsx +2 -0
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +270 -245
- package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
- package/themes/business/src/components/BusinessController/index.tsx +0 -1
- package/themes/business/src/components/Chat/index.tsx +123 -111
- package/themes/business/src/components/DriverMap/index.tsx +17 -6
- package/themes/business/src/components/DriverSchedule/index.tsx +42 -5
- package/themes/business/src/components/GoogleMap/index.tsx +58 -57
- package/themes/business/src/components/LoginForm/Otp/index.tsx +31 -3
- package/themes/business/src/components/LoginForm/index.tsx +15 -22
- package/themes/business/src/components/MapView/index.tsx +10 -10
- package/themes/business/src/components/NewOrderNotification/index.tsx +35 -21
- package/themes/business/src/components/NotFoundSource/index.tsx +2 -2
- package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
- package/themes/business/src/components/OrderDetails/Delivery.tsx +191 -6
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +133 -65
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +64 -63
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
- package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
- package/themes/business/src/components/OrderMessage/index.tsx +19 -18
- package/themes/business/src/components/OrderSummary/index.tsx +114 -123
- package/themes/business/src/components/OrdersOption/index.tsx +32 -75
- package/themes/business/src/components/PreviousOrders/OrderItem.tsx +249 -0
- package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
- package/themes/business/src/components/PreviousOrders/index.tsx +444 -242
- package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
- package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
- package/themes/business/src/components/ReviewCustomer/index.tsx +30 -15
- package/themes/business/src/components/StoresList/index.tsx +3 -4
- package/themes/business/src/components/UserProfileForm/index.tsx +11 -13
- package/themes/business/src/components/shared/OLink.tsx +33 -13
- package/themes/business/src/components/shared/OModal.tsx +16 -9
- package/themes/business/src/components/shared/OText.tsx +8 -2
- package/themes/business/src/types/index.tsx +28 -12
- package/themes/business/src/utils/index.tsx +29 -2
- 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/Checkout/index.tsx +6 -0
- package/themes/kiosk/src/components/Intro/index.tsx +16 -1
- package/themes/kiosk/src/components/LoginForm/index.tsx +7 -9
- 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/OrderTypeCardSelector/index.tsx +8 -10
- package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +2 -2
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/original/index.tsx +4 -0
- package/themes/original/src/components/AddressDetails/index.tsx +19 -3
- package/themes/original/src/components/AddressForm/index.tsx +61 -39
- package/themes/original/src/components/AddressList/index.tsx +27 -22
- package/themes/original/src/components/AddressList/styles.tsx +4 -2
- package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
- package/themes/original/src/components/AppleLogin/index.tsx +4 -4
- package/themes/original/src/components/AppleLogin/styles.tsx +3 -1
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +153 -96
- package/themes/original/src/components/BusinessBasicInformation/styles.tsx +10 -12
- package/themes/original/src/components/BusinessController/index.tsx +94 -66
- package/themes/original/src/components/BusinessController/styles.tsx +22 -3
- package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
- package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
- package/themes/original/src/components/BusinessInformation/index.tsx +142 -109
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +15 -20
- package/themes/original/src/components/BusinessListingSearch/index.tsx +349 -339
- package/themes/original/src/components/BusinessListingSearch/styles.tsx +0 -18
- package/themes/original/src/components/BusinessPreorder/index.tsx +103 -19
- package/themes/original/src/components/BusinessProductsCategories/index.tsx +1 -2
- package/themes/original/src/components/BusinessProductsList/index.tsx +15 -7
- package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
- package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
- package/themes/original/src/components/BusinessProductsListing/index.tsx +684 -555
- package/themes/original/src/components/BusinessProductsListing/styles.tsx +2 -2
- package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
- package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
- package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +69 -38
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +0 -1
- package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
- package/themes/original/src/components/Cart/index.tsx +77 -50
- package/themes/original/src/components/CartContent/index.tsx +117 -20
- package/themes/original/src/components/CartContent/styles.tsx +17 -7
- package/themes/original/src/components/Checkout/index.tsx +356 -124
- package/themes/original/src/components/CitiesControl/index.tsx +1 -1
- package/themes/original/src/components/CouponControl/index.tsx +10 -3
- package/themes/original/src/components/DriverTips/index.tsx +52 -34
- package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
- package/themes/original/src/components/Favorite/index.tsx +8 -9
- package/themes/original/src/components/Favorite/styles.tsx +1 -1
- package/themes/original/src/components/FavoriteList/index.tsx +1 -35
- package/themes/original/src/components/FloatingButton/index.tsx +1 -2
- package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
- package/themes/original/src/components/GPSButton/index.tsx +6 -4
- package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +96 -0
- package/themes/original/src/components/GiftCard/GiftCardUI/styles.tsx +5 -0
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +100 -0
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +8 -0
- package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +191 -0
- package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +8 -0
- package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +165 -0
- package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +9 -0
- package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
- package/themes/original/src/components/GoogleMap/index.tsx +60 -5
- package/themes/original/src/components/Help/index.tsx +8 -8
- package/themes/original/src/components/HelpAccountAndPayment/index.tsx +10 -31
- package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +5 -3
- package/themes/original/src/components/HelpGuide/index.tsx +6 -6
- package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
- package/themes/original/src/components/HelpOrder/index.tsx +6 -15
- package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
- package/themes/original/src/components/Home/index.tsx +13 -4
- package/themes/original/src/components/LastOrder/index.tsx +1 -34
- package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -31
- package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
- package/themes/original/src/components/LoginForm/index.tsx +64 -34
- package/themes/original/src/components/LottieAnimation/index.tsx +89 -55
- package/themes/original/src/components/MessageListing/index.tsx +16 -42
- package/themes/original/src/components/Messages/index.tsx +29 -7
- package/themes/original/src/components/MomentOption/index.tsx +195 -90
- package/themes/original/src/components/MomentSelector/index.tsx +1 -1
- package/themes/original/src/components/MultiCart/index.tsx +50 -0
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +162 -51
- package/themes/original/src/components/MultiCheckout/index.tsx +330 -99
- package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
- package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +68 -21
- package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
- package/themes/original/src/components/MyOrders/index.tsx +40 -29
- package/themes/original/src/components/NavBar/index.tsx +20 -17
- package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
- package/themes/original/src/components/Notifications/index.tsx +46 -50
- package/themes/original/src/components/Notifications/styles.tsx +6 -3
- package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +21 -5
- package/themes/original/src/components/OrderDetails/index.tsx +191 -363
- package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
- package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
- package/themes/original/src/components/OrderProgress/index.tsx +30 -56
- package/themes/original/src/components/OrderSummary/index.tsx +88 -59
- package/themes/original/src/components/OrderTypeSelector/index.tsx +2 -1
- package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +14 -14
- package/themes/original/src/components/OrdersOption/index.tsx +78 -67
- package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
- package/themes/original/src/components/PageBanner/index.tsx +98 -38
- package/themes/original/src/components/PageBanner/styles.tsx +0 -10
- package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
- package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
- package/themes/original/src/components/PaymentOptions/index.tsx +78 -35
- package/themes/original/src/components/PhoneInputNumber/index.tsx +3 -3
- package/themes/original/src/components/ProductForm/index.tsx +105 -30
- package/themes/original/src/components/ProductForm/styles.tsx +5 -5
- package/themes/original/src/components/ProductItemAccordion/index.tsx +14 -11
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +20 -18
- package/themes/original/src/components/ProductOptionSubOption/styles.tsx +5 -9
- package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
- package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
- package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
- package/themes/original/src/components/Promotions/index.tsx +5 -4
- package/themes/original/src/components/Promotions/styles.tsx +3 -1
- package/themes/original/src/components/ReviewOrder/index.tsx +26 -9
- package/themes/original/src/components/ReviewOrder/styles.tsx +7 -0
- package/themes/original/src/components/ReviewProducts/index.tsx +16 -7
- package/themes/original/src/components/ReviewTrigger/index.tsx +27 -9
- package/themes/original/src/components/ReviewTrigger/styles.tsx +8 -1
- package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
- package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
- package/themes/original/src/components/ServiceForm/index.tsx +66 -17
- package/themes/original/src/components/Sessions/index.tsx +11 -8
- package/themes/original/src/components/Sessions/styles.tsx +5 -0
- package/themes/original/src/components/SignupForm/index.tsx +43 -27
- package/themes/original/src/components/SingleOrderCard/index.tsx +130 -56
- package/themes/original/src/components/SingleOrderCard/styles.tsx +11 -2
- package/themes/original/src/components/SingleProductCard/index.tsx +72 -31
- package/themes/original/src/components/SingleProductCard/styles.tsx +20 -4
- package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
- package/themes/original/src/components/StripeCardsList/index.tsx +49 -5
- package/themes/original/src/components/StripeElementsForm/index.tsx +48 -34
- package/themes/original/src/components/StripeElementsForm/naked.tsx +12 -1
- package/themes/original/src/components/UpsellingProducts/index.tsx +238 -224
- package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
- package/themes/original/src/components/UserDetails/index.tsx +3 -1
- package/themes/original/src/components/UserFormDetails/index.tsx +76 -7
- package/themes/original/src/components/UserFormDetails/styles.tsx +1 -1
- package/themes/original/src/components/UserProfile/index.tsx +88 -79
- package/themes/original/src/components/UserProfileForm/index.tsx +27 -29
- package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
- package/themes/original/src/components/UserVerification/index.tsx +52 -49
- package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
- package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
- package/themes/original/src/components/Wallets/index.tsx +66 -30
- package/themes/original/src/components/Wallets/styles.tsx +3 -4
- package/themes/original/src/components/shared/OButton.tsx +6 -2
- package/themes/original/src/components/shared/OInput.tsx +6 -1
- package/themes/original/src/components/shared/OModal.tsx +3 -3
- package/themes/original/src/types/index.tsx +42 -10
- package/themes/original/src/utils/index.tsx +273 -1
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
|
@@ -7,7 +7,7 @@ export const TopHeader = styled.View`
|
|
|
7
7
|
width: 100%;
|
|
8
8
|
flex-direction: row;
|
|
9
9
|
align-items: center;
|
|
10
|
-
justify-content: space-between;
|
|
10
|
+
justify-content: ${({ hideArrow }: any) => hideArrow ? 'flex-end' : 'space-between'};
|
|
11
11
|
z-index: 1;
|
|
12
12
|
height: 60px;
|
|
13
13
|
min-height: 60px;
|
|
@@ -24,7 +24,7 @@ export const WrapSearchBar = styled.View`
|
|
|
24
24
|
flex: 1;
|
|
25
25
|
`
|
|
26
26
|
export const WrapContent = styled.View`
|
|
27
|
-
padding: 10px
|
|
27
|
+
padding-vertical: 10px;
|
|
28
28
|
`
|
|
29
29
|
|
|
30
30
|
export const BusinessProductsListingContainer = styled.ScrollView`
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
BusinessReviews as BusinessReviewController,
|
|
4
4
|
useLanguage,
|
|
5
5
|
useOrder,
|
|
6
|
+
useUtils
|
|
6
7
|
} from 'ordering-components/native';
|
|
7
8
|
import { useTheme } from 'styled-components/native';
|
|
8
9
|
import IconAntDesign from 'react-native-vector-icons/AntDesign';
|
|
@@ -30,6 +31,7 @@ const BusinessReviewsUI = (props: BusinessReviewsParams) => {
|
|
|
30
31
|
const theme = useTheme();
|
|
31
32
|
const [searchReview, setSearchReview] = useState('')
|
|
32
33
|
const [orderState] = useOrder();
|
|
34
|
+
const [{ parseDate }] = useUtils()
|
|
33
35
|
|
|
34
36
|
const styles = StyleSheet.create({
|
|
35
37
|
starIcon: {
|
|
@@ -94,7 +96,7 @@ const BusinessReviewsUI = (props: BusinessReviewsParams) => {
|
|
|
94
96
|
const ReviewItem = ({ comment, created_at, total }: any) => (
|
|
95
97
|
<View style={{ marginBottom: 30 }}>
|
|
96
98
|
<OText size={12} color={theme.colors.textSecondary}>
|
|
97
|
-
{
|
|
99
|
+
{parseDate(created_at, { outputFormat: 'MMMM D, YYYY • hh:mm A' })}
|
|
98
100
|
</OText>
|
|
99
101
|
<OText size={12} color={theme.colors.textNormal}>{comment}</OText>
|
|
100
102
|
</View>
|
|
@@ -284,7 +284,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
284
284
|
style={{ paddingTop: top + 20 }}>
|
|
285
285
|
{!auth && (
|
|
286
286
|
<TouchableOpacity onPress={() => navigation?.canGoBack() && navigation.goBack()} style={{ position: 'absolute', marginStart: 40, paddingVertical: 20 }}>
|
|
287
|
-
<
|
|
287
|
+
<OIcon src={theme.images.general.arrow_left} color={theme.colors.textNormal} />
|
|
288
288
|
</TouchableOpacity>
|
|
289
289
|
)}
|
|
290
290
|
<Search>
|
|
@@ -18,8 +18,7 @@ import {
|
|
|
18
18
|
useSession,
|
|
19
19
|
useOrder,
|
|
20
20
|
useConfig,
|
|
21
|
-
useUtils
|
|
22
|
-
useOrderingTheme
|
|
21
|
+
useUtils
|
|
23
22
|
} from 'ordering-components/native';
|
|
24
23
|
import { useTheme } from 'styled-components/native';
|
|
25
24
|
import Ionicons from 'react-native-vector-icons/Ionicons'
|
|
@@ -74,13 +73,26 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
74
73
|
logosLayout
|
|
75
74
|
} = props;
|
|
76
75
|
const theme = useTheme();
|
|
77
|
-
const [orderingTheme] = useOrderingTheme()
|
|
78
76
|
const isFocused = useIsFocused();
|
|
77
|
+
|
|
78
|
+
const [, t] = useLanguage();
|
|
79
|
+
const [{ user, auth }] = useSession();
|
|
80
|
+
const [orderState, { changeCityFilter }] = useOrder();
|
|
81
|
+
const [{ configs }] = useConfig();
|
|
82
|
+
const [{ parseDate }] = useUtils();
|
|
83
|
+
|
|
79
84
|
const appState = useRef(AppState.currentState)
|
|
80
|
-
const isChewLayout = theme?.header?.components?.layout?.type === 'chew'
|
|
81
|
-
const hideCities = theme?.business_listing_view?.components?.cities?.hidden ?? true
|
|
85
|
+
const isChewLayout = theme?.header?.components?.layout?.type?.toLowerCase() === 'chew'
|
|
82
86
|
const [refreshing] = useState(false);
|
|
83
|
-
const
|
|
87
|
+
const allCitiesDisabled = citiesState?.cities?.every((city: any) => !city.enabled)
|
|
88
|
+
const hideCities = (theme?.business_listing_view?.components?.cities?.hidden || orderState?.options?.type !== 2 || allCitiesDisabled) ?? true
|
|
89
|
+
const hideHero = theme?.business_listing_view?.components?.business_hero?.hidden
|
|
90
|
+
const hidePreviousOrders = theme?.business_listing_view?.components?.previous_orders_block?.hidden
|
|
91
|
+
const hideHighestBusiness = theme?.business_listing_view?.components?.highest_rated_business_block?.hidden
|
|
92
|
+
const isAllCategoriesHidden = theme?.business_listing_view?.components?.categories?.hidden
|
|
93
|
+
const bgHeader = theme?.business_listing_view?.components?.business_hero?.components?.image
|
|
94
|
+
const bgHeaderHeight = theme?.business_listing_view?.components?.business_hero?.components?.style?.height
|
|
95
|
+
|
|
84
96
|
const styles = StyleSheet.create({
|
|
85
97
|
container: {
|
|
86
98
|
marginBottom: 0,
|
|
@@ -144,19 +156,12 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
144
156
|
},
|
|
145
157
|
});
|
|
146
158
|
|
|
147
|
-
|
|
148
|
-
const [, t] = useLanguage();
|
|
149
|
-
const [{ user, auth }] = useSession();
|
|
150
|
-
const [orderState, { changeCityFilter }] = useOrder();
|
|
151
|
-
const [{ configs }] = useConfig();
|
|
152
|
-
const [{ parseDate }] = useUtils();
|
|
153
|
-
|
|
154
159
|
const { top } = useSafeAreaInsets();
|
|
155
160
|
|
|
156
161
|
const [featuredBusiness, setFeaturedBusinesses] = useState(Array);
|
|
157
162
|
const [isFarAway, setIsFarAway] = useState(false)
|
|
158
163
|
const [businessTypes, setBusinessTypes] = useState(null)
|
|
159
|
-
const [orderTypeValue, setOrderTypeValue] = useState(orderState?.options
|
|
164
|
+
const [orderTypeValue, setOrderTypeValue] = useState(orderState?.options?.value)
|
|
160
165
|
const [isOpenCities, setIsOpenCities] = useState(false)
|
|
161
166
|
const isPreorderEnabled = (configs?.preorder_status_enabled?.value === '1' || configs?.preorder_status_enabled?.value === 'true') &&
|
|
162
167
|
Number(configs?.max_days_preorder?.value) > 0
|
|
@@ -220,7 +225,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
220
225
|
|
|
221
226
|
useEffect(() => {
|
|
222
227
|
if (!businessesList?.loading) {
|
|
223
|
-
const fb = businessesList.businesses.filter((b) => b
|
|
228
|
+
const fb = businessesList.businesses.filter((b) => b?.featured && b?.open);
|
|
224
229
|
const ary = [];
|
|
225
230
|
while (fb.length > 0) {
|
|
226
231
|
ary.push(fb.splice(0, 2));
|
|
@@ -289,6 +294,12 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
289
294
|
setIsOpenCities(false)
|
|
290
295
|
}, [orderState?.options?.city_id])
|
|
291
296
|
|
|
297
|
+
useEffect(() => {
|
|
298
|
+
if (!citiesState?.cities?.length || !orderState?.options?.city_id) return
|
|
299
|
+
const selectedCity = citiesState?.cities?.find((city: any) => city?.id === orderState?.options?.city_id)
|
|
300
|
+
if (!selectedCity || !selectedCity?.enabled) changeCityFilter(null)
|
|
301
|
+
}, [citiesState, orderState?.options?.city_id])
|
|
302
|
+
|
|
292
303
|
if (logosLayout) {
|
|
293
304
|
return (
|
|
294
305
|
<BusinessLogosContainer
|
|
@@ -364,7 +375,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
364
375
|
)}
|
|
365
376
|
<View style={{
|
|
366
377
|
height: !isPreOrderSetting && isChewLayout ? 150 : isChewLayout ? 200 : isFarAway ? 150 : 100,
|
|
367
|
-
marginTop: Platform.OS == 'ios' ? 0 : 50,
|
|
378
|
+
marginTop: isChewLayout ? 0 : Platform.OS == 'ios' ? 0 : 50,
|
|
368
379
|
backgroundColor: isChewLayout ? theme?.colors?.chew : theme.colors?.white
|
|
369
380
|
}}
|
|
370
381
|
>
|
|
@@ -466,18 +477,30 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
466
477
|
)}
|
|
467
478
|
</View>
|
|
468
479
|
{!isChewLayout ? (
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
480
|
+
<>
|
|
481
|
+
{!hideHero ? (
|
|
482
|
+
<HeaderWrapper
|
|
483
|
+
source={bgHeader ? { uri: bgHeader } : theme.images.backgrounds.business_list_header}
|
|
484
|
+
style={{ paddingTop: top + 20 }}
|
|
485
|
+
resizeMode='cover'
|
|
486
|
+
bgHeaderHeight={bgHeaderHeight}
|
|
487
|
+
>
|
|
488
|
+
{!auth && (
|
|
489
|
+
<TouchableOpacity onPress={() => navigation?.canGoBack() && navigation.goBack()} style={{ position: 'absolute', marginStart: 40, paddingVertical: 20 }}>
|
|
490
|
+
<OIcon src={theme.images.general.arrow_left} color={theme.colors.textNormal} />
|
|
491
|
+
</TouchableOpacity>
|
|
492
|
+
)}
|
|
493
|
+
</HeaderWrapper>
|
|
494
|
+
) : (
|
|
495
|
+
<>
|
|
496
|
+
{!auth && (
|
|
497
|
+
<TouchableOpacity onPress={() => navigation?.canGoBack() && navigation.goBack()} style={{ position: 'absolute', marginStart: 40, paddingVertical: 20 }}>
|
|
498
|
+
<OIcon src={theme.images.general.arrow_left} color={theme.colors.textNormal} />
|
|
499
|
+
</TouchableOpacity>
|
|
500
|
+
)}
|
|
501
|
+
</>
|
|
479
502
|
)}
|
|
480
|
-
|
|
503
|
+
</>
|
|
481
504
|
) : (
|
|
482
505
|
<OrderTypesContainer>
|
|
483
506
|
<OrderTypeSelector
|
|
@@ -502,10 +525,12 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
502
525
|
</TouchableOpacity>
|
|
503
526
|
</View>
|
|
504
527
|
)}
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
528
|
+
{!hidePreviousOrders && (
|
|
529
|
+
<OrderProgress
|
|
530
|
+
{...props}
|
|
531
|
+
isFocused={isFocused}
|
|
532
|
+
/>
|
|
533
|
+
)}
|
|
509
534
|
{
|
|
510
535
|
!businessId && !props.franchiseId && featuredBusiness && featuredBusiness.length > 0 && (
|
|
511
536
|
<FeaturedWrapper>
|
|
@@ -538,12 +563,13 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
538
563
|
</FeaturedWrapper>
|
|
539
564
|
)
|
|
540
565
|
}
|
|
541
|
-
{!isChewLayout && (
|
|
566
|
+
{!isChewLayout && !hideHighestBusiness && (
|
|
542
567
|
<>
|
|
543
568
|
<View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100 }} />
|
|
544
569
|
{
|
|
545
570
|
!businessId && !props.franchiseId && (
|
|
546
571
|
<HighestRatedBusinesses
|
|
572
|
+
propsToFetch={props.propsToFetch}
|
|
547
573
|
onBusinessClick={handleBusinessClick}
|
|
548
574
|
navigation={navigation}
|
|
549
575
|
favoriteIds={favoriteIds}
|
|
@@ -554,11 +580,11 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
554
580
|
</>
|
|
555
581
|
)}
|
|
556
582
|
|
|
557
|
-
<PageBanner position='app_business_listing' />
|
|
583
|
+
<PageBanner position='app_business_listing' navigation={navigation} />
|
|
558
584
|
|
|
559
585
|
<View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100 }} />
|
|
560
|
-
<ListWrapper>
|
|
561
|
-
{!businessId && (
|
|
586
|
+
<ListWrapper style={{ paddingHorizontal: isChewLayout ? 20 : 40 }}>
|
|
587
|
+
{!businessId && !isAllCategoriesHidden && (
|
|
562
588
|
<BusinessTypeFilter
|
|
563
589
|
images={props.images}
|
|
564
590
|
businessTypes={props.businessTypes}
|
|
@@ -567,7 +593,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
567
593
|
setBusinessTypes={setBusinessTypes}
|
|
568
594
|
/>
|
|
569
595
|
)}
|
|
570
|
-
{!businessesList.loading && businessesList.businesses.length === 0 && (
|
|
596
|
+
{!businessesList.loading && businessesList.businesses.length === 0 && businessesList?.fetched && (
|
|
571
597
|
<NotFoundSource
|
|
572
598
|
content={t(
|
|
573
599
|
'NOT_FOUND_BUSINESSES',
|
|
@@ -580,7 +606,6 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
580
606
|
<BusinessController
|
|
581
607
|
key={`${business.id}_` + i}
|
|
582
608
|
enableIntersection
|
|
583
|
-
isCustomLayout={isChewLayout}
|
|
584
609
|
business={business}
|
|
585
610
|
isBusinessOpen={business.open}
|
|
586
611
|
handleCustomClick={handleBusinessClick}
|
|
@@ -600,7 +625,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
600
625
|
/>
|
|
601
626
|
)
|
|
602
627
|
)}
|
|
603
|
-
{businessesList.loading && (
|
|
628
|
+
{(businessesList.loading || !businessesList?.fetched) && (
|
|
604
629
|
<>
|
|
605
630
|
{[
|
|
606
631
|
...Array(
|
|
@@ -668,10 +693,16 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
668
693
|
};
|
|
669
694
|
|
|
670
695
|
export const BusinessesListing = (props: BusinessesListingParams) => {
|
|
696
|
+
|
|
671
697
|
const BusinessesListingProps = {
|
|
672
698
|
...props,
|
|
673
699
|
isForceSearch: Platform.OS === 'ios',
|
|
674
700
|
UIComponent: BusinessesListingUI,
|
|
701
|
+
paginationSettings: {
|
|
702
|
+
initialPage: 1,
|
|
703
|
+
pageSize: 50,
|
|
704
|
+
controlType: 'infinity'
|
|
705
|
+
}
|
|
675
706
|
};
|
|
676
707
|
|
|
677
708
|
return <BusinessesListingController {...BusinessesListingProps} />;
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
useValidationFields,
|
|
9
9
|
} from 'ordering-components/native';
|
|
10
10
|
import { useTheme } from 'styled-components/native';
|
|
11
|
-
import { CContainer, CheckoutAction,
|
|
11
|
+
import { CContainer, CheckoutAction, DriverTipsContainer } from './styles';
|
|
12
12
|
|
|
13
13
|
import { OSBill, OSTable, OSCoupon, OSTotal, OSRow } from '../OrderSummary/styles';
|
|
14
14
|
|
|
@@ -23,7 +23,7 @@ import { ActivityIndicator, TouchableOpacity, View } from 'react-native';
|
|
|
23
23
|
import AntIcon from 'react-native-vector-icons/AntDesign'
|
|
24
24
|
import { TaxInformation } from '../TaxInformation';
|
|
25
25
|
import { CartStoresListing } from '../CartStoresListing';
|
|
26
|
-
import { OAlert } from '
|
|
26
|
+
import { OAlert } from '../shared'
|
|
27
27
|
import { PlaceSpot } from '../PlaceSpot'
|
|
28
28
|
import { DriverTips } from '../DriverTips'
|
|
29
29
|
|
|
@@ -41,7 +41,17 @@ const CartUI = (props: any) => {
|
|
|
41
41
|
commentState,
|
|
42
42
|
onNavigationRedirect,
|
|
43
43
|
handleRemoveOfferClick,
|
|
44
|
-
isMultiCheckout
|
|
44
|
+
isMultiCheckout,
|
|
45
|
+
hideDeliveryFee,
|
|
46
|
+
hideDriverTip,
|
|
47
|
+
hideCouponInput,
|
|
48
|
+
preorderSlotInterval,
|
|
49
|
+
preorderLeadTime,
|
|
50
|
+
preorderTimeRange,
|
|
51
|
+
preorderMaximumDays,
|
|
52
|
+
preorderMinimumDays,
|
|
53
|
+
cateringTypes,
|
|
54
|
+
isFromUpselling
|
|
45
55
|
} = props
|
|
46
56
|
|
|
47
57
|
const theme = useTheme();
|
|
@@ -56,18 +66,15 @@ const CartUI = (props: any) => {
|
|
|
56
66
|
const [openChangeStore, setOpenChangeStore] = useState(false)
|
|
57
67
|
const [canOpenUpselling, setCanOpenUpselling] = useState(false)
|
|
58
68
|
const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, data: null, type: '' })
|
|
59
|
-
const [confirm, setConfirm] = useState<any>({ open: false, content: null, handleOnAccept: null, id: null, title: null })
|
|
60
69
|
const [openPlaceModal, setOpenPlaceModal] = useState(false)
|
|
61
70
|
|
|
62
71
|
const isCartPending = cart?.status === 2
|
|
63
72
|
const isCouponEnabled = validationFields?.fields?.checkout?.coupon?.enabled
|
|
64
|
-
const isCheckoutMultiBusinessEnabled: Boolean = configs?.checkout_multi_business_enabled?.value === '1'
|
|
65
|
-
const openCarts = (Object.values(orderState?.carts)?.filter((cart: any) => cart?.products && cart?.products?.length && cart?.status !== 2 && cart?.valid_schedule && cart?.valid_products && cart?.valid_address && cart?.valid_maximum && cart?.valid_minimum && !cart?.wallets) || null) || []
|
|
66
|
-
|
|
67
73
|
const business: any = (orderState?.carts && Object.values(orderState.carts).find((_cart: any) => _cart?.uuid === props.cartuuid)) ?? {}
|
|
68
74
|
const businessId = business?.business_id ?? null
|
|
69
75
|
const placeSpotTypes = [4]
|
|
70
|
-
|
|
76
|
+
const hideCartComments = theme?.business_view?.components?.cart?.components?.comments?.hidden
|
|
77
|
+
const hideCartDiscount = theme?.business_view?.components?.cart?.components?.discount?.hidden
|
|
71
78
|
const driverTipsOptions = typeof configs?.driver_tip_options?.value === 'string'
|
|
72
79
|
? JSON.parse(configs?.driver_tip_options?.value) || []
|
|
73
80
|
: configs?.driver_tip_options?.value || []
|
|
@@ -101,21 +108,45 @@ const CartUI = (props: any) => {
|
|
|
101
108
|
}
|
|
102
109
|
}
|
|
103
110
|
|
|
104
|
-
const handleUpsellingPage = () => {
|
|
111
|
+
const handleUpsellingPage = (individualCart : any) => {
|
|
112
|
+
const isProductCartParam = !!individualCart?.products?.length
|
|
105
113
|
setOpenUpselling(false)
|
|
106
114
|
setCanOpenUpselling(false)
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
115
|
+
|
|
116
|
+
const cartsAvailable: any = Object.values(orderState?.carts)
|
|
117
|
+
?.filter((_cart: any) => _cart?.valid && _cart?.status !== 2 && _cart?.products?.length)
|
|
118
|
+
?.filter((_c: any) => !isProductCartParam ? _c.uuid !== individualCart?.uuid : _c)
|
|
119
|
+
if (cartsAvailable.length === 1 || !isMultiCheckout) {
|
|
120
|
+
const cart = isMultiCheckout ? cartsAvailable[0] : individualCart
|
|
121
|
+
onNavigationRedirect('CheckoutNavigator', {
|
|
113
122
|
screen: 'CheckoutPage',
|
|
114
123
|
cartUuid: cart?.uuid,
|
|
115
124
|
businessLogo: cart?.business?.logo,
|
|
116
125
|
businessName: cart?.business?.name,
|
|
117
126
|
cartTotal: cart?.total
|
|
127
|
+
}, true)
|
|
128
|
+
} else {
|
|
129
|
+
const groupKeys: any = {}
|
|
130
|
+
cartsAvailable.forEach((_cart: any) => {
|
|
131
|
+
groupKeys[_cart?.group?.uuid]
|
|
132
|
+
? groupKeys[_cart?.group?.uuid] += 1
|
|
133
|
+
: groupKeys[_cart?.group?.uuid ?? 'null'] = 1
|
|
118
134
|
})
|
|
135
|
+
|
|
136
|
+
if (
|
|
137
|
+
(Object.keys(groupKeys).length === 1 && Object.keys(groupKeys)[0] === 'null') ||
|
|
138
|
+
Object.keys(groupKeys).length > 1
|
|
139
|
+
) {
|
|
140
|
+
onNavigationRedirect('CheckoutNavigator', {
|
|
141
|
+
screen: 'MultiCheckout',
|
|
142
|
+
checkCarts: true
|
|
143
|
+
}, true)
|
|
144
|
+
} else {
|
|
145
|
+
onNavigationRedirect('CheckoutNavigator', {
|
|
146
|
+
screen: 'MultiCheckout',
|
|
147
|
+
cartUuid: cartsAvailable[0]?.group?.uuid
|
|
148
|
+
}, true)
|
|
149
|
+
}
|
|
119
150
|
}
|
|
120
151
|
}
|
|
121
152
|
|
|
@@ -133,16 +164,16 @@ const CartUI = (props: any) => {
|
|
|
133
164
|
return cart?.taxes?.filter((tax: any) => tax?.type === 1)?.reduce((carry: number, tax: any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
|
|
134
165
|
}
|
|
135
166
|
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
167
|
+
const OfferAlert = ({ offerId }: any) => {
|
|
168
|
+
return (
|
|
169
|
+
<OAlert
|
|
170
|
+
title={t('OFFER', 'Offer')}
|
|
171
|
+
message={t('QUESTION_DELETE_OFFER', 'Are you sure that you want to delete the offer?')}
|
|
172
|
+
onAccept={() => handleRemoveOfferClick(offerId)}
|
|
173
|
+
>
|
|
174
|
+
<AntIcon style={{ marginLeft: 3 }} name='closecircle' size={16} color={theme.colors.primary} />
|
|
175
|
+
</OAlert>
|
|
176
|
+
)
|
|
146
177
|
}
|
|
147
178
|
|
|
148
179
|
const walletName: any = {
|
|
@@ -186,12 +217,14 @@ const CartUI = (props: any) => {
|
|
|
186
217
|
handleClickCheckout={() => setOpenUpselling(true)}
|
|
187
218
|
checkoutButtonDisabled={(openUpselling && !canOpenUpselling) || subtotalWithTaxes < cart?.minimum || !cart?.valid_address}
|
|
188
219
|
isMultiCheckout={isMultiCheckout}
|
|
220
|
+
isFromUpselling={isFromUpselling}
|
|
189
221
|
>
|
|
190
222
|
{cart?.products?.length > 0 && cart?.products.map((product: any, i: number) => (
|
|
191
223
|
<ProductItemAccordion
|
|
192
224
|
key={`${product.code}_${i}`}
|
|
193
225
|
isCartPending={isCartPending}
|
|
194
226
|
isCartProduct
|
|
227
|
+
isDisabledEdit={!cart?.business_id}
|
|
195
228
|
product={product}
|
|
196
229
|
changeQuantity={changeQuantity}
|
|
197
230
|
getProductMax={getProductMax}
|
|
@@ -233,9 +266,9 @@ const CartUI = (props: any) => {
|
|
|
233
266
|
<TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_1' })}>
|
|
234
267
|
<AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
|
|
235
268
|
</TouchableOpacity>
|
|
236
|
-
|
|
237
|
-
<
|
|
238
|
-
|
|
269
|
+
{!!offer?.id && (
|
|
270
|
+
<OfferAlert offerId={offer?.id} />
|
|
271
|
+
)}
|
|
239
272
|
</OSRow>
|
|
240
273
|
<OText size={12} lineHeight={18}>
|
|
241
274
|
- {parsePrice(offer?.summary?.discount)}
|
|
@@ -297,9 +330,9 @@ const CartUI = (props: any) => {
|
|
|
297
330
|
<TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_3' })}>
|
|
298
331
|
<AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
|
|
299
332
|
</TouchableOpacity>
|
|
300
|
-
|
|
301
|
-
<
|
|
302
|
-
|
|
333
|
+
{!!offer?.id && (
|
|
334
|
+
<OfferAlert offerId={offer?.id} />
|
|
335
|
+
)}
|
|
303
336
|
</OSRow>
|
|
304
337
|
<OText size={12} lineHeight={18}>
|
|
305
338
|
- {parsePrice(offer?.summary?.discount)}
|
|
@@ -307,10 +340,10 @@ const CartUI = (props: any) => {
|
|
|
307
340
|
</OSTable>
|
|
308
341
|
))
|
|
309
342
|
}
|
|
310
|
-
{orderState?.options?.type === 1 && cart?.
|
|
343
|
+
{orderState?.options?.type === 1 && cart?.delivery_price_with_discount > 0 && !hideDeliveryFee && (
|
|
311
344
|
<OSTable>
|
|
312
345
|
<OText size={12} lineHeight={18}>{t('DELIVERY_FEE', 'Delivery Fee')}</OText>
|
|
313
|
-
<OText size={12} lineHeight={18}>{parsePrice(cart?.
|
|
346
|
+
<OText size={12} lineHeight={18}>{parsePrice(cart?.delivery_price_with_discount)}</OText>
|
|
314
347
|
</OSTable>
|
|
315
348
|
)}
|
|
316
349
|
{
|
|
@@ -324,9 +357,9 @@ const CartUI = (props: any) => {
|
|
|
324
357
|
<TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_2' })}>
|
|
325
358
|
<AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
|
|
326
359
|
</TouchableOpacity>
|
|
327
|
-
|
|
328
|
-
<
|
|
329
|
-
|
|
360
|
+
{!!offer?.id && (
|
|
361
|
+
<OfferAlert offerId={offer?.id} />
|
|
362
|
+
)}
|
|
330
363
|
</OSRow>
|
|
331
364
|
<OText size={12} lineHeight={18}>
|
|
332
365
|
- {parsePrice(offer?.summary?.discount)}
|
|
@@ -334,7 +367,7 @@ const CartUI = (props: any) => {
|
|
|
334
367
|
</OSTable>
|
|
335
368
|
))
|
|
336
369
|
}
|
|
337
|
-
{cart?.driver_tip > 0 && (
|
|
370
|
+
{cart?.driver_tip > 0 && !hideDriverTip && (
|
|
338
371
|
<OSTable>
|
|
339
372
|
<OText size={12} lineHeight={18}>
|
|
340
373
|
{t('DRIVER_TIP', 'Driver tip')}
|
|
@@ -356,18 +389,19 @@ const CartUI = (props: any) => {
|
|
|
356
389
|
<OText size={12}>-{parsePrice(event.amount, { isTruncable: true })}</OText>
|
|
357
390
|
</OSTable>
|
|
358
391
|
))}
|
|
359
|
-
{isCouponEnabled && !isCartPending && (
|
|
392
|
+
{isCouponEnabled && !isCartPending && !hideCouponInput && (
|
|
360
393
|
<OSTable>
|
|
361
394
|
<OSCoupon>
|
|
362
395
|
<CouponControl
|
|
363
396
|
businessId={businessId}
|
|
364
397
|
price={cart.total}
|
|
398
|
+
cart={cart}
|
|
365
399
|
/>
|
|
366
400
|
</OSCoupon>
|
|
367
401
|
</OSTable>
|
|
368
402
|
)}
|
|
369
403
|
|
|
370
|
-
{isMultiCheckout &&
|
|
404
|
+
{!isMultiCheckout &&
|
|
371
405
|
cart &&
|
|
372
406
|
cart?.valid &&
|
|
373
407
|
orderState?.options?.type === 1 &&
|
|
@@ -382,13 +416,14 @@ const CartUI = (props: any) => {
|
|
|
382
416
|
<DriverTips
|
|
383
417
|
uuid={cart?.uuid}
|
|
384
418
|
businessId={cart?.business_id}
|
|
385
|
-
driverTipsOptions={driverTipsOptions}
|
|
386
|
-
isFixedPrice={parseInt(configs?.driver_tip_type?.value, 10) === 1
|
|
419
|
+
driverTipsOptions={!driverTipsOptions.includes(0) ? [0, ...driverTipsOptions] : driverTipsOptions}
|
|
420
|
+
isFixedPrice={parseInt(configs?.driver_tip_type?.value, 10) === 1}
|
|
387
421
|
isDriverTipUseCustom={!!parseInt(configs?.driver_tip_use_custom?.value, 10)}
|
|
388
|
-
driverTip={parseInt(configs?.driver_tip_type?.value, 10) === 1
|
|
422
|
+
driverTip={parseInt(configs?.driver_tip_type?.value, 10) === 1
|
|
389
423
|
? cart?.driver_tip
|
|
390
424
|
: cart?.driver_tip_rate}
|
|
391
425
|
useOrderContext
|
|
426
|
+
cart={cart}
|
|
392
427
|
/>
|
|
393
428
|
</DriverTipsContainer>
|
|
394
429
|
)}
|
|
@@ -522,14 +557,6 @@ const CartUI = (props: any) => {
|
|
|
522
557
|
setOpenPlaceModal={setOpenPlaceModal}
|
|
523
558
|
/>
|
|
524
559
|
</OModal>
|
|
525
|
-
<OAlert
|
|
526
|
-
open={confirm.open}
|
|
527
|
-
title={confirm.title}
|
|
528
|
-
content={confirm.content}
|
|
529
|
-
onAccept={confirm.handleOnAccept}
|
|
530
|
-
onCancel={() => setConfirm({ ...confirm, open: false, title: null })}
|
|
531
|
-
onClose={() => setConfirm({ ...confirm, open: false, title: null })}
|
|
532
|
-
/>
|
|
533
560
|
</CContainer>
|
|
534
561
|
)
|
|
535
562
|
}
|