WAZZUP Help

Yandex Metrics Script Code

(function () {
  function ChangeLinkWA() {

    // The {wz_metric} token is used for substituting the Analytics code.
    // Make sure that the token and the text in which it is written,
    // were separated by at least one space character.

    this.text = 'Hello! My application number: {wz_metric}';
    this.cookieSource = '_ym_uid';
    this.observer = null;
  }

  ChangeLinkWA.prototype.editLink = function (url, id) {
    if (decodeURIComponent(url.split('text=')[1]) === this.text.replace(/{wz_metric}/gi, id)) return;
    
    var regexNumberPhone = /\d+/;
    if(!regexNumberPhone.test(url)) return
    var phone = url.match(regexNumberPhone)[0];
    var host = url.split(phone)[0];

    var newUrl = (host === 'https://wa.me/') 
      ? `${host}${phone}?text=${this.text.replace(/{wz_metric}/gi, id)}`
      : `${host}${phone}&text=${this.text.replace(/{wz_metric}/gi, id)}`
    
    return newUrl;
  };

  ChangeLinkWA.prototype.getCookie = function (name) {
    var cookie = document.cookie;
    var matches = cookie.match(new RegExp(`(?:^|; )${ name.replace(/([.$?*|{}()[]\/+^])/g, '\\$1') }=([^;]*)`));
    
    return matches ? decodeURIComponent(matches[1]) : undefined;
  };

  ChangeLinkWA.prototype.censusLinks = function () {
    var links = document.querySelectorAll('[href*="//wa.me"], [href*="//api.whatsapp.com/send"], [href*="//web.whatsapp.com/send"], [href^="whatsapp://send"]');
    var id = this.getCookie(this.cookieSource);
    var that = this;

    links.forEach(function(link) {
      var newLink = that.editLink(link.href, id)

      if (newLink) link.href = newLink;
    });
  };

  ChangeLinkWA.prototype.initObserver = function () {
    var that = this;
    this.observer = new MutationObserver(function () {
      that.censusLinks();
    });
  };

  ChangeLinkWA.prototype.startObserver = function () {
    this.observer.observe(document.body, {
      attributeFilter: ['href'],
      attributes: true,
      childList: true,
      attributeOldValue: true,
      characterDataOldValue: true,
      characterData: true,
      subtree: true,
    });
  };

  ChangeLinkWA.prototype.init = function () {
    this.initObserver();
    this.startObserver();
  };

  if (!(window.__wz_scripts && window.__wz_scripts.scriptsChangeLinkWA)) {
    if (!window.__wz_scripts) window.__wz_scripts = {};
    
    window.__wz_scripts.scriptsChangeLinkWA = new ChangeLinkWA();
    window.__wz_scripts.scriptsChangeLinkWA.init();
  }
})();