Skip to content

Commit 42d7ada

Browse files
Addressed Comments
1 parent 734e244 commit 42d7ada

File tree

1 file changed

+16
-18
lines changed

1 file changed

+16
-18
lines changed

firefox-ios/Client/Frontend/Browser/DownloadHelper/DownloadLiveActivityWrapper.swift

+16-18
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,16 @@ import Shared
1111
@available(iOS 16.2, *)
1212
class DownloadLiveActivityWrapper: DownloadProgressDelegate {
1313
private struct UX {
14-
static let updateCooldown: TimeInterval = 0.75
14+
static let updateCooldown: Double = 0.75 // Update Cooldown in Seconds
1515
}
1616

1717
enum DurationToDismissal: UInt64 {
1818
case none = 0
1919
case delayed = 3_000_000_000 // Milliseconds to dismissal
2020
}
2121

22+
let throttler = Throttler(seconds: UX.updateCooldown)
23+
2224
private var lastUpdateTime = Date.distantPast
2325

2426
var downloadLiveActivity: Activity<DownloadLiveActivityAttributes>?
@@ -50,36 +52,32 @@ class DownloadLiveActivityWrapper: DownloadProgressDelegate {
5052
func end(durationToDismissal: DurationToDismissal) {
5153
let downloadsStates = DownloadLiveActivityUtil.buildContentState(downloads: downloadProgressManager.downloads)
5254
let contentState = DownloadLiveActivityAttributes.ContentState(downloads: downloadsStates)
53-
update(throttle: false)
5455
Task {
56+
await update()
5557
try await Task.sleep(nanoseconds: durationToDismissal.rawValue)
5658
await downloadLiveActivity?.end(using: contentState, dismissalPolicy: .immediate)
5759
}
5860
}
5961

60-
private func shouldUpdateLiveActivity() -> Bool {
61-
let currentTime = Date()
62-
63-
guard currentTime.timeIntervalSince(lastUpdateTime) >= UX.updateCooldown else {return false}
64-
lastUpdateTime = currentTime
65-
return true
66-
}
67-
68-
private func update(throttle: Bool = true) {
62+
private func update() async {
6963
let downloadsStates = DownloadLiveActivityUtil.buildContentState(downloads: downloadProgressManager.downloads)
7064
let contentState = DownloadLiveActivityAttributes.ContentState(downloads: downloadsStates)
71-
if !throttle || shouldUpdateLiveActivity() {
72-
Task {
73-
await self.downloadLiveActivity?.update(using: contentState)
74-
}
75-
}
65+
await self.downloadLiveActivity?.update(using: contentState)
7666
}
7767

7868
func updateCombinedBytesDownloaded(value: Int64) {
79-
update()
69+
throttler.throttle {
70+
Task {
71+
await self.update()
72+
}
73+
}
8074
}
8175

8276
func updateCombinedTotalBytesExpected(value: Int64?) {
83-
update()
77+
throttler.throttle {
78+
Task {
79+
await self.update()
80+
}
81+
}
8482
}
8583
}

0 commit comments

Comments
 (0)