From c8301f4a7196f4f0afa0c1847b24b5994eac8812 Mon Sep 17 00:00:00 2001 From: Leonardo Dourado Date: Thu, 2 Jan 2025 14:07:10 -0300 Subject: [PATCH 1/5] feat: add default props for sendCustomEvent --- src/dispatchers/index.ts | 51 +++++++++++++++++++++++++++++++++++----- src/index.ts | 4 +++- 2 files changed, 48 insertions(+), 7 deletions(-) diff --git a/src/dispatchers/index.ts b/src/dispatchers/index.ts index 028aa75..221b8a1 100644 --- a/src/dispatchers/index.ts +++ b/src/dispatchers/index.ts @@ -1,6 +1,10 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ import { providersList } from '../providers'; -import { EventData, PropertiesType, UserPropertiesType } from './dispatchers.types'; +import { + EventData, + PropertiesType, + UserPropertiesType, +} from './dispatchers.types'; import { checkIfMixPanelIsInitialized } from '../utils'; /** @@ -10,7 +14,9 @@ import { checkIfMixPanelIsInitialized } from '../utils'; * @returns {void} */ export const dispatchEventToAllProviders = (eventData: EventData): void => { - const localStorageProvidersList = JSON.parse(localStorage?.getItem('_bl_providers') as string); + const localStorageProvidersList = JSON.parse( + localStorage?.getItem('_bl_providers') as string, + ); const providersFiltered = localStorageProvidersList ? providersList.filter((item) => localStorageProvidersList.includes(item.name)) @@ -48,13 +54,39 @@ const sendScreenEvent = (screen: string): void => { } }; +let defaultProperties: PropertiesType = {}; + +const saveDefaultPropertiesToLocalStorage = (properties: PropertiesType): void => { + localStorage.setItem('_bl_props', JSON.stringify(properties)); +}; + +const loadDefaultPropertiesFromLocalStorage = (): PropertiesType => { + const storedProperties = localStorage.getItem('_bl_props'); + return storedProperties ? JSON.parse(storedProperties) : {}; +}; + +const setDefaultProperties = (properties: PropertiesType): void => { + defaultProperties = { ...properties }; + saveDefaultPropertiesToLocalStorage(defaultProperties); +}; + const sendCustomEvent = (event: string, properties: PropertiesType): void => { + if (Object.keys(defaultProperties).length === 0) { + defaultProperties = loadDefaultPropertiesFromLocalStorage(); + } + const mergedProperties = { + ...defaultProperties, + ...properties, + }; + if (currentEnvironment === 'development') { console.log( - `[blu-lytics]: Custom event: ${event} - ${JSON.stringify(properties)}`, + `[blu-lytics]: Custom event: ${event} - ${JSON.stringify( + mergedProperties, + )}`, ); } else { - dispatchEventToAllProviders({ event, properties }); + dispatchEventToAllProviders({ event, properties: mergedProperties }); } }; @@ -64,11 +96,18 @@ const sendUserIdentification = ( ): void => { if (currentEnvironment === 'development') { console.log( - `[blu-lytics]: User identification: ${id} - ${JSON.stringify(userProperties)}`, + `[blu-lytics]: User identification: ${id} - ${JSON.stringify( + userProperties, + )}`, ); } else { dispatchEventToAllProviders({ id, userProperties }); } }; -export { sendCustomEvent, sendScreenEvent, sendUserIdentification }; +export { + sendCustomEvent, + sendScreenEvent, + sendUserIdentification, + setDefaultProperties, +}; diff --git a/src/index.ts b/src/index.ts index 89aa72d..17e19ee 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,2 +1,4 @@ export { initializeProviders } from './initializers'; -export { sendCustomEvent, sendScreenEvent, sendUserIdentification } from './dispatchers'; +export { + sendCustomEvent, sendScreenEvent, sendUserIdentification, setDefaultProperties, +} from './dispatchers'; From f94f599ab69fa624e4a2673637362d1ae7ecb16f Mon Sep 17 00:00:00 2001 From: Leonardo Dourado Date: Mon, 5 May 2025 16:43:45 -0300 Subject: [PATCH 2/5] fix: add console.log --- src/dispatchers/index.ts | 51 ++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/src/dispatchers/index.ts b/src/dispatchers/index.ts index 221b8a1..446e6bd 100644 --- a/src/dispatchers/index.ts +++ b/src/dispatchers/index.ts @@ -19,24 +19,29 @@ export const dispatchEventToAllProviders = (eventData: EventData): void => { ); const providersFiltered = localStorageProvidersList - ? providersList.filter((item) => localStorageProvidersList.includes(item.name)) + ? providersList.filter((item) => + localStorageProvidersList.includes(item.name), + ) : providersList; if (providersFiltered.length > 0) { providersFiltered.forEach((provider) => { checkIfMixPanelIsInitialized(provider.name); const actions = { - screenEvent: () => provider.screenEvent - && eventData.screen - && provider.screenEvent(eventData.screen), - customEvent: () => provider.customEvent - && eventData.event - && eventData.properties - && provider.customEvent(eventData.event, eventData.properties), - userIdentification: () => provider.userIdentification - && eventData.id - && eventData.userProperties - && provider.userIdentification(eventData.id, eventData.userProperties), + screenEvent: () => + provider.screenEvent && + eventData.screen && + provider.screenEvent(eventData.screen), + customEvent: () => + provider.customEvent && + eventData.event && + eventData.properties && + provider.customEvent(eventData.event, eventData.properties), + userIdentification: () => + provider.userIdentification && + eventData.id && + eventData.userProperties && + provider.userIdentification(eventData.id, eventData.userProperties), }; Object.values(actions).forEach((action) => action()); @@ -56,29 +61,40 @@ const sendScreenEvent = (screen: string): void => { let defaultProperties: PropertiesType = {}; -const saveDefaultPropertiesToLocalStorage = (properties: PropertiesType): void => { +const saveDefaultPropertiesToLocalStorage = ( + properties: PropertiesType, +): void => { localStorage.setItem('_bl_props', JSON.stringify(properties)); }; const loadDefaultPropertiesFromLocalStorage = (): PropertiesType => { + console.log('loadDefaultPropertiesFromLocalStorage disparou funcao'); const storedProperties = localStorage.getItem('_bl_props'); + console.log( + storedProperties, + 'storedProperties dentro do loadDefaultPropertiesFromLocalStorage', + ); return storedProperties ? JSON.parse(storedProperties) : {}; }; const setDefaultProperties = (properties: PropertiesType): void => { + console.log(properties, 'setDefaultProperties disparou funcao'); defaultProperties = { ...properties }; saveDefaultPropertiesToLocalStorage(defaultProperties); }; const sendCustomEvent = (event: string, properties: PropertiesType): void => { - if (Object.keys(defaultProperties).length === 0) { - defaultProperties = loadDefaultPropertiesFromLocalStorage(); - } + const storedDefaultProperties = loadDefaultPropertiesFromLocalStorage(); + + console.log(storedDefaultProperties, 'storedDefaultProperties'); + const mergedProperties = { - ...defaultProperties, + ...storedDefaultProperties, ...properties, }; + console.log(mergedProperties, 'mergedProperties'); + if (currentEnvironment === 'development') { console.log( `[blu-lytics]: Custom event: ${event} - ${JSON.stringify( @@ -111,3 +127,4 @@ export { sendUserIdentification, setDefaultProperties, }; + From e400dfe2e8c4ddb91dd69ef928b1633ac171c7f1 Mon Sep 17 00:00:00 2001 From: Leonardo Dourado Date: Thu, 8 May 2025 18:16:51 -0300 Subject: [PATCH 3/5] fix: dispatchers --- src/dispatchers/index.ts | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/src/dispatchers/index.ts b/src/dispatchers/index.ts index 446e6bd..396c4c8 100644 --- a/src/dispatchers/index.ts +++ b/src/dispatchers/index.ts @@ -50,9 +50,9 @@ export const dispatchEventToAllProviders = (eventData: EventData): void => { }; const currentEnvironment = localStorage.getItem('_bl_env') || 'development'; - +const isDevelopment = currentEnvironment === 'development'; const sendScreenEvent = (screen: string): void => { - if (currentEnvironment === 'development') { + if (isDevelopment) { console.log(`[blu-lytics]: Screen event: ${screen}`); } else { dispatchEventToAllProviders({ screen }); @@ -68,17 +68,11 @@ const saveDefaultPropertiesToLocalStorage = ( }; const loadDefaultPropertiesFromLocalStorage = (): PropertiesType => { - console.log('loadDefaultPropertiesFromLocalStorage disparou funcao'); const storedProperties = localStorage.getItem('_bl_props'); - console.log( - storedProperties, - 'storedProperties dentro do loadDefaultPropertiesFromLocalStorage', - ); return storedProperties ? JSON.parse(storedProperties) : {}; }; const setDefaultProperties = (properties: PropertiesType): void => { - console.log(properties, 'setDefaultProperties disparou funcao'); defaultProperties = { ...properties }; saveDefaultPropertiesToLocalStorage(defaultProperties); }; @@ -86,16 +80,12 @@ const setDefaultProperties = (properties: PropertiesType): void => { const sendCustomEvent = (event: string, properties: PropertiesType): void => { const storedDefaultProperties = loadDefaultPropertiesFromLocalStorage(); - console.log(storedDefaultProperties, 'storedDefaultProperties'); - const mergedProperties = { ...storedDefaultProperties, ...properties, }; - console.log(mergedProperties, 'mergedProperties'); - - if (currentEnvironment === 'development') { + if (isDevelopment) { console.log( `[blu-lytics]: Custom event: ${event} - ${JSON.stringify( mergedProperties, @@ -110,7 +100,7 @@ const sendUserIdentification = ( id: string, userProperties: UserPropertiesType, ): void => { - if (currentEnvironment === 'development') { + if (isDevelopment) { console.log( `[blu-lytics]: User identification: ${id} - ${JSON.stringify( userProperties, From f0b2ae5daac23c67624e866e551f5255e52a0aa4 Mon Sep 17 00:00:00 2001 From: Leonardo Dourado Date: Tue, 6 Jan 2026 11:19:16 -0300 Subject: [PATCH 4/5] refactor: improve default properties --- src/dispatchers/index.ts | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/dispatchers/index.ts b/src/dispatchers/index.ts index 396c4c8..3000b72 100644 --- a/src/dispatchers/index.ts +++ b/src/dispatchers/index.ts @@ -20,8 +20,8 @@ export const dispatchEventToAllProviders = (eventData: EventData): void => { const providersFiltered = localStorageProvidersList ? providersList.filter((item) => - localStorageProvidersList.includes(item.name), - ) + localStorageProvidersList.includes(item.name), + ) : providersList; if (providersFiltered.length > 0) { @@ -59,8 +59,6 @@ const sendScreenEvent = (screen: string): void => { } }; -let defaultProperties: PropertiesType = {}; - const saveDefaultPropertiesToLocalStorage = ( properties: PropertiesType, ): void => { @@ -72,16 +70,26 @@ const loadDefaultPropertiesFromLocalStorage = (): PropertiesType => { return storedProperties ? JSON.parse(storedProperties) : {}; }; +let defaultProperties: PropertiesType = loadDefaultPropertiesFromLocalStorage(); + const setDefaultProperties = (properties: PropertiesType): void => { defaultProperties = { ...properties }; saveDefaultPropertiesToLocalStorage(defaultProperties); }; const sendCustomEvent = (event: string, properties: PropertiesType): void => { - const storedDefaultProperties = loadDefaultPropertiesFromLocalStorage(); + const rawStoredProperties = localStorage.getItem('_bl_props'); + + if (rawStoredProperties) { + try { + defaultProperties = JSON.parse(rawStoredProperties); + } catch (error) { + console.error('[blu-lytics] Failed to parse stored properties', error); + } + } const mergedProperties = { - ...storedDefaultProperties, + ...defaultProperties, ...properties, }; From 966b2b668d4287eb4dbabb428c63fd6c9f2aa22c Mon Sep 17 00:00:00 2001 From: Leonardo Dourado Date: Wed, 7 Jan 2026 14:01:56 -0300 Subject: [PATCH 5/5] bump: version --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 5af6248..ef4acd7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@useblu/blu-lytics", - "version": "1.0.14", + "version": "1.0.15", "private": false, "license": "MIT", "main": "lib/index.js", @@ -61,4 +61,4 @@ "access": "public" }, "sideEffects": false -} +} \ No newline at end of file