Widget Features: - Add inline voting to timeline widget when no entry exists for today - Show random prompt from notification strings in voting mode - Update vote widget to use simple icon style for selection - Make stats bar full width in voted state view - Add Localizable.strings to widget extension target Bug Fixes: - Fix inverted date calculation in InsightsViewModel streak logic - Replace force unwraps with safe optional handling in widgets - Replace fatalError calls with graceful error handling - Fix CSV import safety in SettingsView Warning Fixes: - Add @retroactive to Color and Date extension conformances - Update deprecated onChange(of:perform:) to new syntax - Replace deprecated applicationIconBadgeNumber with setBadgeCount - Replace deprecated UIApplication.shared.windows API - Add @preconcurrency for Swift 6 protocol conformances - Add missing widget family cases to switch statement - Remove unused variables and #warning directives 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
41 lines
1.1 KiB
Swift
41 lines
1.1 KiB
Swift
//
|
|
// DataControllerDELETE.swift
|
|
// Feels
|
|
//
|
|
// SwiftData DELETE operations.
|
|
//
|
|
|
|
import SwiftData
|
|
import Foundation
|
|
|
|
extension DataController {
|
|
func clearDB() {
|
|
do {
|
|
try modelContext.delete(model: MoodEntryModel.self)
|
|
saveAndRunDataListeners()
|
|
} catch {
|
|
print("Failed to clear database: \(error)")
|
|
}
|
|
}
|
|
|
|
func deleteLast(numberOfEntries: Int) {
|
|
guard let startDate = Calendar.current.date(byAdding: .day, value: -numberOfEntries, to: Date()) else { return }
|
|
let entries = getData(startDate: startDate, endDate: Date(), includedDays: [])
|
|
|
|
for entry in entries {
|
|
modelContext.delete(entry)
|
|
}
|
|
save()
|
|
}
|
|
|
|
func deleteRandomFromLast(numberOfEntries: Int) {
|
|
guard let startDate = Calendar.current.date(byAdding: .day, value: -numberOfEntries, to: Date()) else { return }
|
|
let entries = getData(startDate: startDate, endDate: Date(), includedDays: [])
|
|
|
|
for entry in entries where Bool.random() {
|
|
modelContext.delete(entry)
|
|
}
|
|
save()
|
|
}
|
|
}
|