summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/diffs/utils/queue_events.js
blob: cc7141df622b873941a99b98b4c5bc5c448a1094 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { delay } from 'lodash';
import api from '~/api';
import { DEFER_DURATION, TRACKING_CAP_KEY, TRACKING_CAP_LENGTH } from '../constants';

function shouldDispatchEvent() {
  const timestamp = parseInt(localStorage.getItem(TRACKING_CAP_KEY), 10);

  if (Number.isNaN(timestamp)) {
    return true;
  }

  return timestamp + TRACKING_CAP_LENGTH < Date.now();
}

export function dispatchRedisHllUserEvent(event, deferDuration = 0) {
  delay(() => api.trackRedisHllUserEvent(event), deferDuration);
}

export function queueRedisHllEvents(events, { verifyCap = false } = {}) {
  if (verifyCap) {
    if (!shouldDispatchEvent()) {
      return;
    }

    localStorage.setItem(TRACKING_CAP_KEY, Date.now());
  }

  events.forEach((event, index) => {
    dispatchRedisHllUserEvent(event, DEFER_DURATION * (index + 1));
  });
}