DFWatchFaceProvider.swift 1.04 KB
//
//  DFWatchFaceProvider.swift
//  hippo-watch-extension
//

import WidgetKit

struct DFWatchFaceProvider: TimelineProvider {
    let face: DFWatchFaceKind

    func placeholder(in context: Context) -> DFWatchFaceEntry {
        DFWatchFaceEntry(date: .now, face: face, data: .placeholder, theme: nil)
    }

    func getSnapshot(in context: Context, completion: @escaping (DFWatchFaceEntry) -> Void) {
        completion(DFWatchFaceEntry(date: .now, face: face, data: .placeholder, theme: nil))
    }

    func getTimeline(in context: Context, completion: @escaping (Timeline<DFWatchFaceEntry>) -> Void) {
        Task {
            let data = await DFWatchFaceMockService.fetch(face: face)
            let theme = await DFWatchThemeStore.currentTheme()
            let entry = DFWatchFaceEntry(date: .now, face: face, data: data, theme: theme)
            let nextRefresh = Calendar.current.date(byAdding: .minute, value: 15, to: .now) ?? .now.addingTimeInterval(900)
            completion(Timeline(entries: [entry], policy: .after(nextRefresh)))
        }
    }
}