import Foundation enum MonthlyContributionStore { private static let key = "monthlyContributions" static func contribution(for sourceId: UUID) -> Decimal? { let dict = load() guard let raw = dict[sourceId.uuidString] else { return nil } return Decimal(raw) } static func setContribution(_ amount: Decimal?, for sourceId: UUID) { var dict = load() if let amount, amount > 0 { dict[sourceId.uuidString] = NSDecimalNumber(decimal: amount).doubleValue } else { dict.removeValue(forKey: sourceId.uuidString) } save(dict) } private static func load() -> [String: Double] { guard let data = UserDefaults.standard.data(forKey: key), let decoded = try? JSONDecoder().decode([String: Double].self, from: data) else { return [:] } return decoded } private static func save(_ dict: [String: Double]) { if let data = try? JSONEncoder().encode(dict) { UserDefaults.standard.set(data, forKey: key) } } }