Skip to content

Commit 017e98a

Browse files
committed
Added weather entry to model
1 parent d5d7fa5 commit 017e98a

File tree

3 files changed

+47
-25
lines changed

3 files changed

+47
-25
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//
2+
// WeatherEntry.swift
3+
// SkyWizardWidgetExtension
4+
//
5+
// Created by Hishara Dilshan on 31/12/2024.
6+
//
7+
8+
import Foundation
9+
import WidgetKit
10+
import SkyWizardEnum
11+
12+
struct WeatherEntry: TimelineEntry {
13+
let date: Date = .init()
14+
let weatherType: CurrentWeatherType
15+
let temperature: Int
16+
let city: String
17+
let realFeel: Int
18+
}
19+
20+
#if DEBUG
21+
extension WeatherEntry {
22+
static let sample: WeatherEntry = .init(
23+
weatherType: .day_cloudy,
24+
temperature: 20,
25+
city: "Colombo",
26+
realFeel: 25
27+
)
28+
}
29+
#endif

SkyWizardWidget/Presentation/WeatherWidget.swift

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,17 @@ import WidgetKit
99
import SwiftUI
1010

1111
struct Provider: TimelineProvider {
12-
func placeholder(in context: Context) -> SimpleEntry {
13-
SimpleEntry(date: Date(), emoji: "😀")
12+
func placeholder(in context: Context) -> WeatherEntry {
13+
.sample
1414
}
1515

16-
func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> ()) {
17-
let entry = SimpleEntry(date: Date(), emoji: "😀")
16+
func getSnapshot(in context: Context, completion: @escaping (WeatherEntry) -> ()) {
17+
let entry: WeatherEntry = .sample
1818
completion(entry)
1919
}
2020

2121
func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
22-
var entries: [SimpleEntry] = []
23-
24-
// Generate a timeline consisting of five entries an hour apart, starting from the current date.
25-
let currentDate = Date()
26-
for secondsOffset in 0 ..< 5 {
27-
let entryDate = Calendar.current.date(byAdding: .second, value: secondsOffset * 10, to: currentDate)!
28-
let entry = SimpleEntry(date: entryDate, emoji: "😀")
29-
entries.append(entry)
30-
}
22+
var entries: [WeatherEntry] = []
3123

3224
let timeline = Timeline(entries: entries, policy: .atEnd)
3325
completion(timeline)
@@ -38,11 +30,6 @@ struct Provider: TimelineProvider {
3830
// }
3931
}
4032

41-
struct SimpleEntry: TimelineEntry {
42-
let date: Date
43-
let emoji: String
44-
}
45-
4633
struct SkyWizardWidgetEntryView : View {
4734
var entry: Provider.Entry
4835

@@ -51,14 +38,14 @@ struct SkyWizardWidgetEntryView : View {
5138
Text("Time:")
5239
Text(entry.date.formatted(date: .omitted, time: .complete))
5340

54-
Text("Emoji:")
55-
Text(entry.emoji)
41+
Text("City:")
42+
Text(entry.city)
5643
}
5744
}
5845
}
5946

6047
struct WeatherWidget: Widget {
61-
let kind: String = "SkyWizard Widget"
48+
let kind: String = "SkyWizard Weather"
6249

6350
var body: some WidgetConfiguration {
6451
StaticConfiguration(kind: kind, provider: Provider()) { entry in
@@ -72,14 +59,14 @@ struct WeatherWidget: Widget {
7259
}
7360
}
7461
.supportedFamilies([.systemMedium])
75-
.configurationDisplayName("My Widget")
76-
.description("This is an example widget.")
62+
.configurationDisplayName("Weather Widget")
63+
.description("Weather Widget for SkyWizard")
7764
}
7865
}
7966

8067
#Preview(as: .systemSmall) {
8168
WeatherWidget()
8269
} timeline: {
83-
SimpleEntry(date: .now, emoji: "😀")
84-
SimpleEntry(date: .now, emoji: "🤩")
70+
WeatherEntry.sample
71+
WeatherEntry.sample
8572
}

SkyWizardWidget/Presentation/WeatherWidgetViewModel.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,9 @@
66
//
77

88
import Foundation
9+
import SkyWizardService
10+
import SkyWizardModel
11+
12+
class WeatherWidgetViewModel: ObservableObject {
13+
14+
}

0 commit comments

Comments
 (0)