mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-20 04:03:26 +01:00
Revert "[AltWidget] Waits until the following day to reload timeline if an error occurs"
iOS automatically determines how often to refresh widgets based on user's behavior, so we should rely on that instead of artificially delaying timeline reloads until the next day if an error occurs.
This reverts commit 5997ac5424.
This commit is contained in:
@@ -85,11 +85,6 @@ struct Provider: IntentTimelineProvider
|
|||||||
func getTimeline(for configuration: ViewAppIntent, in context: Context, completion: @escaping (Timeline<AppEntry>) -> Void) {
|
func getTimeline(for configuration: ViewAppIntent, in context: Context, completion: @escaping (Timeline<AppEntry>) -> Void) {
|
||||||
self.prepare { (result) in
|
self.prepare { (result) in
|
||||||
autoreleasepool {
|
autoreleasepool {
|
||||||
let currentDate = Calendar.current.startOfDay(for: Date())
|
|
||||||
let nextRefreshDate = Calendar.current.date(byAdding: .day, value: 1, to: currentDate) ?? currentDate.addingTimeInterval(1 * 60 * 60 * 24)
|
|
||||||
|
|
||||||
let timeline: Timeline<AppEntry>
|
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
let context = try result.get()
|
let context = try result.get()
|
||||||
@@ -107,41 +102,49 @@ struct Provider: IntentTimelineProvider
|
|||||||
installedApp = InstalledApp.fetchAltStore(in: context)
|
installedApp = InstalledApp.fetchAltStore(in: context)
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let snapshot = installedApp.map(AppSnapshot.init) else { throw ALTError(.invalidApp) }
|
let snapshot = installedApp.map(AppSnapshot.init)
|
||||||
|
|
||||||
|
var entries: [AppEntry] = []
|
||||||
|
|
||||||
// Generate a timeline consisting of one entry per day.
|
// Generate a timeline consisting of one entry per day.
|
||||||
|
|
||||||
|
if let snapshot = snapshot
|
||||||
|
{
|
||||||
|
let currentDate = Calendar.current.startOfDay(for: Date())
|
||||||
let numberOfDays = snapshot.expirationDate.numberOfCalendarDays(since: currentDate)
|
let numberOfDays = snapshot.expirationDate.numberOfCalendarDays(since: currentDate)
|
||||||
|
|
||||||
if numberOfDays >= 0
|
if numberOfDays >= 0
|
||||||
{
|
{
|
||||||
let entries = (0 ..< min(numberOfDays, 7)).compactMap { dayOffset -> AppEntry? in
|
for dayOffset in 0 ..< min(numberOfDays, 7)
|
||||||
guard let entryDate = Calendar.current.date(byAdding: .day, value: dayOffset, to: currentDate) else { return nil }
|
{
|
||||||
|
guard let entryDate = Calendar.current.date(byAdding: .day, value: dayOffset, to: currentDate) else { continue }
|
||||||
|
|
||||||
let score = Float(dayOffset + 1) / Float(numberOfDays)
|
let score = Float(dayOffset + 1) / Float(numberOfDays)
|
||||||
|
|
||||||
let entry = AppEntry(date: entryDate, relevance: TimelineEntryRelevance(score: score), app: snapshot)
|
let entry = AppEntry(date: entryDate, relevance: TimelineEntryRelevance(score: score), app: snapshot)
|
||||||
return entry
|
entries.append(entry)
|
||||||
}
|
}
|
||||||
|
|
||||||
timeline = Timeline(entries: entries, policy: .atEnd)
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
let entry = AppEntry(date: Date(), app: snapshot)
|
let entry = AppEntry(date: Date(), app: snapshot)
|
||||||
timeline = Timeline(entries: [entry], policy: .after(nextRefreshDate))
|
entries.append(entry)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let timeline = Timeline(entries: entries, policy: .atEnd)
|
||||||
|
completion(timeline)
|
||||||
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
print("Error preparing widget timeline:", error)
|
print("Error preparing widget timeline:", error)
|
||||||
|
|
||||||
let entry = AppEntry(date: Date(), app: nil)
|
let entry = AppEntry(date: Date(), app: nil)
|
||||||
timeline = Timeline(entries: [entry], policy: .after(nextRefreshDate))
|
let timeline = Timeline(entries: [entry], policy: .atEnd)
|
||||||
}
|
|
||||||
|
|
||||||
completion(timeline)
|
completion(timeline)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private func prepare(completion: @escaping (Result<NSManagedObjectContext, Error>) -> Void)
|
private func prepare(completion: @escaping (Result<NSManagedObjectContext, Error>) -> Void)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user