debian-mirror-gitlab/app/assets/javascripts/diffs/utils/queue_events.js
2022-07-16 19:58:13 +02:00

31 lines
825 B
JavaScript

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