- Add HealthKit State of Mind sync for mood entries - Add Live Activity with streak display and rating time window - Add App Shortcuts/Siri integration for voice mood logging - Add TipKit hints for feature discovery - Add centralized MoodLogger for consistent side effects - Add reminder time setting in Settings with time picker - Fix duplicate notifications when changing reminder time - Fix Live Activity streak showing 0 when not yet rated today - Fix slow tap response in entry detail mood selection - Update widget timeline to refresh at rating time - Sync widgets when reminder time changes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
33 lines
1.0 KiB
Swift
33 lines
1.0 KiB
Swift
//
|
|
// OnboardingDataDataManager.swift
|
|
// Feels (iOS)
|
|
//
|
|
// Created by Trey Tartt on 2/18/22.
|
|
//
|
|
|
|
import Foundation
|
|
import WidgetKit
|
|
|
|
final class OnboardingDataDataManager: ObservableObject {
|
|
static let shared = OnboardingDataDataManager()
|
|
|
|
@Published public private(set) var savedOnboardingData = UserDefaultsStore.getOnboarding()
|
|
|
|
public func updateOnboardingData(onboardingData: OnboardingData) {
|
|
let onboardingData = UserDefaultsStore.saveOnboarding(onboardingData: onboardingData)
|
|
savedOnboardingData = onboardingData
|
|
LocalNotification.scheduleReminder(atTime: onboardingData.date)
|
|
|
|
// Update Live Activity schedule when rating time changes
|
|
Task { @MainActor in
|
|
LiveActivityScheduler.shared.onRatingTimeUpdated()
|
|
}
|
|
|
|
// Force sync UserDefaults to app group before reloading widgets
|
|
GroupUserDefaults.groupDefaults.synchronize()
|
|
|
|
// Reload widgets so they show the correct view for new time
|
|
WidgetCenter.shared.reloadAllTimelines()
|
|
}
|
|
}
|