From 726f52976d407371035fe372cd6cc2a66dad39e8 Mon Sep 17 00:00:00 2001 From: Kharhamel Date: Thu, 30 Sep 2021 16:14:55 +0200 Subject: [PATCH] FEATURE: analytics client now scrape user email and room group --- front/src/Administration/AnalyticsClient.ts | 8 ++++---- front/src/Connexion/ConnectionManager.ts | 4 ++-- front/src/Connexion/LocalUser.ts | 6 +++++- front/src/Connexion/Room.ts | 6 ++++++ front/src/Phaser/Game/GameScene.ts | 2 +- pusher/src/Controller/AuthenticateController.ts | 1 + pusher/src/Controller/MapController.ts | 1 + 7 files changed, 20 insertions(+), 8 deletions(-) diff --git a/front/src/Administration/AnalyticsClient.ts b/front/src/Administration/AnalyticsClient.ts index c8f13e3c..64548515 100644 --- a/front/src/Administration/AnalyticsClient.ts +++ b/front/src/Administration/AnalyticsClient.ts @@ -19,10 +19,10 @@ class AnalyticsClient { } } - identifyUser(uuid: string) { + identifyUser(uuid: string, email: string | null) { this.posthogPromise .then((posthog) => { - posthog.identify(uuid, { uuid, wa: true }); + posthog.identify(uuid, { uuid, email, wa: true }); }) .catch(); } @@ -43,10 +43,10 @@ class AnalyticsClient { .catch(); } - enteredRoom(roomId: string) { + enteredRoom(roomId: string, roomGroup: string | null) { this.posthogPromise .then((posthog) => { - posthog.capture("$pageView", { roomId }); + posthog.capture("$pageView", { roomId, roomGroup }); }) .catch(); } diff --git a/front/src/Connexion/ConnectionManager.ts b/front/src/Connexion/ConnectionManager.ts index 87efc804..b346f450 100644 --- a/front/src/Connexion/ConnectionManager.ts +++ b/front/src/Connexion/ConnectionManager.ts @@ -112,7 +112,7 @@ class ConnectionManager { const data = await Axios.post(`${PUSHER_URL}/register`, { organizationMemberToken }).then( (res) => res.data ); - this.localUser = new LocalUser(data.userUuid, data.textures); + this.localUser = new LocalUser(data.userUuid, data.textures, data.email); this.authToken = data.authToken; localUserStore.saveUser(this.localUser); localUserStore.setAuthToken(this.authToken); @@ -196,7 +196,7 @@ class ConnectionManager { return Promise.reject(new Error("Invalid URL")); } if (this.localUser) { - analyticsClient.identifyUser(this.localUser.uuid); + analyticsClient.identifyUser(this.localUser.uuid, this.localUser.email); } this.serviceWorker = new _ServiceWorker(); diff --git a/front/src/Connexion/LocalUser.ts b/front/src/Connexion/LocalUser.ts index 42b4bbf8..d4498883 100644 --- a/front/src/Connexion/LocalUser.ts +++ b/front/src/Connexion/LocalUser.ts @@ -24,5 +24,9 @@ export function areCharacterLayersValid(value: string[] | null): boolean { } export class LocalUser { - constructor(public readonly uuid: string, public textures: CharacterTexture[]) {} + constructor( + public readonly uuid: string, + public textures: CharacterTexture[], + public email: string | null = null + ) {} } diff --git a/front/src/Connexion/Room.ts b/front/src/Connexion/Room.ts index 9161b7d8..860223c6 100644 --- a/front/src/Connexion/Room.ts +++ b/front/src/Connexion/Room.ts @@ -21,6 +21,7 @@ export class Room { private instance: string | undefined; private readonly _search: URLSearchParams; private _contactPage: string | undefined; + private _group: string | null = null; private constructor(private roomUrl: URL) { this.id = roomUrl.pathname; @@ -104,6 +105,7 @@ export class Room { console.log("Map ", this.id, " resolves to URL ", data.mapUrl); this._mapUrl = data.mapUrl; this._textures = data.textures; + this._group = data.group; this._authenticationMandatory = data.authenticationMandatory || false; this._iframeAuthentication = data.iframeAuthentication; this._contactPage = data.contactPage || CONTACT_URL; @@ -185,4 +187,8 @@ export class Room { get contactPage(): string | undefined { return this._contactPage; } + + get group(): string | null { + return this._group; + } } diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index ead94544..057f9fb1 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -428,7 +428,7 @@ export class GameScene extends DirtyScene { gameManager.gameSceneIsCreated(this); urlManager.pushRoomIdToUrl(this.room); - analyticsClient.enteredRoom(this.room.id); + analyticsClient.enteredRoom(this.room.id, this.room.group); contactPageStore.set(this.room.contactPage); if (touchScreenManager.supportTouchScreen) { diff --git a/pusher/src/Controller/AuthenticateController.ts b/pusher/src/Controller/AuthenticateController.ts index ce217439..972cc102 100644 --- a/pusher/src/Controller/AuthenticateController.ts +++ b/pusher/src/Controller/AuthenticateController.ts @@ -148,6 +148,7 @@ export class AuthenticateController extends BaseController { JSON.stringify({ authToken, userUuid, + email, roomUrl, mapUrlStart, organizationMemberToken, diff --git a/pusher/src/Controller/MapController.ts b/pusher/src/Controller/MapController.ts index ae8135a3..f775b50c 100644 --- a/pusher/src/Controller/MapController.ts +++ b/pusher/src/Controller/MapController.ts @@ -60,6 +60,7 @@ export class MapController extends BaseController { mapUrl, policy_type: GameRoomPolicyTypes.ANONYMOUS_POLICY, roomSlug: "", // Deprecated + group: null, tags: [], textures: [], contactPage: undefined,