@treely/strapi-slices 7.16.1 → 7.17.0
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/dist/strapi-slices.cjs.development.js +31 -3
- package/dist/strapi-slices.cjs.development.js.map +1 -1
- package/dist/strapi-slices.cjs.production.min.js +1 -1
- package/dist/strapi-slices.cjs.production.min.js.map +1 -1
- package/dist/strapi-slices.esm.js +31 -3
- package/dist/strapi-slices.esm.js.map +1 -1
- package/dist/utils/buildRedirectUrl.d.ts +3 -0
- package/package.json +2 -2
- package/src/slices/Redirect/Redirect.test.tsx +73 -0
- package/src/slices/Redirect/Redirect.tsx +14 -3
- package/src/utils/buildRedirectUrl.test.ts +102 -0
- package/src/utils/buildRedirectUrl.ts +34 -0
- package/src/slices/Redirect/Rediect.test.tsx +0 -30
|
@@ -7151,13 +7151,41 @@ var Events = function Events(_ref) {
|
|
|
7151
7151
|
}))))));
|
|
7152
7152
|
};
|
|
7153
7153
|
|
|
7154
|
+
function buildRedirectUrl(url, asPath, query) {
|
|
7155
|
+
if (!url) return '';
|
|
7156
|
+
// Parse the base target URL
|
|
7157
|
+
var target = new URL(url, window.location.origin);
|
|
7158
|
+
// Merge existing params from the target
|
|
7159
|
+
var mergedParams = new URLSearchParams(target.search);
|
|
7160
|
+
// Add absolute source
|
|
7161
|
+
var absoluteSource = "" + window.location.origin + asPath;
|
|
7162
|
+
mergedParams.set('source', absoluteSource);
|
|
7163
|
+
// Forward utm_* params from the current page
|
|
7164
|
+
for (var _i = 0, _Object$entries = Object.entries(query); _i < _Object$entries.length; _i++) {
|
|
7165
|
+
var _Object$entries$_i = _Object$entries[_i],
|
|
7166
|
+
key = _Object$entries$_i[0],
|
|
7167
|
+
value = _Object$entries$_i[1];
|
|
7168
|
+
if (key.startsWith('utm_') && typeof value === 'string') {
|
|
7169
|
+
mergedParams.set(key, value);
|
|
7170
|
+
}
|
|
7171
|
+
}
|
|
7172
|
+
// Add timestamp
|
|
7173
|
+
mergedParams.set('ts', Date.now().toString());
|
|
7174
|
+
// Build final merged URL
|
|
7175
|
+
target.search = mergedParams.toString();
|
|
7176
|
+
return target.toString();
|
|
7177
|
+
}
|
|
7178
|
+
|
|
7154
7179
|
var Redirect = function Redirect(_ref) {
|
|
7155
7180
|
var slice = _ref.slice;
|
|
7156
7181
|
var router = useRouter();
|
|
7157
7182
|
useEffect(function () {
|
|
7158
|
-
|
|
7159
|
-
|
|
7160
|
-
|
|
7183
|
+
if (!slice.url) return;
|
|
7184
|
+
// Build redirect URL
|
|
7185
|
+
var redirectUrl = buildRedirectUrl(slice.url, router.asPath, router.query);
|
|
7186
|
+
// Redirect
|
|
7187
|
+
router.replace(redirectUrl);
|
|
7188
|
+
}, [slice.url, router]);
|
|
7161
7189
|
return React.createElement(React.Fragment, null);
|
|
7162
7190
|
};
|
|
7163
7191
|
|