From 188e09c22c0ed8eaad0b0725d103eee704c91317 Mon Sep 17 00:00:00 2001 From: koen Date: Sun, 9 Jan 2022 18:48:31 +0100 Subject: [PATCH] Refresh homeview automatically --- Swiftfin/Objects/RefreshHelper.swift | 19 ++++++++++++++++++- Swiftfin/Views/HomeView.swift | 3 +++ 2 files changed, 21 insertions(+), 1 deletion(-) 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 16274325..7520a521 100644 --- a/Swiftfin/Views/HomeView.swift +++ b/Swiftfin/Views/HomeView.swift @@ -119,5 +119,8 @@ struct HomeView: View { } } } + .onAppear { + refreshHelper.refreshStaleData() + } } }