-
Notifications
You must be signed in to change notification settings - Fork 106
Expand file tree
/
Copy pathRemindersListDetail.swift
More file actions
52 lines (49 loc) · 1.19 KB
/
RemindersListDetail.swift
File metadata and controls
52 lines (49 loc) · 1.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import SQLiteData
import SwiftUI
@MainActor
@Observable
final class RemindersListDetailModel {
@ObservationIgnored @FetchOne var remindersList: RemindersList
@ObservationIgnored @FetchAll var reminders: [Reminder]
var editableRemindersList: RemindersList.Draft?
init(remindersList: RemindersList) {
_remindersList = FetchOne(
wrappedValue: remindersList,
RemindersList.find(remindersList.id)
)
_reminders = FetchAll(
Reminder.all
.where { $0.remindersListID.eq(remindersList.id) }
.order {
($0.isCompleted, $0.title)
}
)
}
}
struct RemindersListDetailView: View {
let model: RemindersListDetailModel
var body: some View {
List {
ForEach(model.reminders) { reminder in
Text(reminder.title)
}
}
.safeAreaInset(edge: .top) {
Text(model.remindersList.title)
.font(.headline)
}
}
}
#Preview {
let remindersList = try! prepareDependencies {
try $0.bootstrapDatabase()
return try $0.defaultDatabase.read { db in
try RemindersList.all.fetchOne(db)!
}
}
RemindersListDetailView(
model: RemindersListDetailModel(
remindersList: remindersList
)
)
}