@cliqdigital/bloomreach-sdk
Version:
React component library for integrating Bloomreach SDK with push notifications support
56 lines (55 loc) • 2.42 kB
JavaScript
;
"use client";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.useTracking = void 0;
var react_1 = require("react");
var BloomreachContext_1 = require("../context/BloomreachContext");
function useTracking() {
var _a = (0, BloomreachContext_1.useBloomreachContext)(), isInitialized = _a.isInitialized, hasConsent = _a.hasConsent;
var trackEvent = (0, react_1.useCallback)(function (eventName, properties) {
if (!isInitialized || !window.exponea) {
console.warn('Cannot track event, SDK not initialized:', eventName);
return;
}
console.log('Tracking event:', eventName, properties);
window.exponea.track(eventName, __assign(__assign({}, properties), { timestamp: new Date().toISOString() }));
}, [isInitialized]);
var trackPageView = (0, react_1.useCallback)(function (path, title, properties) {
if (!isInitialized || !window.exponea) {
console.warn('Cannot track page view, SDK not initialized:', path);
return;
}
var url = path || window.location.pathname;
var pageTitle = title || document.title;
console.log('Tracking page view:', url, pageTitle);
window.exponea.track('page_visit', __assign(__assign({ url: window.location.origin + url, path: url, title: pageTitle }, properties), { timestamp: new Date().toISOString() }));
}, [isInitialized]);
var identifyUser = (0, react_1.useCallback)(function (userId, properties) {
if (!isInitialized || !window.exponea) {
console.warn('Cannot identify user, SDK not initialized:', userId);
return;
}
console.log('Identifying user:', userId);
window.exponea.identify(userId);
if (properties) {
window.exponea.update(properties);
}
}, [isInitialized]);
return {
trackEvent: trackEvent,
trackPageView: trackPageView,
identifyUser: identifyUser,
};
}
exports.useTracking = useTracking;