mirror of
https://github.com/navidrome/navidrome.git
synced 2026-08-01 07:21:17 +00:00
27 lines
843 B
JavaScript
27 lines
843 B
JavaScript
import { useEffect, useState, useRef } from 'react'
|
|
import { useInterval } from '../common'
|
|
|
|
export const useScanElapsedTime = (scanning, elapsedTime) => {
|
|
const [elapsed, setElapsed] = useState(Number(elapsedTime) || 0)
|
|
const prevScanningRef = useRef(scanning)
|
|
|
|
useEffect(() => {
|
|
const prevScanning = prevScanningRef.current
|
|
const serverElapsed = Number(elapsedTime) || 0
|
|
|
|
if (scanning !== prevScanning) {
|
|
// Scan has just started or stopped - sync with server value
|
|
setElapsed(serverElapsed)
|
|
} else if (!scanning) {
|
|
// Not scanning -> always reflect server value (initial load or after finish)
|
|
setElapsed(serverElapsed)
|
|
}
|
|
|
|
prevScanningRef.current = scanning
|
|
}, [scanning, elapsedTime])
|
|
|
|
useInterval(() => setElapsed((prev) => prev + 1e9), scanning ? 1000 : null)
|
|
|
|
return elapsed
|
|
}
|