xylabs/sdk-react

View on GitHub
packages/pixel/src/lib/Tracking/Referrer.ts

Summary

Maintainability
A
1 hr
Test Coverage
export class Referrer {
  private static storageId = '_coin_referrer'
  local: string
  session: string
  constructor() {
    this.session = this.getFromSession() ?? document.referrer
    sessionStorage.setItem(Referrer.storageId, this.session)
    this.local = this.getFromLocal() ?? document.referrer
    localStorage.setItem(Referrer.storageId, this.local)
  }

  toJson() {
    if ((this.local && this.local.length > 0) || (this.session && this.session.length > 0)) {
      return {
        local: this.local,
        session: this.session,
      }
    }
  }

  private getFromLocal() {
    const value = localStorage.getItem(Referrer.storageId)
    if (value && value.length > 0) {
      return value
    }
  }

  private getFromSession() {
    const value = sessionStorage.getItem(Referrer.storageId)
    if (value && value.length > 0) {
      return value
    }
  }
}