in HuggingChat-Mac/LocalSTT/AudioModelManager.swift [156:184]
func updateProgressBar(targetProgress: Float, maxTime: TimeInterval) async {
let initialProgress = loadingProgressValue
let decayConstant = -log(1 - targetProgress) / Float(maxTime)
let startTime = Date()
while true {
let elapsedTime = Date().timeIntervalSince(startTime)
// Break down the calculation
let decayFactor = exp(-decayConstant * Float(elapsedTime))
let progressIncrement = (1 - initialProgress) * (1 - decayFactor)
let currentProgress = initialProgress + progressIncrement
await MainActor.run {
loadingProgressValue = currentProgress
}
if currentProgress >= targetProgress {
break
}
do {
try await Task.sleep(nanoseconds: 100_000_000)
} catch {
break
}
}
}