|
62 | 62 | const SHORT_DOMAIN = DOMAINS_CONFIG.refer; |
63 | 63 | const ATTRIBUTION_MODEL = |
64 | 64 | script.getAttribute('data-attribution-model') || 'last-click'; |
65 | | - const QUERY_PARAM = script.getAttribute('data-query-param') || 'via'; |
66 | | - const QUERY_PARAM_VALUE = new URLSearchParams(location.search).get( |
67 | | - QUERY_PARAM, |
68 | | - ); |
| 65 | + |
| 66 | + // Resolve query params from data-query-param and data-query-params |
| 67 | + const QUERY_PARAMS = (() => { |
| 68 | + const queryParam = script.getAttribute('data-query-param'); |
| 69 | + const queryParams = script.getAttribute('data-query-params'); |
| 70 | + |
| 71 | + let resolvedQueryParams = ['via']; |
| 72 | + |
| 73 | + if (queryParam) { |
| 74 | + resolvedQueryParams = [queryParam, ...resolvedQueryParams]; |
| 75 | + } else if (queryParams) { |
| 76 | + try { |
| 77 | + resolvedQueryParams = [ |
| 78 | + ...JSON.parse(queryParams), |
| 79 | + ...resolvedQueryParams, |
| 80 | + ]; |
| 81 | + } catch (error) { |
| 82 | + console.warn( |
| 83 | + '[dubAnalytics] Failed to parse data-query-params.', |
| 84 | + error, |
| 85 | + ); |
| 86 | + } |
| 87 | + } |
| 88 | + |
| 89 | + return [...new Set(resolvedQueryParams)]; |
| 90 | + })(); |
| 91 | + |
| 92 | + const QUERY_PARAM_VALUE = (() => { |
| 93 | + const params = new URLSearchParams(location.search); |
| 94 | + |
| 95 | + for (const param of QUERY_PARAMS) { |
| 96 | + if (params.get(param)) { |
| 97 | + return params.get(param); |
| 98 | + } |
| 99 | + } |
| 100 | + |
| 101 | + return null; |
| 102 | + })(); |
69 | 103 |
|
70 | 104 | // Initialize global DubAnalytics object |
71 | 105 | window.DubAnalytics = window.DubAnalytics || { |
|
269 | 303 | o: COOKIE_OPTIONS, // was COOKIE_OPTIONS |
270 | 304 | d: SHORT_DOMAIN, // was SHORT_DOMAIN |
271 | 305 | m: ATTRIBUTION_MODEL, // was ATTRIBUTION_MODEL |
272 | | - p: QUERY_PARAM, // was QUERY_PARAM |
| 306 | + p: QUERY_PARAMS, // was QUERY_PARAM |
273 | 307 | v: QUERY_PARAM_VALUE, // was QUERY_PARAM_VALUE |
274 | 308 | n: DOMAINS_CONFIG, // was DOMAINS_CONFIG |
275 | 309 | k: PUBLISHABLE_KEY, |
|
0 commit comments