FEATURE: analytics client now scrape user email and room group

This commit is contained in:
Kharhamel 2021-09-30 16:14:55 +02:00
parent d0c0f3e7fc
commit 726f52976d
7 changed files with 20 additions and 8 deletions

View file

@ -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();
}

View file

@ -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();

View file

@ -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
) {}
}

View file

@ -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;
}
}

View file

@ -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) {

View file

@ -148,6 +148,7 @@ export class AuthenticateController extends BaseController {
JSON.stringify({
authToken,
userUuid,
email,
roomUrl,
mapUrlStart,
organizationMemberToken,

View file

@ -60,6 +60,7 @@ export class MapController extends BaseController {
mapUrl,
policy_type: GameRoomPolicyTypes.ANONYMOUS_POLICY,
roomSlug: "", // Deprecated
group: null,
tags: [],
textures: [],
contactPage: undefined,