Skip to content

Commit

Permalink
0.0.6
Browse files Browse the repository at this point in the history
  • Loading branch information
= committed Jul 27, 2022
1 parent 0a651b1 commit fe94867
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 51 deletions.
140 changes: 90 additions & 50 deletions src/analytics.ts
Original file line number Diff line number Diff line change
@@ -1,43 +1,45 @@
import * as utils from '@dcl/ecs-scene-utils'
import * as utils from "@dcl/ecs-scene-utils";
import { isPreviewMode } from "@decentraland/EnvironmentAPI";
import { getUserData } from "@decentraland/Identity";
import { getParcel } from "@decentraland/ParcelIdentity";
import { signedFetch } from "@decentraland/SignedFetch";
import { user } from './helpers/user';

import { user } from "./helpers/user";
import { getPlayersInScene } from "@decentraland/Players";

export function initAnalytics() {
getPlayersInScene().then((players) => {
updateConnections(players);
});

onPlayerConnectedObservable.add((player) => {
// log("player entered: ", player.userId)
if(player.userId == user){
let delay = new Entity()
delay.addComponent(new utils.Delay(5000,()=>{
recordEvent("player_connected", player);
engine.removeEntity(delay)
}))
engine.addEntity(delay)
}
let delay = new Entity();
delay.addComponent(
new utils.Delay(5000, () => {
recordEvent("player_connected", player);
engine.removeEntity(delay);
})
);
engine.addEntity(delay);
});

onPlayerDisconnectedObservable.add((player) => {
// log("player left: ", player.userId)
if(player.userId == user){
recordEvent("player_disconnected", player);
}
recordEvent("player_disconnected", player);
});

onEnterSceneObservable.add((player) => {
log("player entered scene: ", player.userId);
if(player.userId == user){
recordEvent("player_entered_scene", player);
if (player.userId == user) {
recordEvent("player_entered_scene", player);
}
});

// shows player left scene
onLeaveSceneObservable.add((player) => {
// log("player left scene: ", player.userId)
if(player.userId == user){
recordEvent("player_left_scene", player);
if (player.userId == user) {
recordEvent("player_left_scene", player);
}
});

Expand All @@ -51,7 +53,7 @@ export function initAnalytics() {
// player animation
onPlayerExpressionObservable.add(({ expressionId }) => {
// log("Expression: ", expressionId)

recordEvent("player_expression", expressionId);
});

Expand All @@ -66,37 +68,75 @@ export async function recordEvent(eventType: any, metadata: any) {
log("recording event", eventType);
// getting parcel info
// executeTask(async () => {
const parcel = await getParcel();
log('parcels: ', parcel.land.sceneJsonData.scene.parcels)
const parcels = parcel.land.sceneJsonData.scene.parcels;

log('spawnpoints: ', parcel.land.sceneJsonData.spawnPoints)
const spawnpoints = parcel.land.sceneJsonData.spawnPoints;

log('base parcel: ', parcel.land.sceneJsonData.scene.base)
const baseParcel = parcel.land.sceneJsonData.scene.base;
const sceneJsonData = parcel.land.sceneJsonData;

let ispreview = await isPreviewMode();
// let BASE_URL = "https://analytics.dcl-vlm.io/record-event";
let BASE_URL = ispreview ? "http://localhost:3001/record-event" : "https://analytics.dcl-vlm.io/record-event";

getUserData().then(async (data) => {
const player = data;
let body = JSON.stringify({"eventType": eventType, "player": player, "data":metadata, scene: {spawnpoints, parcels, baseParcel, sceneJsonData}})
log('body is', body)
let res = await signedFetch(BASE_URL, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({ eventType: eventType, player: player, data: metadata, scene: { spawnpoints, parcels, baseParcel, sceneJsonData } })
});
let json;
if (res.text) {
json = JSON.parse(res.text);
}
log("json is", json);
const parcel = await getParcel();
log("parcels: ", parcel.land.sceneJsonData.scene.parcels);
const parcels = parcel.land.sceneJsonData.scene.parcels;

log("spawnpoints: ", parcel.land.sceneJsonData.spawnPoints);
const spawnpoints = parcel.land.sceneJsonData.spawnPoints;

log("base parcel: ", parcel.land.sceneJsonData.scene.base);
const baseParcel = parcel.land.sceneJsonData.scene.base;
const sceneJsonData = parcel.land.sceneJsonData;

let ispreview = await isPreviewMode();
// let BASE_URL = "https://analytics.dcl-vlm.io/record-event";
let BASE_URL = ispreview ? "http://localhost:3001/record-event" : "https://analytics.dcl-vlm.io/record-event";

getUserData().then(async (data) => {
const player = data;
let body = JSON.stringify({ eventType: eventType, player: player, data: metadata, scene: { spawnpoints, parcels, baseParcel } })
log("body is", body);
let res = await signedFetch(BASE_URL, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body
});
let json;
if (res.text) {
json = JSON.parse(res.text);
}
log("json is", json);
});
// });
}

export async function updateConnections(players: any) {
// getting parcel info
// executeTask(async () => {
const parcel = await getParcel();
log("parcels: ", parcel.land.sceneJsonData.scene.parcels);
const parcels = parcel.land.sceneJsonData.scene.parcels;

log("spawnpoints: ", parcel.land.sceneJsonData.spawnPoints);
const spawnpoints = parcel.land.sceneJsonData.spawnPoints;

log("base parcel: ", parcel.land.sceneJsonData.scene.base);
const baseParcel = parcel.land.sceneJsonData.scene.base;
const sceneJsonData = parcel.land.sceneJsonData;

let ispreview = await isPreviewMode();
// let BASE_URL = "https://analytics.dcl-vlm.io/record-event";
let BASE_URL = ispreview ? "http://localhost:3001/update-connections" : "https://analytics.dcl-vlm.io/update-connections";

getUserData().then(async (data) => {
const player = data;
let body = JSON.stringify({ players: players, scene: { spawnpoints, parcels, baseParcel } });
log("body is", body);
let res = await signedFetch(BASE_URL, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body
});
let json;
if (res.text) {
json = JSON.parse(res.text);
}
log("json is", json);
});
// });
}
1 change: 0 additions & 1 deletion src/init.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { initImages } from "./images";
import { initVideoScreens } from "./videos";

export const initScene = (sceneData: any) => {
initAnalytics();
initDialogs(sceneData.dialogs);
initImages(sceneData.imageTextures);
initVideoScreens(sceneData.videoSystems);
Expand Down

0 comments on commit fe94867

Please sign in to comment.