Skip to content

Commit

Permalink
add helper modules and utilities
Browse files Browse the repository at this point in the history
  • Loading branch information
sayan-rudder committed Feb 17, 2020
1 parent ae98f8e commit 875162f
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 19 deletions.
4 changes: 4 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,16 @@
"dependencies": {
"@ndhoule/clone": "^1.0.0",
"@ndhoule/defaults": "^2.0.1",
"@ndhoule/extend": "^2.0.0",
"@segment/localstorage-retry": "^1.2.2",
"@segment/store": "^1.3.20",
"@segment/top-domain": "^3.0.0",
"btoa": "^1.2.1",
"component-cookie": "^1.1.4",
"component-each": "^0.2.6",
"is": "^3.3.0",
"json3": "^3.3.3",
"obj-case": "^0.2.0",
"universal-analytics": "^0.4.20",
"xmlhttprequest": "^1.8.0"
},
Expand Down
73 changes: 54 additions & 19 deletions utils/utils.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//import * as XMLHttpRequestNode from "Xmlhttprequest";
import logger from "./logUtil"
import logger from "./logUtil";

let XMLHttpRequestNode;
if (!process.browser) {
Expand Down Expand Up @@ -123,31 +123,32 @@ function getJSONTrimmed(context, url, writeKey, callback) {
logger.debug("status 200 " + "calling callback");
cb_(200, xhr.responseText);
} else {
handleError(new Error("request failed with status: " + xhr.status + " for url: " + url));
handleError(
new Error(
"request failed with status: " + xhr.status + " for url: " + url
)
);
cb_(status);
}
};
xhr.send();
}

function handleError(error){

function handleError(error) {
let errorMessage = error.message ? error.message : undefined;
if(error instanceof Event){
if(error.target && error.target.localName == "script"){
errorMessage = "error in script loading: "+error.target.id;
if (error instanceof Event) {
if (error.target && error.target.localName == "script") {
errorMessage = "error in script loading: " + error.target.id;
}
}
if(errorMessage){
if (errorMessage) {
//console.log("%c"+errorMessage, 'color: blue');
//console.error(errorMessage);
logger.error(errorMessage)
logger.error(errorMessage);
}

}

function getDefaultPageProperties(){

function getDefaultPageProperties() {
let canonicalUrl = getCanonicalUrl();
let path = canonicalUrl ? canonicalUrl.pathname : window.location.pathname;
let referrer = document.referrer;
Expand All @@ -164,28 +165,62 @@ function getDefaultPageProperties(){
};
}

function getUrl(search){
function getUrl(search) {
let canonicalUrl = getCanonicalUrl();
let url = canonicalUrl ? canonicalUrl.indexOf('?') > -1 ? canonicalUrl : canonicalUrl + search : window.location.href;
let hashIndex = url.indexOf('#');
let url = canonicalUrl
? canonicalUrl.indexOf("?") > -1
? canonicalUrl
: canonicalUrl + search
: window.location.href;
let hashIndex = url.indexOf("#");
return hashIndex > -1 ? url.slice(0, hashIndex) : url;
}

function getCanonicalUrl() {
var tags = document.getElementsByTagName('link');
for (var i = 0, tag; tag = tags[i]; i++) {
if (tag.getAttribute('rel') === 'canonical') {
return tag.getAttribute('href');
var tags = document.getElementsByTagName("link");
for (var i = 0, tag; (tag = tags[i]); i++) {
if (tag.getAttribute("rel") === "canonical") {
return tag.getAttribute("href");
}
}
}

function getCurrency(val) {
if (!val) return;
if (typeof val === "number") {
return val;
}
if (typeof val !== "string") {
return;
}

val = val.replace(/\$/g, "");
val = parseFloat(val);

if (!isNaN(val)) {
return val;
}
}

function getRevenue(properties, eventName) {
var revenue = properties.revenue;
var orderCompletedRegExp = /^[ _]?completed[ _]?order[ _]?|^[ _]?order[ _]?completed[ _]?$/i;

// it's always revenue, unless it's called during an order completion.
if (!revenue && event && eventName.match(orderCompletedRegExp)) {
revenue = properties.total;
}

return getCurrency(revenue);
}

export {
replacer,
generateUUID,
getCurrentTimeFormatted,
getJSONTrimmed,
getJSON,
getRevenue,
getDefaultPageProperties,
handleError
};

0 comments on commit 875162f

Please sign in to comment.