diff --git a/AltWidget/Countdown.swift b/AltWidget/Countdown.swift index cb705627..0bdf4106 100644 --- a/AltWidget/Countdown.swift +++ b/AltWidget/Countdown.swift @@ -11,15 +11,16 @@ import WidgetKit struct Countdown: View { - let startDate: Date? - let endDate: Date? + var startDate: Date? + var endDate: Date? + var currentDate: Date = Date() @Environment(\.font) private var font private var numberOfDays: Int { guard let date = self.endDate else { return 0 } - let numberOfDays = date.numberOfCalendarDays(since: Date()) + let numberOfDays = date.numberOfCalendarDays(since: self.currentDate) return numberOfDays } diff --git a/AltWidget/WidgetView.swift b/AltWidget/WidgetView.swift index 5e02fdc9..8099cf70 100644 --- a/AltWidget/WidgetView.swift +++ b/AltWidget/WidgetView.swift @@ -21,7 +21,7 @@ struct WidgetView : View Group { if let app = self.entry.app { - let daysRemaining = app.expirationDate.numberOfCalendarDays(since: Date()) + let daysRemaining = app.expirationDate.numberOfCalendarDays(since: self.entry.date) GeometryReader { (geometry) in Group { @@ -70,7 +70,8 @@ struct WidgetView : View if daysRemaining >= 0 { Countdown(startDate: app.refreshedDate, - endDate: app.expirationDate) + endDate: app.expirationDate, + currentDate: self.entry.date) .font(.system(size: 20, weight: .semibold, design: .rounded)) .foregroundColor(Color.white) .opacity(0.8) @@ -146,6 +147,7 @@ struct WidgetView_Previews: PreviewProvider { static var previews: some View { let shortRefreshedDate = Calendar.current.date(byAdding: .day, value: -2, to: Date()) ?? Date() let shortExpirationDate = Calendar.current.date(byAdding: .day, value: 7, to: shortRefreshedDate) ?? Date() + let expiredExpirationDate = Calendar.current.date(byAdding: .day, value: -155, to: Date()) ?? Date() let longRefreshedDate = Calendar.current.date(byAdding: .day, value: -100, to: Date()) ?? Date() let longExpirationDate = Calendar.current.date(byAdding: .day, value: 365, to: longRefreshedDate) ?? Date() @@ -164,6 +166,13 @@ struct WidgetView_Previews: PreviewProvider { tintColor: .deltaPrimary, icon: UIImage(named: "Delta")) + let expiredDelta = AppSnapshot(name: "Delta", + bundleIdentifier: "com.rileytestut.Delta", + expirationDate: expiredExpirationDate, + refreshedDate: shortRefreshedDate, + tintColor: .deltaPrimary, + icon: UIImage(named: "Delta")) + return Group { WidgetView(entry: AppEntry(date: Date(), app: altstore)) .previewContext(WidgetPreviewContext(family: .systemSmall)) @@ -171,6 +180,9 @@ struct WidgetView_Previews: PreviewProvider { WidgetView(entry: AppEntry(date: Date(), app: delta)) .previewContext(WidgetPreviewContext(family: .systemSmall)) + WidgetView(entry: AppEntry(date: Date(), app: expiredDelta)) + .previewContext(WidgetPreviewContext(family: .systemSmall)) + WidgetView(entry: AppEntry(date: Date(), app: nil)) .previewContext(WidgetPreviewContext(family: .systemSmall))