Skip to content

Commit 772db16

Browse files
Merge pull request #215 from siddhishinde0723/atree
Telemetry changes
2 parents 5d6543f + 23ad30b commit 772db16

4 files changed

Lines changed: 71 additions & 31 deletions

File tree

Dockerfile.atree

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ WORKDIR /workspace
66
# Copy package.json and package-lock.json to the working directory
77
COPY package*.json ./
88

9+
ENV NX_IGNORE_CYCLES=true
910
# Install dependencies
1011
RUN npm install --legacy-peer-deps
1112

@@ -17,9 +18,11 @@ COPY . .
1718

1819
# Build Specific Application
1920
# Build only specific applications
20-
RUN npx nx run-many --target=build --projects=atree-app,content,players
21-
npm install -g pm2
21+
#RUN npx nx run-many --target=build --projects=atree-app,content,players,atree-auth,registration
22+
#RUN npx nx run-many --target=build --projects=atree-app,content,players,atree-auth,registration --skip-nx-cache || true
2223
# Install PM2 to manage multiple apps
24+
RUN npx nx run-many --target=build --projects=atree-app,content,players --skip-nx-cache --parallel=1
25+
RUN npm install -g pm2
2326

2427
# Expose the ports for all apps
2528
EXPOSE 3003

apps/atree-app/src/pages/_app.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,13 @@ export default function RootLayout({ Component, pageProps }: AppProps) {
7777
const router = useRouter();
7878

7979
useEffect(() => {
80-
telemetryFactory.init();
80+
// Initialize telemetry without async/await to avoid tslib dependency
81+
if (typeof window !== 'undefined') {
82+
telemetryFactory.init();
83+
}
8184
}, []);
8285

86+
8387
useEffect(() => {
8488
runWhenIdle(clearLoginErrorHash);
8589
}, []);

apps/atree-app/src/pages/register/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ export default function Registration() {
142142
lastName,
143143
username,
144144
password: formData.password,
145+
email: formData.username,
145146
gender: gender,
146147
...(formData.mobile && { mobile: formData.mobile }),
147148
tenantCohortRoleMapping: tenantCohortRoleMapping,

apps/atree-app/src/utils/telemetry.js

Lines changed: 60 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -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
6648
export 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

Comments
 (0)