@admin-layout/tailwind-design-pro 10.1.1-alpha.17 → 10.1.1-alpha.18
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/lib/components/DeepLinkWaitingPage/DeepLinkWaitingPage.d.ts.map +1 -1
- package/lib/components/DeepLinkWaitingPage/DeepLinkWaitingPage.js +140 -9
- package/lib/components/DeepLinkWaitingPage/DeepLinkWaitingPage.js.map +1 -1
- package/lib/components/UI/PropertyCard.d.ts.map +1 -1
- package/lib/components/UI/PropertyCard.js +70 -34
- package/lib/components/UI/PropertyCard.js.map +1 -1
- package/lib/config/analytics-config.js +23 -2
- package/lib/config/analytics-config.js.map +1 -1
- package/lib/config/api.config.d.ts +37 -0
- package/lib/config/api.config.d.ts.map +1 -0
- package/lib/config/api.config.js +52 -0
- package/lib/config/api.config.js.map +1 -0
- package/lib/config/env-config.d.ts +1 -0
- package/lib/config/env-config.d.ts.map +1 -1
- package/lib/config/env-config.js +3 -0
- package/lib/config/env-config.js.map +1 -1
- package/lib/config/index.d.ts +1 -0
- package/lib/config/index.d.ts.map +1 -1
- package/lib/utils/fetchBookingHotelDetails.d.ts +2 -0
- package/lib/utils/fetchBookingHotelDetails.d.ts.map +1 -0
- package/lib/utils/fetchBookingHotelDetails.js +30 -0
- package/lib/utils/fetchBookingHotelDetails.js.map +1 -0
- package/lib/utils/fetchPricelineHotelDetails.d.ts +2 -0
- package/lib/utils/fetchPricelineHotelDetails.d.ts.map +1 -0
- package/lib/utils/fetchPricelineHotelDetails.js +25 -0
- package/lib/utils/fetchPricelineHotelDetails.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepLinkWaitingPage.d.ts","sourceRoot":"","sources":["../../../src/components/DeepLinkWaitingPage/DeepLinkWaitingPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DeepLinkWaitingPage.d.ts","sourceRoot":"","sources":["../../../src/components/DeepLinkWaitingPage/DeepLinkWaitingPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,UAAU,wBAAwB;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAgW3D,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {jsx,jsxs}from'react/jsx-runtime';import {useState,useEffect}from'react';import {useSearchParams,useParams}from'react-router-dom';import {initGA,trackPageView,trackEvent}from'../../utils/analytics.js';import {config}from'../../config/env-config.js';import {
|
|
1
|
+
import {jsx,jsxs}from'react/jsx-runtime';import {useState,useEffect}from'react';import {useSearchParams,useParams}from'react-router-dom';import {initGA,trackPageView,trackEvent}from'../../utils/analytics.js';import {config}from'../../config/env-config.js';import {ANALYTICS_CONFIG,EVENT_CATEGORIES,EVENT_ACTIONS}from'../../config/analytics-config.js';import {PARTNER_LOGOS}from'../../config/api.config.js';import {fetchBookingHotelDetails}from'../../utils/fetchBookingHotelDetails.js';import {fetchPricelineHotelDetails}from'../../utils/fetchPricelineHotelDetails.js';const DeepLinkWaitingPage = ({
|
|
2
2
|
redirectDelay = 5,
|
|
3
3
|
googleAnalyticsId = config.GOOGLE_ANALYTICS_ID
|
|
4
4
|
}) => {
|
|
@@ -8,6 +8,14 @@ import {jsx,jsxs}from'react/jsx-runtime';import {useState,useEffect}from'react';
|
|
|
8
8
|
} = useParams();
|
|
9
9
|
const [countdown, setCountdown] = useState(redirectDelay);
|
|
10
10
|
const [redirectUrl, setRedirectUrl] = useState('');
|
|
11
|
+
const [isPending, setIsPending] = useState(false);
|
|
12
|
+
const [partnerName, setPartnerName] = useState('');
|
|
13
|
+
const [partnerLogo, setPartnerLogo] = useState('');
|
|
14
|
+
const [propertyName, setPropertyName] = useState('');
|
|
15
|
+
// Partner logos from config
|
|
16
|
+
const airbnbLogo = PARTNER_LOGOS.AIRBNB;
|
|
17
|
+
const bookingLogo = PARTNER_LOGOS.BOOKING;
|
|
18
|
+
const pricelineLogo = PARTNER_LOGOS.PRICELINE;
|
|
11
19
|
useEffect(() => {
|
|
12
20
|
// Initialize Google Analytics if enabled
|
|
13
21
|
{
|
|
@@ -15,13 +23,135 @@ import {jsx,jsxs}from'react/jsx-runtime';import {useState,useEffect}from'react';
|
|
|
15
23
|
}
|
|
16
24
|
// Get the redirect URL from URL parameters
|
|
17
25
|
const url = searchParams.get('redirectUrl');
|
|
18
|
-
|
|
26
|
+
const name = searchParams.get('partnerName');
|
|
27
|
+
const logo = searchParams.get('partnerLogo');
|
|
28
|
+
const propName = searchParams.get('propertyName');
|
|
29
|
+
if (propName) {
|
|
30
|
+
setPropertyName(propName);
|
|
31
|
+
}
|
|
32
|
+
if (url === 'pending') {
|
|
33
|
+
setIsPending(true);
|
|
34
|
+
// Extract query parameters for API calls
|
|
35
|
+
const propertyType = searchParams.get('propertyType');
|
|
36
|
+
const checkIn = searchParams.get('checkIn');
|
|
37
|
+
const checkOut = searchParams.get('checkOut');
|
|
38
|
+
const adults = parseInt(searchParams.get('adults') || '1', 10);
|
|
39
|
+
const children = parseInt(searchParams.get('children') || '0', 10);
|
|
40
|
+
// Process API call in the background
|
|
41
|
+
processRedirection(propertyId, propertyType, checkIn, checkOut, adults, children);
|
|
42
|
+
} else if (url) {
|
|
19
43
|
setRedirectUrl(url);
|
|
44
|
+
setPartnerName(name || '');
|
|
45
|
+
setPartnerLogo(logo || '');
|
|
46
|
+
startCountdown(url);
|
|
20
47
|
}
|
|
21
48
|
// Track page view if enabled
|
|
22
49
|
{
|
|
23
50
|
trackPageView(window.location.pathname, `Deep Link Waiting Page - Property: ${propertyId || 'Unknown'}`);
|
|
24
51
|
}
|
|
52
|
+
}, [searchParams, redirectDelay, propertyId, googleAnalyticsId]);
|
|
53
|
+
const processRedirection = async (propertyId, propertyType, checkIn, checkOut, adults, children) => {
|
|
54
|
+
if (!propertyId || !propertyType) {
|
|
55
|
+
console.error('Missing property ID or type');
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
let redirectUrl = '';
|
|
60
|
+
let partnerName = '';
|
|
61
|
+
let partnerLogo = '';
|
|
62
|
+
let propertyName = '';
|
|
63
|
+
// Handle different property types
|
|
64
|
+
switch (propertyType) {
|
|
65
|
+
case 'AirbnbProperty':
|
|
66
|
+
try {
|
|
67
|
+
// Airbnb doesn't need API call, construct URL directly
|
|
68
|
+
redirectUrl = `https://www.airbnb.com/rooms/${propertyId}?check_in=${checkIn}&check_out=${checkOut}&guests=${adults + children || 1}`;
|
|
69
|
+
partnerName = 'Airbnb.com';
|
|
70
|
+
partnerLogo = airbnbLogo;
|
|
71
|
+
} catch (error) {
|
|
72
|
+
console.error('Error constructing Airbnb URL:', error);
|
|
73
|
+
// Even though this is a direct URL construction, add a fallback just in case
|
|
74
|
+
redirectUrl = `https://www.airbnb.com/rooms/${propertyId}`;
|
|
75
|
+
partnerName = 'Airbnb.com';
|
|
76
|
+
partnerLogo = airbnbLogo;
|
|
77
|
+
}
|
|
78
|
+
break;
|
|
79
|
+
case 'BookingProperty':
|
|
80
|
+
// Call Booking.com API
|
|
81
|
+
const bookingDetails = await fetchBookingHotelDetails(propertyId, checkIn, checkOut, adults, children);
|
|
82
|
+
console.log('bookingDetails---->', bookingDetails);
|
|
83
|
+
if (bookingDetails && bookingDetails?.data?.url) {
|
|
84
|
+
redirectUrl = bookingDetails.data.url;
|
|
85
|
+
partnerName = 'Booking.com';
|
|
86
|
+
partnerLogo = bookingLogo;
|
|
87
|
+
if (bookingDetails.data.name) {
|
|
88
|
+
propertyName = bookingDetails.data.name;
|
|
89
|
+
}
|
|
90
|
+
} else {
|
|
91
|
+
// Fallback URL for Booking.com
|
|
92
|
+
const checkInFormatted = typeof checkIn === 'string' ? checkIn : '';
|
|
93
|
+
const checkOutFormatted = typeof checkOut === 'string' ? checkOut : '';
|
|
94
|
+
const guestsCount = adults + children || 1;
|
|
95
|
+
redirectUrl = `https://www.booking.com/hotel.html?aid=304142&label=gen173nr-1FCAEoggI46AdIM1gEaLYBiAEBmAEhuAEXyAEM2AEB6AEB-AELiAIBqAIDuALxt6-rBsACAdICJDI2NzI4ZDAwLTdhZWQtNDJjOS1iYzRjLTI3ZDRkMzk5MTRlZNgCBuACAQ&sid=d29e889897f5d24d00e4f8d55c8399bd&all_sr_blocks=${propertyId};checkin=${checkInFormatted};checkout=${checkOutFormatted};dest_id=;dest_type=;group_adults=${adults};group_children=${children};hapos=1;highlighted_blocks=${propertyId};no_rooms=1;req_adults=${adults};req_children=${children};room1=A%2CA;sb_price_type=total;sr_order=popularity;sr_pri_blocks=${propertyId};srepoch=1625097600;srpvid=e8c95a7a7f130034;type=total;ucfs=1&#hotelTmpl`;
|
|
96
|
+
partnerName = 'Booking.com';
|
|
97
|
+
partnerLogo = bookingLogo;
|
|
98
|
+
}
|
|
99
|
+
break;
|
|
100
|
+
case 'PricelineProperty':
|
|
101
|
+
// Call Priceline API
|
|
102
|
+
const pricelineDetails = await fetchPricelineHotelDetails(propertyId);
|
|
103
|
+
if (pricelineDetails && pricelineDetails.getHotelHotelDetails) {
|
|
104
|
+
const hotelInfo = pricelineDetails.getHotelHotelDetails?.results?.hotel_data?.hotel_0;
|
|
105
|
+
if (hotelInfo && hotelInfo.priceline_url) {
|
|
106
|
+
redirectUrl = hotelInfo.priceline_url;
|
|
107
|
+
partnerName = 'Priceline.com';
|
|
108
|
+
partnerLogo = pricelineLogo;
|
|
109
|
+
if (hotelInfo.name) {
|
|
110
|
+
propertyName = hotelInfo.name;
|
|
111
|
+
}
|
|
112
|
+
} else {
|
|
113
|
+
// Fallback URL for Priceline
|
|
114
|
+
const cityId = '';
|
|
115
|
+
const checkInDate = typeof checkIn === 'string' ? checkIn : '';
|
|
116
|
+
const checkOutDate = typeof checkOut === 'string' ? checkOut : '';
|
|
117
|
+
const roomCount = 1;
|
|
118
|
+
const adultCount = adults || 1;
|
|
119
|
+
redirectUrl = `https://www.priceline.com/relax/at/${propertyId}/from/${checkInDate}/to/${checkOutDate}/rooms/${roomCount}/adults/${adultCount}?cityId=${cityId}&cur=USD&psl=${propertyId}`;
|
|
120
|
+
partnerName = 'Priceline.com';
|
|
121
|
+
partnerLogo = pricelineLogo;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
break;
|
|
125
|
+
default:
|
|
126
|
+
redirectUrl = `/property/${propertyId}`;
|
|
127
|
+
partnerName = 'Our Website';
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
// If we have a redirect URL, update the state
|
|
131
|
+
if (redirectUrl) {
|
|
132
|
+
if (ANALYTICS_CONFIG.enabled && ANALYTICS_CONFIG.trackEvents.redirections) {
|
|
133
|
+
trackEvent(EVENT_CATEGORIES.REDIRECTION, EVENT_ACTIONS.AUTO_REDIRECT, `Property ID: ${propertyId}, Provider: ${partnerName}, URL: ${redirectUrl}${propertyName ? `, Property Name: ${propertyName}` : ''}`);
|
|
134
|
+
}
|
|
135
|
+
setRedirectUrl(redirectUrl);
|
|
136
|
+
setPartnerName(partnerName);
|
|
137
|
+
setPartnerLogo(partnerLogo);
|
|
138
|
+
if (propertyName) {
|
|
139
|
+
setPropertyName(propertyName);
|
|
140
|
+
}
|
|
141
|
+
setIsPending(false);
|
|
142
|
+
// Start countdown after we have the URL
|
|
143
|
+
startCountdown(redirectUrl);
|
|
144
|
+
} else {
|
|
145
|
+
console.error('Failed to generate redirect URL');
|
|
146
|
+
}
|
|
147
|
+
} catch (error) {
|
|
148
|
+
console.error('Error in processing redirection:', error);
|
|
149
|
+
{
|
|
150
|
+
trackEvent(EVENT_CATEGORIES.ERROR, EVENT_ACTIONS.API_ERROR, `Property ID: ${propertyId}, Type: ${propertyType}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
const startCountdown = url => {
|
|
25
155
|
// Start countdown
|
|
26
156
|
const timer = setInterval(() => {
|
|
27
157
|
setCountdown(prev => {
|
|
@@ -29,7 +159,7 @@ import {jsx,jsxs}from'react/jsx-runtime';import {useState,useEffect}from'react';
|
|
|
29
159
|
clearInterval(timer);
|
|
30
160
|
// Track auto-redirect event if enabled
|
|
31
161
|
{
|
|
32
|
-
trackEvent(EVENT_CATEGORIES.REDIRECTION, EVENT_ACTIONS.AUTO_REDIRECT, `
|
|
162
|
+
trackEvent(EVENT_CATEGORIES.REDIRECTION, EVENT_ACTIONS.AUTO_REDIRECT, `Property ID: ${propertyId}, Provider: ${partnerName}, URL: ${url}${propertyName ? `, Property Name: ${propertyName}` : ''}`);
|
|
33
163
|
}
|
|
34
164
|
// Redirect after countdown finishes
|
|
35
165
|
window.location.href = url || '';
|
|
@@ -39,16 +169,17 @@ import {jsx,jsxs}from'react/jsx-runtime';import {useState,useEffect}from'react';
|
|
|
39
169
|
});
|
|
40
170
|
}, 1000);
|
|
41
171
|
return () => clearInterval(timer);
|
|
42
|
-
}
|
|
172
|
+
};
|
|
43
173
|
const handleManualRedirect = () => {
|
|
44
174
|
if (redirectUrl) {
|
|
45
175
|
// Track manual click event if enabled
|
|
46
176
|
{
|
|
47
|
-
trackEvent(EVENT_CATEGORIES.REDIRECTION, EVENT_ACTIONS.MANUAL_CLICK, `
|
|
177
|
+
trackEvent(EVENT_CATEGORIES.REDIRECTION, EVENT_ACTIONS.MANUAL_CLICK, `Property ID: ${propertyId}, Provider: ${partnerName}, URL: ${redirectUrl}${propertyName ? `, Property Name: ${propertyName}` : ''}`, countdown);
|
|
48
178
|
}
|
|
49
179
|
window.location.href = redirectUrl;
|
|
50
180
|
}
|
|
51
181
|
};
|
|
182
|
+
// Regular waiting page UI once we have the URL
|
|
52
183
|
return jsx("div", {
|
|
53
184
|
className: "flex flex-col items-center justify-center min-h-screen bg-gray-50 p-4",
|
|
54
185
|
children: jsxs("div", {
|
|
@@ -111,11 +242,11 @@ import {jsx,jsxs}from'react/jsx-runtime';import {useState,useEffect}from'react';
|
|
|
111
242
|
}), jsxs("div", {
|
|
112
243
|
className: "text-center",
|
|
113
244
|
children: [jsx("img", {
|
|
114
|
-
src:
|
|
245
|
+
src: partnerLogo || '/images/partner-logo.png',
|
|
115
246
|
alt: "Partner Logo",
|
|
116
247
|
className: "w-32 h-auto mb-2"
|
|
117
248
|
}), jsxs("p", {
|
|
118
|
-
children: ["Now complete your booking with", jsx("br", {}), "the property provider ",
|
|
249
|
+
children: ["Now complete your booking with", jsx("br", {}), "the property provider ", partnerName]
|
|
119
250
|
})]
|
|
120
251
|
})]
|
|
121
252
|
}), jsxs("p", {
|
|
@@ -130,12 +261,12 @@ import {jsx,jsxs}from'react/jsx-runtime';import {useState,useEffect}from'react';
|
|
|
130
261
|
children: "Continue Now"
|
|
131
262
|
}), jsxs("p", {
|
|
132
263
|
className: "mt-8 text-sm text-gray-500",
|
|
133
|
-
children: ["If you are not redirected to ",
|
|
264
|
+
children: ["If you are not redirected to ", partnerName || 'the provider', " in a few seconds, please", ' ', jsx("a", {
|
|
134
265
|
href: redirectUrl,
|
|
135
266
|
className: "text-blue-600 hover:underline",
|
|
136
267
|
onClick: () => {
|
|
137
268
|
{
|
|
138
|
-
trackEvent(EVENT_CATEGORIES.REDIRECTION, EVENT_ACTIONS.LINK_CLICK, `
|
|
269
|
+
trackEvent(EVENT_CATEGORIES.REDIRECTION, EVENT_ACTIONS.LINK_CLICK, `Property ID: ${propertyId}, Provider: ${partnerName}, URL: ${redirectUrl}${propertyName ? `, Property Name: ${propertyName}` : ''}`, countdown);
|
|
139
270
|
}
|
|
140
271
|
},
|
|
141
272
|
children: "click here"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepLinkWaitingPage.js","sources":["../../../src/components/DeepLinkWaitingPage/DeepLinkWaitingPage.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"DeepLinkWaitingPage.js","sources":["../../../src/components/DeepLinkWaitingPage/DeepLinkWaitingPage.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropertyCard.d.ts","sourceRoot":"","sources":["../../../src/components/UI/PropertyCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAezE,UAAU,aAAa;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,KAAK,iBAAiB,GAAG;IACrB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;CACtB,CAAC;
|
|
1
|
+
{"version":3,"file":"PropertyCard.d.ts","sourceRoot":"","sources":["../../../src/components/UI/PropertyCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAezE,UAAU,aAAa;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,KAAK,iBAAiB,GAAG;IACrB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;CACtB,CAAC;AAsGF,eAAO,MAAM,YAAY,GAAI,sHAW1B,iBAAiB,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,4CAoX1D,CAAC"}
|
|
@@ -1,30 +1,57 @@
|
|
|
1
|
-
import {jsx,Fragment,jsxs}from'react/jsx-runtime';import {useMemo,useState,useEffect,useCallback}from'react';import {BsHeart}from'@react-icons/all-files/bs/BsHeart.js';import {BsStarFill}from'@react-icons/all-files/bs/BsStarFill.js';import {FaUserAlt}from'@react-icons/all-files/fa/FaUserAlt.js';import {useTranslation}from'react-i18next';import {WithAuthentication}from'@adminide-stack/user-auth0-browser/lib/index.component.js';import {Splide,SplideSlide}from'@cdmbase/react-splide';import {useLocation}from'@remix-run/react';import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
1
|
+
import {jsx,Fragment,jsxs}from'react/jsx-runtime';import {useMemo,useState,useEffect,useCallback}from'react';import {BsHeart}from'@react-icons/all-files/bs/BsHeart.js';import {BsStarFill}from'@react-icons/all-files/bs/BsStarFill.js';import {FaUserAlt}from'@react-icons/all-files/fa/FaUserAlt.js';import {useTranslation}from'react-i18next';import {WithAuthentication}from'@adminide-stack/user-auth0-browser/lib/index.component.js';import {Splide,SplideSlide}from'@cdmbase/react-splide';import {useLocation}from'@remix-run/react';import {startCase}from'lodash-es';import {useTailwindTheme}from'../../hooks/useTailwindTheme.js';import {useGetCurrentLongLat}from'../../hooks/use-get-current-lat-long.js';import {LocationIcon}from'./icons/LocationIcon.js';import {renderDynamicIcon}from'../../helpers/DynamicIcon.js';import {config}from'../../config/env-config.js';// const generateHref = async (room, from, to, adults, children) => {
|
|
2
|
+
// if (!room) return null;
|
|
3
|
+
// switch (room.__typename) {
|
|
4
|
+
// case 'AirbnbProperty':
|
|
5
|
+
// // Airbnb doesn't need API call, just construct URL directly
|
|
6
|
+
// return `/deep-link/property/${room.id}?redirectUrl=${encodeURIComponent(
|
|
7
|
+
// `https://www.airbnb.com/rooms/${room.id}?check_in=${from}&check_out=${to}&guests=${
|
|
8
|
+
// adults + children || 1
|
|
9
|
+
// }`,
|
|
10
|
+
// )}&partnerName=${encodeURIComponent('Airbnb.com')}&partnerLogo=${airbnbLogo}`;
|
|
11
|
+
// case 'BookingProperty':
|
|
12
|
+
// // Call Booking.com API
|
|
13
|
+
// try {
|
|
14
|
+
// const hotelDetails = await fetchBookingHotelDetails(room.id, from, to, adults, children);
|
|
15
|
+
// console.log('hotelDetails--->', hotelDetails);
|
|
16
|
+
// if (hotelDetails && hotelDetails?.data?.url) {
|
|
17
|
+
// return `/deep-link/property/${room.id}?redirectUrl=${encodeURIComponent(
|
|
18
|
+
// hotelDetails?.data?.url,
|
|
19
|
+
// )}&partnerName=${encodeURIComponent('Booking.com')}&partnerLogo=${bookingLogo}`;
|
|
20
|
+
// }
|
|
21
|
+
// } catch (error) {
|
|
22
|
+
// console.error('Error getting Booking.com URL:', error);
|
|
23
|
+
// }
|
|
24
|
+
// return null;
|
|
25
|
+
// case 'PricelineProperty':
|
|
26
|
+
// // Call Priceline API
|
|
27
|
+
// try {
|
|
28
|
+
// const pricelineDetails = await fetchPricelineHotelDetails(room.id);
|
|
29
|
+
// console.log('pricelineDetails--->', pricelineDetails);
|
|
30
|
+
// if (pricelineDetails && pricelineDetails.getHotelHotelDetails) {
|
|
31
|
+
// const hotelInfo = pricelineDetails.getHotelHotelDetails?.results?.hotel_data?.hotel_0;
|
|
32
|
+
// if (hotelInfo && hotelInfo.priceline_url) {
|
|
33
|
+
// return `/deep-link/property/${room.id}?redirectUrl=${encodeURIComponent(
|
|
34
|
+
// hotelInfo.priceline_url,
|
|
35
|
+
// )}&partnerName=${encodeURIComponent('Priceline.com')}&partnerLogo=${pricelineLogo}`;
|
|
36
|
+
// }
|
|
37
|
+
// }
|
|
38
|
+
// } catch (error) {
|
|
39
|
+
// console.error('Error getting Priceline URL:', error);
|
|
40
|
+
// }
|
|
41
|
+
// // If API call fails, construct a fallback URL
|
|
42
|
+
// const propertyId = room.metadata?.id_t;
|
|
43
|
+
// const cityId = room?.metadata?.city?.id || '';
|
|
44
|
+
// const checkInDate = typeof from === 'string' ? from : format(new Date(from), 'yyyyMMdd');
|
|
45
|
+
// const checkOutDate = typeof to === 'string' ? to : format(new Date(to), 'yyyyMMdd');
|
|
46
|
+
// const roomCount = 1;
|
|
47
|
+
// const adultCount = adults || 1;
|
|
48
|
+
// return `/deep-link/property/${room.id}?redirectUrl=${encodeURIComponent(
|
|
49
|
+
// `https://www.priceline.com/relax/at/${propertyId}/from/${checkInDate}/to/${checkOutDate}/rooms/${roomCount}/adults/${adultCount}?cityId=${cityId}&cur=USD&psl=${propertyId}`,
|
|
50
|
+
// )}&partnerName=${encodeURIComponent('Priceline.com')}&partnerLogo=${pricelineLogo}`;
|
|
51
|
+
// default:
|
|
52
|
+
// return `/property/${room.id}`;
|
|
53
|
+
// }
|
|
54
|
+
// };
|
|
28
55
|
const DealCard = ({
|
|
29
56
|
site,
|
|
30
57
|
price
|
|
@@ -93,9 +120,19 @@ const PropertyCard = ({
|
|
|
93
120
|
const checkOut = params.get('checkOut') || params.get('to') || '';
|
|
94
121
|
const duration = calculateDuration(checkIn, checkOut);
|
|
95
122
|
const formattedDuration = formatDuration(duration);
|
|
123
|
+
const [isRedirecting, setIsRedirecting] = useState(false);
|
|
96
124
|
useEffect(() => {
|
|
97
125
|
fetchCurrentLatLong();
|
|
98
126
|
}, []);
|
|
127
|
+
const handleRedirect = async e => {
|
|
128
|
+
if (e) e.preventDefault();
|
|
129
|
+
setIsRedirecting(true);
|
|
130
|
+
// Open the waiting page immediately with a temporary placeholder
|
|
131
|
+
const intermediateUrl = `/deep-link/property/${item.id}?redirectUrl=pending&partnerName=Loading...&partnerLogo=/images/loading.png&propertyType=${item.__typename}&checkIn=${checkIn}&checkOut=${checkOut}&adults=${adults}&children=${children}`;
|
|
132
|
+
window.open(intermediateUrl, '_blank');
|
|
133
|
+
// No need to make API calls here anymore as they will be handled by DeepLinkWaitingPage
|
|
134
|
+
setIsRedirecting(false);
|
|
135
|
+
};
|
|
99
136
|
const getPriceType = useCallback(room => {
|
|
100
137
|
const type = room.preferences?.property?.pricing?.option?.priceType;
|
|
101
138
|
if (type === 'HOUR') {
|
|
@@ -192,8 +229,8 @@ const PropertyCard = ({
|
|
|
192
229
|
children: jsx(LikeButton, {})
|
|
193
230
|
}), images.map((image, i) => jsx(SplideSlide, {
|
|
194
231
|
children: jsx("a", {
|
|
195
|
-
href:
|
|
196
|
-
|
|
232
|
+
href: "#",
|
|
233
|
+
onClick: handleRedirect,
|
|
197
234
|
rel: "noopener noreferrer",
|
|
198
235
|
children: jsx("div", {
|
|
199
236
|
className: "w-full h-full rounded-xl",
|
|
@@ -366,11 +403,10 @@ const PropertyCard = ({
|
|
|
366
403
|
children: [item?.preferences?.property?.pricing?.price?.price_breakdown?.details?.pricing?.basePrice?.perNight, ' ', "per ", getPriceType(item)]
|
|
367
404
|
})]
|
|
368
405
|
}), jsx("button", {
|
|
369
|
-
className:
|
|
370
|
-
onClick:
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
children: "View deal"
|
|
406
|
+
className: `bg-blue-500 hover:bg-blue-600 text-white font-semibold py-2 px-4 rounded w-full ${isRedirecting ? 'opacity-75 cursor-wait' : ''}`,
|
|
407
|
+
onClick: handleRedirect,
|
|
408
|
+
disabled: isRedirecting,
|
|
409
|
+
children: isRedirecting ? 'Loading...' : 'View deal'
|
|
374
410
|
})]
|
|
375
411
|
})]
|
|
376
412
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropertyCard.js","sources":["../../../src/components/UI/PropertyCard.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PropertyCard.js","sources":["../../../src/components/UI/PropertyCard.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -25,10 +25,31 @@ const ANALYTICS_CONFIG = {
|
|
|
25
25
|
};
|
|
26
26
|
// Analytics event categories
|
|
27
27
|
const EVENT_CATEGORIES = {
|
|
28
|
-
REDIRECTION: 'Redirection'
|
|
28
|
+
REDIRECTION: 'Redirection',
|
|
29
|
+
USER_INTERACTION: 'User Interaction',
|
|
30
|
+
SYSTEM: 'System',
|
|
31
|
+
ERROR: 'Error'
|
|
32
|
+
};
|
|
29
33
|
// Analytics event actions
|
|
30
34
|
const EVENT_ACTIONS = {
|
|
31
35
|
// Redirections
|
|
32
36
|
AUTO_REDIRECT: 'Auto Redirect',
|
|
33
37
|
MANUAL_CLICK: 'Manual Click',
|
|
34
|
-
LINK_CLICK: 'Link Click'
|
|
38
|
+
LINK_CLICK: 'Link Click',
|
|
39
|
+
// User interactions
|
|
40
|
+
BUTTON_CLICK: 'Button Click',
|
|
41
|
+
FORM_SUBMIT: 'Form Submit',
|
|
42
|
+
SEARCH: 'Search',
|
|
43
|
+
VIEW_ITEM: 'View Item',
|
|
44
|
+
ADD_TO_CART: 'Add to Cart',
|
|
45
|
+
REMOVE_FROM_CART: 'Remove from Cart',
|
|
46
|
+
BEGIN_CHECKOUT: 'Begin Checkout',
|
|
47
|
+
ADD_PAYMENT_INFO: 'Add Payment Info',
|
|
48
|
+
PURCHASE: 'Purchase',
|
|
49
|
+
// System
|
|
50
|
+
LOAD: 'Load',
|
|
51
|
+
INIT: 'Initialize',
|
|
52
|
+
// Errors
|
|
53
|
+
API_ERROR: 'API Error',
|
|
54
|
+
CLIENT_ERROR: 'Client Error'
|
|
55
|
+
};export{ANALYTICS_CONFIG,EVENT_ACTIONS,EVENT_CATEGORIES};//# sourceMappingURL=analytics-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-config.js","sources":["../../src/config/analytics-config.ts"],"sourcesContent":[null],"names":[],"mappings":"qCAAA;;AAEG;AAIH;AACa,MAAA,gBAAgB,GAAG;;AAE5B,EAAA,OAAA,EAAO,IAAM;;AAGb,EAAA,KAAA,EAAK,OAAS,CAAA,YAAK,kBAA0B;;oBAG3B,EAAA,MAAQ,CAAA,mBAAoB;;AAG9C,EAAA,WAAA,EAAW;AACP,IAAA,SAAA,EAAA,IAAW;AACX,IAAA,MAAA,EAAA,IAAQ;AACR,IAAA,YAAA,EAAA,IAAc;AACd,IAAA,MAAA,EAAA;AACH,GAAA;;AAGD,EAAA,mBAAA,EAAmB;AACf,IAAA,MAAA,EAAA,IAAQ;AACR,IAAA,UAAA,EAAA,IAAY;YACJ,EAAA,KAAO;AAClB;;AAGL;AACa,MAAA,gBAAgB,GAAG;AAC5B,EAAA,WAAA,EAAW;
|
|
1
|
+
{"version":3,"file":"analytics-config.js","sources":["../../src/config/analytics-config.ts"],"sourcesContent":[null],"names":[],"mappings":"qCAAA;;AAEG;AAIH;AACa,MAAA,gBAAgB,GAAG;;AAE5B,EAAA,OAAA,EAAO,IAAM;;AAGb,EAAA,KAAA,EAAK,OAAS,CAAA,YAAK,kBAA0B;;oBAG3B,EAAA,MAAQ,CAAA,mBAAoB;;AAG9C,EAAA,WAAA,EAAW;AACP,IAAA,SAAA,EAAA,IAAW;AACX,IAAA,MAAA,EAAA,IAAQ;AACR,IAAA,YAAA,EAAA,IAAc;AACd,IAAA,MAAA,EAAA;AACH,GAAA;;AAGD,EAAA,mBAAA,EAAmB;AACf,IAAA,MAAA,EAAA,IAAQ;AACR,IAAA,UAAA,EAAA,IAAY;YACJ,EAAA,KAAO;AAClB;;AAGL;AACa,MAAA,gBAAgB,GAAG;AAC5B,EAAA,WAAA,EAAW,aAAe;AAC1B,EAAA,gBAAA,EAAgB,kBAAoB;AACpC,EAAA,MAAA,EAAM,QAAU;AAChB,EAAA,KAAA,EAAK;;AAGT;AACa,MAAA,aAAa,GAAG;;AAEzB,EAAA,aAAA,EAAa,eAAiB;AAC9B,EAAA,YAAA,EAAY,cAAgB;AAC5B,EAAA,UAAA,EAAU,YAAc;;AAGxB,EAAA,YAAA,EAAY,cAAgB;AAC5B,EAAA,WAAA,EAAW,aAAe;AAC1B,EAAA,MAAA,EAAM,QAAU;AAChB,EAAA,SAAA,EAAS,WAAa;AACtB,EAAA,WAAA,EAAW,aAAe;AAC1B,EAAA,gBAAA,EAAgB,kBAAoB;AACpC,EAAA,cAAA,EAAc,gBAAkB;AAChC,EAAA,gBAAA,EAAgB,kBAAoB;AACpC,EAAA,QAAA,EAAQ,UAAY;;AAGpB,EAAA,IAAA,EAAI,MAAQ;AACZ,EAAA,IAAA,EAAI,YAAc;;AAGlB,EAAA,SAAA,EAAS,WAAa;AACtB,EAAA,YAAA,EAAY;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Configuration
|
|
3
|
+
* Centralized configuration for all API-related settings
|
|
4
|
+
*/
|
|
5
|
+
export declare const RAPID_API_KEY: string;
|
|
6
|
+
export declare const BOOKING_API: {
|
|
7
|
+
BASE_URL: string;
|
|
8
|
+
HOST: string;
|
|
9
|
+
};
|
|
10
|
+
export declare const PRICELINE_API: {
|
|
11
|
+
BASE_URL: string;
|
|
12
|
+
HOST: string;
|
|
13
|
+
DEFAULT_PARAMS: {
|
|
14
|
+
guest_score_breakdown: string;
|
|
15
|
+
videos: string;
|
|
16
|
+
important_info: string;
|
|
17
|
+
sid: string;
|
|
18
|
+
id_lookup: string;
|
|
19
|
+
plugins: string;
|
|
20
|
+
promo: string;
|
|
21
|
+
nearby: string;
|
|
22
|
+
recent: string;
|
|
23
|
+
photos: string;
|
|
24
|
+
reviews: string;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export declare const PARTNER_LOGOS: {
|
|
28
|
+
AIRBNB: string;
|
|
29
|
+
BOOKING: string;
|
|
30
|
+
PRICELINE: string;
|
|
31
|
+
};
|
|
32
|
+
export declare const formatDate: (date: Date) => string;
|
|
33
|
+
export declare const getDefaultDates: () => {
|
|
34
|
+
arrival: string;
|
|
35
|
+
departure: string;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=api.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.config.d.ts","sourceRoot":"","sources":["../../src/config/api.config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,eAAO,MAAM,aAAa,QAAuB,CAAC;AAGlD,eAAO,MAAM,WAAW;;;CAGvB,CAAC;AAGF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;CAgBzB,CAAC;AAGF,eAAO,MAAM,aAAa;;;;CAMzB,CAAC;AAGF,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,KAAG,MAKvC,CAAC;AAGF,eAAO,MAAM,eAAe;;;CAS3B,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import {config}from'./env-config.js';/**
|
|
2
|
+
* API Configuration
|
|
3
|
+
* Centralized configuration for all API-related settings
|
|
4
|
+
*/
|
|
5
|
+
// RapidAPI Key
|
|
6
|
+
const RAPID_API_KEY = config.RAPID_API_KEY;
|
|
7
|
+
// Booking.com API
|
|
8
|
+
const BOOKING_API = {
|
|
9
|
+
BASE_URL: 'https://booking-com15.p.rapidapi.com/api/v1/hotels/getHotelDetails',
|
|
10
|
+
HOST: 'booking-com15.p.rapidapi.com'
|
|
11
|
+
};
|
|
12
|
+
// Priceline API
|
|
13
|
+
const PRICELINE_API = {
|
|
14
|
+
BASE_URL: 'https://priceline-com-provider.p.rapidapi.com/v2/hotels/details',
|
|
15
|
+
HOST: 'priceline-com-provider.p.rapidapi.com',
|
|
16
|
+
DEFAULT_PARAMS: {
|
|
17
|
+
guest_score_breakdown: 'true',
|
|
18
|
+
videos: 'true',
|
|
19
|
+
important_info: 'true',
|
|
20
|
+
sid: 'iSiX639',
|
|
21
|
+
id_lookup: 'true',
|
|
22
|
+
plugins: 'true',
|
|
23
|
+
promo: 'true',
|
|
24
|
+
nearby: 'true',
|
|
25
|
+
recent: 'true',
|
|
26
|
+
photos: 'true',
|
|
27
|
+
reviews: 'true'
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
// Partner Logos
|
|
31
|
+
const PARTNER_LOGOS = {
|
|
32
|
+
AIRBNB: 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/69/Airbnb_Logo_B%C3%A9lo.svg/512px-Airbnb_Logo_B%C3%A9lo.svg.png',
|
|
33
|
+
BOOKING: 'https://upload.wikimedia.org/wikipedia/commons/thumb/b/be/Booking.com_logo.svg/1920px-Booking.com_logo.svg.png',
|
|
34
|
+
PRICELINE: 'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/Priceline.com_logo.svg/1920px-Priceline.com_logo.svg.png'
|
|
35
|
+
};
|
|
36
|
+
// Date formatting helper
|
|
37
|
+
const formatDate = date => {
|
|
38
|
+
const year = date.getFullYear();
|
|
39
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
40
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
41
|
+
return `${year}-${month}-${day}`;
|
|
42
|
+
};
|
|
43
|
+
// Get default dates (today and today + 2 days)
|
|
44
|
+
const getDefaultDates = () => {
|
|
45
|
+
const today = new Date();
|
|
46
|
+
const twoDaysLater = new Date(today);
|
|
47
|
+
twoDaysLater.setDate(today.getDate() + 2);
|
|
48
|
+
return {
|
|
49
|
+
arrival: formatDate(today),
|
|
50
|
+
departure: formatDate(twoDaysLater)
|
|
51
|
+
};
|
|
52
|
+
};export{BOOKING_API,PARTNER_LOGOS,PRICELINE_API,RAPID_API_KEY,formatDate,getDefaultDates};//# sourceMappingURL=api.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.config.js","sources":["../../src/config/api.config.ts"],"sourcesContent":[null],"names":[],"mappings":"qCAAA;;;AAGG;AAIH;AACa,MAAA,aAAa,GAAG,MAAM,CAAC;AAEpC;AACa,MAAA,WAAW,GAAG;AACvB,EAAA,QAAA,EAAQ,oEAAsE;AAC9E,EAAA,IAAA,EAAI;;AAGR;AACa,MAAA,aAAa,GAAG;AACzB,EAAA,QAAA,EAAQ,iEAAmE;AAC3E,EAAA,IAAA,EAAI,uCAAyC;AAC7C,EAAA,cAAA,EAAc;AACV,IAAA,qBAAA,EAAA,MAA6B;AAC7B,IAAA,MAAA,EAAA,MAAc;AACd,IAAA,cAAA,EAAA,MAAsB;AACtB,IAAA,GAAA,EAAA,SAAc;AACd,IAAA,SAAA,EAAA,MAAiB;AACjB,IAAA,OAAA,EAAA,MAAe;AACf,IAAA,KAAA,EAAA,MAAa;AACb,IAAA,MAAA,EAAA,MAAc;AACd,IAAA,MAAA,EAAA,MAAc;AACd,IAAA,MAAA,EAAA,MAAc;AACd,IAAA,OAAA,EAAA;AACH;;AAGL;AACa,MAAA,aAAa,GAAG;AACzB,EAAA,MAAA,EAAM,yHAA2H;AACjI,EAAA,OAAA,EAAO,gHAC6G;AACpH,EAAA,SAAA,EAAS;;AAIb;AACa,MAAA,UAAU,GAAG,IAAC,IAAsB;AAC7C,EAAA,MAAA,OAAa,IAAA,CAAA,WAAK,EAAW;AAC7B,EAAA,MAAA,QAAc,MAAA,CAAA,IAAW,CAAA,UAAS,GAAE,CAAA,CAAG,CAAC,QAAU,CAAA,CAAA,EAAE,GAAE,CAAA;AACtD,EAAA,MAAA,MAAY,MAAA,CAAA,IAAO,CAAA,OAAY,EAAA,CAAA,CAAE,UAAU,EAAE,GAAE,CAAA;AAC/C,EAAA,OAAA,CAAA,MAAc,CAAA,CAAA,EAAA,OAAS,EAAI,GAAA,CAAA,CAAG;AAClC;AAEA;AACO,MAAM,eAAe,GAAG,MAAK;AAChC,EAAA,MAAA,KAAW,GAAA,IAAO,IAAA,EAAI;AACtB,EAAA,MAAA,eAAqB,IAAA,UAAS,CAAA;cAClB,CAAA,OAAQ,CAAA,KAAM,CAAA,SAAQ,GAAE,CAAA,CAAG;SAEhC;AACH,IAAA,OAAA,EAAA,UAAS,CAAA,KAAW,CAAA;AACpB,IAAA,SAAA,EAAA,UAAW,CAAA,YAAW;;AAE9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-config.d.ts","sourceRoot":"","sources":["../../src/config/env-config.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"env-config.d.ts","sourceRoot":"","sources":["../../src/config/env-config.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;0CAuCjB,CAAC"}
|
package/lib/config/env-config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-config.js","sources":["../../src/config/env-config.ts"],"sourcesContent":[null],"names":[],"mappings":"0JAIA,MAAM,GAAG,GAAG,cAAc,EAAE;AAE5B,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC;KACvC,EAAA,gBAAkB,CAAA,GAAI;KACtB,EAAA,gBAAkB,CAAA,GAAI;MACrB,EAAA,gBAAkB,CAAA,IAAK;SACpB,EAAA,gBAAkB,CAAA;AAC5B,CAAA,CAAC;AAEW,MAAA,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE;AAChC,EAAA,WAAA,EAAW,GAAE,CAAA;AACb,IAAA,OAAA,EAAA,aAAA;AACA,IAAA,IAAA,EAAA;AACA,GAAA,CAAA;AACA,EAAA,gCAA4B,EAAI,IAAS,CAAA;AACzC,IAAA,OAAA,EAAA,KAAc;AACd,IAAA,IAAA,EAAA;AAEA,GAAA,CAAA;kBACmB,EAAA,GAAA,CAAA;IACnB,OAAiC,EAAA,sBAAA;AAC7B,IAAA,IAAA,EAAA;AACA,GAAA,CAAA;iBACF,EAAA,GAAA,CAAA;IACF,OAAkC,EAAA,IAAA,CAAA,SAAA,CAAA,eAAK,CAAC;AACpC,IAAA,IAAA,EAAA;AACA,GAAA,CAAA;4BACF,EAAA,GAAA,CAAA;IACF,OAA8B,EAAA,EAAA;QAC1B,EAAO;AACP,GAAA,CAAA;gBACF,EAAA,GAAA,CAAA;IACF,OAA0B,EAAA,EAAA;AACtB,IAAA,IAAA,EAAA;AACA,GAAA,CAAA;qBACF,EAAA,GAAA,CAAA;IACF,OAA6B,EAAA,EAAA;AACzB,IAAA,IAAA,EAAA;AACA,GAAA,CAAA;eACF,EAAA,GAAA,CAAA;IACF,OAAiB,EAAA,SAAA;IACjB,IAAmB,EAAA;AACf,GAAA,CAAA;AACA,EAAA,mBAA+C,EAAA,GAAA,CAAA;WACjD,EAAA;AACF,GAAA,CAAA;wCACoC,CAAA;
|
|
1
|
+
{"version":3,"file":"env-config.js","sources":["../../src/config/env-config.ts"],"sourcesContent":[null],"names":[],"mappings":"0JAIA,MAAM,GAAG,GAAG,cAAc,EAAE;AAE5B,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC;KACvC,EAAA,gBAAkB,CAAA,GAAI;KACtB,EAAA,gBAAkB,CAAA,GAAI;MACrB,EAAA,gBAAkB,CAAA,IAAK;SACpB,EAAA,gBAAkB,CAAA;AAC5B,CAAA,CAAC;AAEW,MAAA,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE;AAChC,EAAA,WAAA,EAAW,GAAE,CAAA;AACb,IAAA,OAAA,EAAA,aAAA;AACA,IAAA,IAAA,EAAA;AACA,GAAA,CAAA;AACA,EAAA,gCAA4B,EAAI,IAAS,CAAA;AACzC,IAAA,OAAA,EAAA,KAAc;AACd,IAAA,IAAA,EAAA;AAEA,GAAA,CAAA;kBACmB,EAAA,GAAA,CAAA;IACnB,OAAiC,EAAA,sBAAA;AAC7B,IAAA,IAAA,EAAA;AACA,GAAA,CAAA;iBACF,EAAA,GAAA,CAAA;IACF,OAAkC,EAAA,IAAA,CAAA,SAAA,CAAA,eAAK,CAAC;AACpC,IAAA,IAAA,EAAA;AACA,GAAA,CAAA;4BACF,EAAA,GAAA,CAAA;IACF,OAA8B,EAAA,EAAA;QAC1B,EAAO;AACP,GAAA,CAAA;gBACF,EAAA,GAAA,CAAA;IACF,OAA0B,EAAA,EAAA;AACtB,IAAA,IAAA,EAAA;AACA,GAAA,CAAA;qBACF,EAAA,GAAA,CAAA;IACF,OAA6B,EAAA,EAAA;AACzB,IAAA,IAAA,EAAA;AACA,GAAA,CAAA;eACF,EAAA,GAAA,CAAA;IACF,OAAiB,EAAA,SAAA;IACjB,IAAmB,EAAA;AACf,GAAA,CAAA;AACA,EAAA,mBAA+C,EAAA,GAAA,CAAA;WACjD,EAAA;AACF,GAAA,CAAA;wCACoC,CAAA;IACpC,OAAa,EAAA,EAAA;AAChB,IAAE,IAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/lib/config/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchBookingHotelDetails.d.ts","sourceRoot":"","sources":["../../src/utils/fetchBookingHotelDetails.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB,GAAU,YAAO,EAAE,YAAO,EAAE,aAAQ,EAAE,WAAM,EAAE,aAAQ,iBAiC1F,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import'../config/env-config.js';import'../config/analytics-config.js';import {getDefaultDates,BOOKING_API,RAPID_API_KEY}from'../config/api.config.js';// Function to fetch hotel details from RapidAPI
|
|
2
|
+
const fetchBookingHotelDetails = async (hotelId, checkIn, checkOut, adults, children) => {
|
|
3
|
+
const url = BOOKING_API.BASE_URL;
|
|
4
|
+
// Get default dates if not provided
|
|
5
|
+
const defaultDates = getDefaultDates();
|
|
6
|
+
const arrivalDate = checkIn || defaultDates.arrival;
|
|
7
|
+
const departureDate = checkOut || defaultDates.departure;
|
|
8
|
+
const params = new URLSearchParams({
|
|
9
|
+
hotel_id: hotelId,
|
|
10
|
+
arrival_date: arrivalDate,
|
|
11
|
+
departure_date: departureDate
|
|
12
|
+
});
|
|
13
|
+
try {
|
|
14
|
+
const response = await fetch(`${url}?${params.toString()}`, {
|
|
15
|
+
method: 'GET',
|
|
16
|
+
headers: {
|
|
17
|
+
'x-rapidapi-host': BOOKING_API.HOST,
|
|
18
|
+
'x-rapidapi-key': RAPID_API_KEY
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
if (!response.ok) {
|
|
22
|
+
throw new Error('Failed to fetch hotel details');
|
|
23
|
+
}
|
|
24
|
+
const data = await response.json();
|
|
25
|
+
return data;
|
|
26
|
+
} catch (error) {
|
|
27
|
+
console.error('Error fetching hotel details:', error);
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
};export{fetchBookingHotelDetails};//# sourceMappingURL=fetchBookingHotelDetails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchBookingHotelDetails.js","sources":["../../src/utils/fetchBookingHotelDetails.ts"],"sourcesContent":[null],"names":[],"mappings":"sJAEA;AACa,MAAA,wBAAwB,GAAG,OAAO,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,KAAI;AAC3F,EAAA,MAAA,GAAS,GAAA,WAAc,CAAA;;AAGvB,EAAA,MAAA,YAAkB,GAAA,eAAkB,EAAA;AACpC,EAAA,MAAA,cAAoB,OAAA,gBAAuB,CAAA;AAC3C,EAAA,MAAA,gBAAsB,QAAA,gBAAwB,CAAA;AAE9C,EAAA,MAAA,MAAY,GAAA,IAAO,eAAA,CAAA;AACf,IAAA,QAAA,EAAA,OAAiB;AACjB,IAAA,YAAA,EAAA,WAAyB;AACzB,IAAA,cAAA,EAAA;AACH,GAAA,CAAA;AAED,EAAA,IAAA;AACI,IAAA,MAAA,QAAc,GAAA,MAAS,KAAA,CAAA,CAAA,EAAK,GAAC,CAAG,CAAG,EAAA,MAAU,CAAA,QAAS,EAAA,CAAA,CAAA,EAAE;AACpD,MAAA,MAAA,EAAA;AACA,MAAA,OAAA,EAAA;yBACqB,EAAA,WAAa,CAAA,IAAA;AAC9B,QAAA,gBAAA,EAAA;AACH;AACJ,KAAA,CAAA;AAED,IAAA,IAAA,CAAA,QAAK,CAAA,EAAA,EAAS;AACV,MAAA,MAAA,IAAA,KAAU,CAAA,+BAAM,CAAA;;AAGpB,IAAA,MAAA,IAAM,SAAO,aAAe,EAAA;AAC5B,IAAA,OAAA,IAAO;IACX,OAAC,KAAA,EAAA;IAAC,OAAO,CAAA,MAAO,+BAAC,EAAA,KAAA,CAAA;AACb,IAAA,OAAA,IAAO;AACP;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchPricelineHotelDetails.d.ts","sourceRoot":"","sources":["../../src/utils/fetchPricelineHotelDetails.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,0BAA0B,GAAU,YAAO,iBA0BvD,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import'../config/env-config.js';import'../config/analytics-config.js';import {PRICELINE_API,RAPID_API_KEY}from'../config/api.config.js';// Function to fetch Priceline property details
|
|
2
|
+
const fetchPricelineHotelDetails = async hotelId => {
|
|
3
|
+
const url = PRICELINE_API.BASE_URL;
|
|
4
|
+
const params = new URLSearchParams({
|
|
5
|
+
hotel_id: hotelId,
|
|
6
|
+
...PRICELINE_API.DEFAULT_PARAMS
|
|
7
|
+
});
|
|
8
|
+
try {
|
|
9
|
+
const response = await fetch(`${url}?${params.toString()}`, {
|
|
10
|
+
method: 'GET',
|
|
11
|
+
headers: {
|
|
12
|
+
'x-rapidapi-host': PRICELINE_API.HOST,
|
|
13
|
+
'x-rapidapi-key': RAPID_API_KEY
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
if (!response.ok) {
|
|
17
|
+
throw new Error('Failed to fetch Priceline property details');
|
|
18
|
+
}
|
|
19
|
+
const data = await response.json();
|
|
20
|
+
return data;
|
|
21
|
+
} catch (error) {
|
|
22
|
+
console.error('Error fetching Priceline property details:', error);
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
};export{fetchPricelineHotelDetails};//# sourceMappingURL=fetchPricelineHotelDetails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchPricelineHotelDetails.js","sources":["../../src/utils/fetchPricelineHotelDetails.ts"],"sourcesContent":[null],"names":[],"mappings":"wIAEA;MACa,0BAA0B,GAAG,MAAO,OAAA,IAAW;AACxD,EAAA,MAAA,GAAS,GAAA,aAAgB,CAAA;AACzB,EAAA,MAAA,MAAY,GAAA,IAAO,eAAA,CAAA;AACf,IAAA,QAAA,EAAA,OAAiB;oBACd,CAAA;AACN,GAAA,CAAA;AAED,EAAA,IAAA;AACI,IAAA,MAAA,QAAc,GAAA,MAAS,KAAA,CAAA,CAAA,EAAK,GAAC,CAAG,CAAG,EAAA,MAAU,CAAA,QAAS,EAAA,CAAA,CAAA,EAAE;AACpD,MAAA,MAAA,EAAA;AACA,MAAA,OAAA,EAAA;yBACqB,EAAA,aAAe,CAAA,IAAA;AAChC,QAAA,gBAAA,EAAA;AACH;AACJ,KAAA,CAAA;AAED,IAAA,IAAA,CAAA,QAAK,CAAA,EAAA,EAAS;AACV,MAAA,MAAA,IAAA,KAAU,CAAA,4CAAM,CAAA;;AAGpB,IAAA,MAAA,IAAM,SAAO,aAAe,EAAA;AAC5B,IAAA,OAAA,IAAO;IACX,OAAC,KAAA,EAAA;IAAC,OAAO,CAAA,MAAO,4CAAC,EAAA,KAAA,CAAA;AACb,IAAA,OAAA,IAAO;AACP;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@admin-layout/tailwind-design-pro",
|
|
3
|
-
"version": "10.1.1-alpha.
|
|
3
|
+
"version": "10.1.1-alpha.18",
|
|
4
4
|
"description": "Sample core for higher packages to depend on",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "CDMBase LLC",
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"typescript": {
|
|
62
62
|
"definition": "lib/index.d.ts"
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "e6c290f722353dce3f56213329e25e5278b44f3d"
|
|
65
65
|
}
|