- Refactor calendar modules and some messaging modules to better organize them by business rules and decouple them - Work toward a common architecture for the different calendar providers by introducing interfaces for the drivers - Modify cron job to use the new sync statuses and stages
26 lines
648 B
TypeScript
26 lines
648 B
TypeScript
import { MESSAGING_THROTTLE_DURATION } from 'src/modules/messaging/common/constants/messaging-throttle-duration';
|
|
|
|
export const isThrottled = (
|
|
syncStageStartedAt: string | null,
|
|
throttleFailureCount: number,
|
|
): boolean => {
|
|
if (!syncStageStartedAt) {
|
|
return false;
|
|
}
|
|
|
|
return (
|
|
computeThrottlePauseUntil(syncStageStartedAt, throttleFailureCount) >
|
|
new Date()
|
|
);
|
|
};
|
|
|
|
const computeThrottlePauseUntil = (
|
|
syncStageStartedAt: string,
|
|
throttleFailureCount: number,
|
|
): Date => {
|
|
return new Date(
|
|
new Date(syncStageStartedAt).getTime() +
|
|
MESSAGING_THROTTLE_DURATION * Math.pow(2, throttleFailureCount - 1),
|
|
);
|
|
};
|