11export const ATOMIC_WALLET_MOBILE_SCHEME = "atomicwallet://buy-gift-card"
22export const ATOMIC_WALLET_WEB_URL = "https://atomicwallet.io/buy-gift-cards"
33
4+ const TRACKING_PARAM_PREFIXES = [ "utm_" , "fbclid" , "gclid" , "ref" , "source" , "campaign" , "medium" , "content" , "term" ]
5+
46const GIFT_CARD_PROVIDER_ALIASES : Array < [ RegExp , string ] > = [
57 [ / a m a z o n / i, "amazon" ] ,
68 [ / g o o g l e \s * p l a y | y o u t u b e | g o o g l e p l a y / i, "google_play" ] ,
@@ -14,6 +16,25 @@ const SUPPORTED_GIFT_CARD_PROVIDERS = new Set(
1416 GIFT_CARD_PROVIDER_ALIASES . map ( ( [ , provider ] ) => provider ) ,
1517)
1618
19+ export function stripTrackingParams ( url : string ) : string {
20+ try {
21+ const parsed = new URL ( url )
22+ const keysToRemove : string [ ] = [ ]
23+ parsed . searchParams . forEach ( ( _ , key ) => {
24+ const lower = key . toLowerCase ( )
25+ if ( TRACKING_PARAM_PREFIXES . some ( ( prefix ) => lower . startsWith ( prefix ) ) ) {
26+ keysToRemove . push ( key )
27+ }
28+ } )
29+ for ( const key of keysToRemove ) {
30+ parsed . searchParams . delete ( key )
31+ }
32+ return parsed . toString ( )
33+ } catch {
34+ return url
35+ }
36+ }
37+
1738export function normalizeGiftCardProvider ( provider : string ) : string {
1839 return provider . trim ( ) . replace ( / \s + / g, "_" ) . toLowerCase ( )
1940}
@@ -33,14 +54,18 @@ export function getAtomicWalletGiftCardDeepLink(amount: number, provider: string
3354 const normalizedProvider = normalizeGiftCardProvider ( provider )
3455 const encodedProvider = encodeURIComponent ( normalizedProvider )
3556 const encodedAmount = encodeURIComponent ( amount . toString ( ) )
36- return `${ ATOMIC_WALLET_MOBILE_SCHEME } ?amount=${ encodedAmount } &provider=${ encodedProvider } `
57+ return stripTrackingParams (
58+ `${ ATOMIC_WALLET_MOBILE_SCHEME } ?amount=${ encodedAmount } &provider=${ encodedProvider } `
59+ )
3760}
3861
3962export function getAtomicWalletGiftCardWebLink ( amount : number , provider : string ) : string {
4063 const normalizedProvider = normalizeGiftCardProvider ( provider )
4164 const encodedProvider = encodeURIComponent ( normalizedProvider )
4265 const encodedAmount = encodeURIComponent ( amount . toString ( ) )
43- return `${ ATOMIC_WALLET_WEB_URL } ?amount=${ encodedAmount } &provider=${ encodedProvider } `
66+ return stripTrackingParams (
67+ `${ ATOMIC_WALLET_WEB_URL } ?amount=${ encodedAmount } &provider=${ encodedProvider } `
68+ )
4469}
4570
4671export function getAtomicWalletGiftCardLink ( amount : number , provider : string ) : string {
@@ -59,7 +84,7 @@ export function openAtomicWalletGiftCard(amount: number, provider: string): stri
5984 const url = getAtomicWalletGiftCardLink ( amount , provider )
6085
6186 if ( typeof window !== "undefined" ) {
62- window . location . href = url
87+ window . open ( url , "_blank" , "noreferrer,noopener" )
6388 }
6489
6590 return url
0 commit comments