diff --git a/Swiftfin/Objects/RefreshHelper.swift b/Swiftfin/Objects/RefreshHelper.swift index 6c8cceb8..d3947853 100644 --- a/Swiftfin/Objects/RefreshHelper.swift +++ b/Swiftfin/Objects/RefreshHelper.swift @@ -11,9 +11,10 @@ import UIKit // A more general derivative of // https://stackoverflow.com/questions/65812080/introspect-library-uirefreshcontrol-with-swiftui-not-working -class RefreshHelper { +final class RefreshHelper { var refreshControl: UIRefreshControl? var refreshAction: (() -> Void)? + private var lastAutomaticRefresh = Date() @objc func didRefresh() { guard let refreshControl = refreshControl else { return } @@ -21,3 +22,19 @@ class RefreshHelper { refreshControl.endRefreshing() } } + +// MARK: - automatic refreshing + +extension RefreshHelper { + private static let timeUntilStale = TimeInterval(60) + + func refreshStaleData() { + guard isStale else { return } + lastAutomaticRefresh = .now + refreshAction?() + } + + private var isStale: Bool { + lastAutomaticRefresh.addingTimeInterval(Self.timeUntilStale) < .now + } +} diff --git a/Swiftfin/Views/HomeView.swift b/Swiftfin/Views/HomeView.swift index 5fbb9378..b3c5e00c 100644 --- a/Swiftfin/Views/HomeView.swift +++ b/Swiftfin/Views/HomeView.swift @@ -130,5 +130,8 @@ struct HomeView: View { } } } + .onAppear { + refreshHelper.refreshStaleData() + } } }