@@ -28,7 +28,7 @@ const telemetryConfig = {
2828 } ,
2929 env : 'atree' ,
3030 channel : '' ,
31- did : 'did ',
31+ did : ( typeof window !== 'undefined' && localStorage . getItem ( 'deviceId' ) ) || 'pending-device-id ',
3232 authtoken : '' ,
3333 userId :
3434 ( typeof window !== 'undefined' && localStorage . getItem ( 'userId' ) ) ||
@@ -44,36 +44,47 @@ const telemetryConfig = {
4444 tags : [ ] ,
4545} ;
4646
47- // Wait for device ID before initializing telemetry
48- if ( typeof window !== 'undefined' ) {
49- getDeviceId ( ) . then ( ( deviceId ) => {
50- telemetryConfig . did = deviceId ;
51- localStorage . setItem ( 'deviceId' , deviceId ) ;
52- console . log ( 'Telemetry Device ID (did):' , deviceId ) ;
53-
54- // Ensure telemetry is initialized only once
55- if ( ! CsTelemetryModule . instance . isInitialised ) {
56- CsTelemetryModule . instance . init ( { } ) ;
57- CsTelemetryModule . instance . telemetryService . initTelemetry ( {
58- config : telemetryConfig ,
59- userOrgDetails : { } ,
60- } ) ;
61- }
62- } ) ;
63- }
64-
6547// Exportable telemetry factory
6648export const telemetryFactory = {
6749 init : ( ) => {
68- if (
69- typeof window !== 'undefined' &&
70- ! CsTelemetryModule . instance . isInitialised
71- ) {
72- CsTelemetryModule . instance . init ( { } ) ;
73- CsTelemetryModule . instance . telemetryService . initTelemetry ( {
74- config : telemetryConfig ,
75- userOrgDetails : { } ,
76- } ) ;
50+ if ( typeof window !== 'undefined' && ! CsTelemetryModule . instance . isInitialised ) {
51+ // Check if device ID already exists in localStorage
52+ const deviceId = localStorage . getItem ( 'deviceId' ) ;
53+
54+ if ( deviceId && deviceId !== 'pending-device-id' ) {
55+ // Use existing device ID
56+ telemetryConfig . did = deviceId ;
57+ console . log ( 'Telemetry Device ID (did):' , deviceId ) ;
58+
59+ // Initialize telemetry with existing device ID
60+ CsTelemetryModule . instance . init ( { } ) ;
61+ CsTelemetryModule . instance . telemetryService . initTelemetry ( {
62+ config : telemetryConfig ,
63+ userOrgDetails : { } ,
64+ } ) ;
65+ } else {
66+ // Get device ID asynchronously and initialize
67+ getDeviceId ( ) . then ( ( deviceId ) => {
68+ telemetryConfig . did = deviceId ;
69+ localStorage . setItem ( 'deviceId' , deviceId ) ;
70+ console . log ( 'Telemetry Device ID (did):' , deviceId ) ;
71+
72+ // Initialize telemetry with proper device ID
73+ CsTelemetryModule . instance . init ( { } ) ;
74+ CsTelemetryModule . instance . telemetryService . initTelemetry ( {
75+ config : telemetryConfig ,
76+ userOrgDetails : { } ,
77+ } ) ;
78+ } ) . catch ( ( error ) => {
79+ console . error ( 'Failed to get device ID:' , error ) ;
80+ // Fallback initialization without device ID
81+ CsTelemetryModule . instance . init ( { } ) ;
82+ CsTelemetryModule . instance . telemetryService . initTelemetry ( {
83+ config : telemetryConfig ,
84+ userOrgDetails : { } ,
85+ } ) ;
86+ } ) ;
87+ }
7788 }
7889 } ,
7990
@@ -86,12 +97,32 @@ export const telemetryFactory = {
8697 }
8798 } ,
8899
100+ updateDeviceId : async ( ) => {
101+ if ( typeof window !== 'undefined' ) {
102+ try {
103+ const deviceId = await getDeviceId ( ) ;
104+ telemetryConfig . did = deviceId ;
105+ localStorage . setItem ( 'deviceId' , deviceId ) ;
106+ console . log ( 'Telemetry Device ID updated:' , deviceId ) ;
107+ return deviceId ;
108+ } catch ( error ) {
109+ console . error ( 'Failed to update device ID:' , error ) ;
110+ return null ;
111+ }
112+ }
113+ } ,
114+
115+ getCurrentDeviceId : ( ) => {
116+ return telemetryConfig . did ;
117+ } ,
118+
89119 interact : ( interactEventInput ) => {
90120 if (
91121 typeof window !== 'undefined' &&
92122 CsTelemetryModule . instance . isInitialised
93123 ) {
94124 const eventData = getEventData ( interactEventInput ) ;
125+ console . log ( 'Sending interact telemetry with device ID:' , telemetryConfig . did ) ;
95126 CsTelemetryModule . instance . telemetryService . raiseInteractTelemetry ( {
96127 options : eventData . options ,
97128 edata : eventData . edata ,
@@ -105,6 +136,7 @@ export const telemetryFactory = {
105136 CsTelemetryModule . instance . isInitialised
106137 ) {
107138 const eventData = getEventData ( impressionEventInput ) ;
139+ console . log ( 'Sending impression telemetry with device ID:' , telemetryConfig . did ) ;
108140 CsTelemetryModule . instance . telemetryService . raiseImpressionTelemetry ( {
109141 options : eventData . options ,
110142 edata : eventData . edata ,
0 commit comments