Welcome to mirror list, hosted at ThFree Co, Russian Federation.

queue_events.js « utils « diffs « javascripts « assets « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
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));
  });
}