|
|
|
import { padStart } from 'lodash';
|
|
|
|
import { SessionIconType } from '../components/icon/Icons';
|
|
|
|
|
|
|
|
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 'timer60';
|
|
|
|
}
|
|
|
|
if (delta > length) {
|
|
|
|
return 'timer00';
|
|
|
|
}
|
|
|
|
const bucket = Math.round((delta / length) * 12);
|
|
|
|
|
|
|
|
const padded = padStart(String(bucket * 5), 2, '0');
|
|
|
|
switch (padded) {
|
|
|
|
case '00':
|
|
|
|
return 'timer00';
|
|
|
|
case '05':
|
|
|
|
return 'timer05';
|
|
|
|
case '10':
|
|
|
|
return 'timer10';
|
|
|
|
case '15':
|
|
|
|
return 'timer15';
|
|
|
|
case '20':
|
|
|
|
return 'timer20';
|
|
|
|
case '25':
|
|
|
|
return 'timer25';
|
|
|
|
case '30':
|
|
|
|
return 'timer30';
|
|
|
|
case '35':
|
|
|
|
return 'timer35';
|
|
|
|
case '40':
|
|
|
|
return 'timer40';
|
|
|
|
case '45':
|
|
|
|
return 'timer45';
|
|
|
|
case '50':
|
|
|
|
return 'timer50';
|
|
|
|
case '55':
|
|
|
|
return 'timer55';
|
|
|
|
default:
|
|
|
|
return 'timer60';
|
|
|
|
}
|
|
|
|
}
|