|
|
@@ -13,7 +13,7 @@ struct ContentView: View {
|
|
|
@AppStorage(UserDefaultsKeys.WeekStart) private var weekStart = Date()
|
|
|
let inPreview = ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1"
|
|
|
|
|
|
- @Query private var items: [Project]
|
|
|
+ @Query(sort: \Project.sortOrder) private var items: [Project]
|
|
|
@State private var selection: Project?
|
|
|
|
|
|
var body: some View {
|
|
|
@@ -28,6 +28,7 @@ struct ContentView: View {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ .onMove(perform: reOrder)
|
|
|
.onDelete(perform: deleteItems)
|
|
|
}
|
|
|
.navigationSplitViewColumnWidth(min: 180, ideal: 200)
|
|
|
@@ -56,6 +57,15 @@ struct ContentView: View {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private func reOrder(fromOffsets: IndexSet, toOffset: Int) {
|
|
|
+ var s = items.sorted(by: { $0.sortOrder < $1.sortOrder })
|
|
|
+ s.move(fromOffsets: fromOffsets, toOffset: toOffset)
|
|
|
+ for (index, item) in s.enumerated() {
|
|
|
+ item.sortOrder = index
|
|
|
+ }
|
|
|
+ try? self.modelContext.save()
|
|
|
+ }
|
|
|
+
|
|
|
private func autosave() {
|
|
|
if inPreview {
|
|
|
// This isn't great, but we shouldn't be running this in a preview
|