Explorar o código

@uppy/utils: refactor `prettyETA` (#3080)

Antoine du Hamel %!s(int64=3) %!d(string=hai) anos
pai
achega
059870a80b

+ 3 - 5
packages/@uppy/utils/src/prettyETA.js

@@ -6,11 +6,9 @@ module.exports = function prettyETA (seconds) {
   // Only display hours and minutes if they are greater than 0 but always
   // display minutes if hours is being displayed
   // Display a leading zero if the there is a preceding unit: 1m 05s, but 5s
-  const hoursStr = time.hours ? `${time.hours}h ` : ''
-  const minutesVal = time.hours ? (`0${time.minutes}`).substr(-2) : time.minutes
-  const minutesStr = minutesVal ? `${minutesVal}m` : ''
-  const secondsVal = minutesVal ? (`0${time.seconds}`).substr(-2) : time.seconds
-  const secondsStr = time.hours ? '' : (minutesVal ? ` ${secondsVal}s` : `${secondsVal}s`)
+  const hoursStr = time.hours === 0 ? '' : `${time.hours}h`
+  const minutesStr = time.minutes === 0 ? '' : `${time.hours === 0 ? time.minutes : ` ${time.minutes.toString(10).padStart(2, '0')}`}m`
+  const secondsStr = time.hours !== 0 ? '' : `${time.minutes === 0 ? time.seconds : ` ${time.seconds.toString(10).padStart(2, '0')}`}s`
 
   return `${hoursStr}${minutesStr}${secondsStr}`
 }

+ 3 - 0
packages/@uppy/utils/src/prettyETA.test.js

@@ -5,8 +5,11 @@ describe('prettyETA', () => {
     expect(prettyETA(0)).toEqual('0s')
     expect(prettyETA(1.2)).toEqual('1s')
     expect(prettyETA(1)).toEqual('1s')
+    expect(prettyETA(63)).toEqual('1m 03s')
     expect(prettyETA(103)).toEqual('1m 43s')
     expect(prettyETA(1034.9)).toEqual('17m 14s')
+    expect(prettyETA(3600)).toEqual('1h')
+    expect(prettyETA(3660)).toEqual('1h 01m')
     expect(prettyETA(103984.1)).toEqual('4h 53m')
   })
 })