diff --git a/Widgets/WidgetsBundle/QRCodeWidget.swift b/Widgets/WidgetsBundle/QRCodeWidget.swift index e69de29b..1db7b90f 100644 --- a/Widgets/WidgetsBundle/QRCodeWidget.swift +++ b/Widgets/WidgetsBundle/QRCodeWidget.swift @@ -0,0 +1,54 @@ +// +// QRCodeWidget.swift +// WidgetsExtension +// +// Created by kimhyungyu on 2023/02/05. +// + +import WidgetKit +import SwiftUI + +struct QRCodeProvider: TimelineProvider { + func placeholder(in context: Context) -> QRCodeEntry { + QRCodeEntry(date: Date()) + } + + func getSnapshot(in context: Context, completion: @escaping (QRCodeEntry) -> Void) { + let entry = QRCodeEntry(date: Date()) + completion(entry) + } + + func getTimeline(in context: Context, completion: @escaping (Timeline) -> Void) { + var entries: [QRCodeEntry] = [] + + let currentDate = Date() + for hourOffset in 0 ..< 5 { + let entryDate = Calendar.current.date(byAdding: .hour, value: hourOffset, to: currentDate)! + let entry = QRCodeEntry(date: entryDate) + entries.append(entry) + } + + let timeline = Timeline(entries: entries, policy: .never) + completion(timeline) + } +} + +struct QRCodeEntry: TimelineEntry { + let date: Date +} +struct QRCodeWidget: Widget { + let kind: String = "QRCodeWidget" + + var body: some WidgetConfiguration { + StaticConfiguration(kind: kind, + provider: QRCodeProvider()) { entry in + QRCodeEntryView(entry: entry) + } +} + +struct QRCodeWidget_Previews: PreviewProvider { + static var previews: some View { + QRCodeEntryView(entry: QRCodeEntry(date: Date())) + .previewContext(WidgetPreviewContext(family: .systemSmall)) + } +}