Skip to content

Commit bd14c2d

Browse files
authored
Merge pull request #11 from codex-team/override-utm
chore(utm): override utm tags
2 parents ae30008 + 269de58 commit bd14c2d

2 files changed

Lines changed: 34 additions & 4 deletions

File tree

composables/useUTM.ts

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,45 @@ export const useUTM = (baseUrl: string, content: string) => {
99
/**
1010
* Generates a URL with UTM tracking parameters
1111
*
12-
* @returns The URL with UTM parameters
12+
* @returns {string} The URL with UTM parameters
1313
*/
1414
const getUrl = (): string => {
15-
const url = new URL(baseUrl);
15+
let url: URL;
1616

17-
/* Add UTM parameters */
17+
try {
18+
url = new URL(baseUrl);
19+
} catch (error) {
20+
return baseUrl;
21+
}
22+
23+
/* Default UTM parameters */
1824
url.searchParams.set('utm_source', 'hawk-tracker.ru');
1925
url.searchParams.set('utm_content', content);
2026

27+
/* If current page has utm_* params, override defaults with those */
28+
if (process.client && typeof window !== 'undefined') {
29+
const currentSearchParams = new URLSearchParams(window.location.search || '');
30+
31+
/**
32+
* If utm_content is overridden, we will add original button content to utm_place
33+
*/
34+
let isUtmContentOverridden = false;
35+
36+
currentSearchParams.forEach((value, key) => {
37+
if (key.toLowerCase().startsWith('utm_')) {
38+
if (key.toLowerCase() === 'utm_content') {
39+
isUtmContentOverridden = true;
40+
}
41+
42+
url.searchParams.set(key, value);
43+
}
44+
});
45+
46+
if (isUtmContentOverridden && !url.searchParams.has('utm_place')) {
47+
url.searchParams.set('utm_place', content);
48+
}
49+
}
50+
2151
return url.toString();
2252
};
2353

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "hawk-yard",
3-
"version": "2.0.0",
3+
"version": "2.0.1",
44
"private": true,
55
"engines": {
66
"node": ">=20.11.0",

0 commit comments

Comments
 (0)