From dd978dcfa04f37d95393fb131767cc0f3d0a079d Mon Sep 17 00:00:00 2001
From: Greg Fodor <gfodor@gmail.com>
Date: Mon, 9 Apr 2018 15:59:55 -0700
Subject: [PATCH] Add entry timing flags for collecting DAU/MAU

---
 package.json             |  1 +
 src/utils/hub-channel.js | 15 +++++++++++++--
 yarn.lock                |  8 +++++++-
 3 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/package.json b/package.json
index cd5ab60a8..1ff85b5cf 100644
--- a/package.json
+++ b/package.json
@@ -32,6 +32,7 @@
     "minijanus": "^0.5.0",
     "mobile-detect": "^1.4.1",
     "moment": "^2.22.0",
+    "moment-timezone": "^0.5.14",
     "moving-average": "^1.0.0",
     "naf-janus-adapter": "https://github.com/mozilla/naf-janus-adapter#feature/disconnect",
     "networked-aframe": "https://github.com/mozillareality/networked-aframe#mr-social-client/master",
diff --git a/src/utils/hub-channel.js b/src/utils/hub-channel.js
index f040e58b1..095decc54 100644
--- a/src/utils/hub-channel.js
+++ b/src/utils/hub-channel.js
@@ -1,4 +1,4 @@
-import moment from "moment";
+import moment from "moment-timezone";
 
 export default class HubChannel {
   constructor(store) {
@@ -46,15 +46,26 @@ export default class HubChannel {
   };
 
   getEntryTimingFlags = () => {
-    const entryTimingFlags = { isNewDaily: true, isNewMonthly: true, isNewDayHourWindow: true, isNewMonthWindow: true };
+    const entryTimingFlags = { isNewDaily: true, isNewMonthly: true, isNewDayWindow: true, isNewMonthWindow: true };
 
     if (!this.store.state.lastEnteredAt) {
       return entryTimingFlags;
     }
 
     const lastEntered = moment(this.store.state.lastEnteredAt);
+    const lastEnteredPst = moment(lastEntered).tz("America/Los_Angeles");
+    const nowPst = moment().tz("America/Los_Angeles");
     const dayWindowAgo = moment().subtract(1, "day");
     const monthWindowAgo = moment().subtract(1, "month");
+
+    entryTimingFlags.isNewDaily =
+      lastEnteredPst.dayOfYear() !== nowPst.dayOfYear() || lastEnteredPst.year() !== nowPst.year();
+    entryTimingFlags.isNewMonthly =
+      lastEnteredPst.month() !== nowPst.month() || lastEnteredPst.year() !== nowPst.year();
+    entryTimingFlags.isNewDayWindow = lastEntered.isBefore(dayWindowAgo);
+    entryTimingFlags.isNewMonthWindow = lastEntered.isBefore(monthWindowAgo);
+
+    return entryTimingFlags;
   };
 
   disconnect = () => {
diff --git a/yarn.lock b/yarn.lock
index 90da68e25..3e07d2484 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5148,7 +5148,13 @@ module-deps@^6.0.0:
     through2 "^2.0.0"
     xtend "^4.0.0"
 
-moment@^2.22.0:
+moment-timezone@^0.5.14:
+  version "0.5.14"
+  resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.14.tgz#4eb38ff9538b80108ba467a458f3ed4268ccfcb1"
+  dependencies:
+    moment ">= 2.9.0"
+
+"moment@>= 2.9.0", moment@^2.22.0:
   version "2.22.0"
   resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.0.tgz#7921ade01017dd45186e7fee5f424f0b8663a730"
 
-- 
GitLab