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