session-desktop/ts/util/timer.ts
2021-04-22 18:03:58 +10:00

56 lines
1.4 KiB
TypeScript

import { padStart } from 'lodash';
import { SessionIconType } from '../components/session/icon';
export function getIncrement(length: number): number {
if (length < 0) {
return 1000;
}
// if less than one minute, default to 500 ms so that UI counter is accurate
if (length <= 60000) {
return 500;
}
return Math.ceil(length / 12);
}
export function getTimerBucketIcon(expiration: number, length: number): SessionIconType {
const delta = expiration - Date.now();
if (delta < 0) {
return SessionIconType.Timer60;
}
if (delta > length) {
return SessionIconType.Timer00;
}
const bucket = Math.round((delta / length) * 12);
const padded = padStart(String(bucket * 5), 2, '0');
switch (padded) {
case '00':
return SessionIconType.Timer00;
case '05':
return SessionIconType.Timer05;
case '10':
return SessionIconType.Timer10;
case '15':
return SessionIconType.Timer15;
case '20':
return SessionIconType.Timer20;
case '25':
return SessionIconType.Timer25;
case '30':
return SessionIconType.Timer30;
case '35':
return SessionIconType.Timer35;
case '40':
return SessionIconType.Timer40;
case '45':
return SessionIconType.Timer45;
case '50':
return SessionIconType.Timer50;
case '55':
return SessionIconType.Timer55;
default:
return SessionIconType.Timer60;
}
}