import FirebaseAnalytics enum AnalyticsEvent { // Onboarding static let onboardingCompleted = "onboarding_completed" // Dishes static let dishAdded = "dish_added" static let dishDeleted = "dish_deleted" // Planner static let mealAssigned = "meal_assigned" static let mealCleared = "meal_cleared" static let weekReset = "week_reset" static let weekPlanShared = "week_plan_shared" // Premium static let premiumUpgradeTapped = "premium_upgrade_tapped" static let premiumPurchased = "premium_purchased" static let premiumRestored = "premium_restored" // Planner static let autoAssignUsed = "auto_assign_used" // Onboarding static let onboardingStepViewed = "onboarding_step_viewed" // Settings static let iCloudSyncToggled = "icloud_sync_toggled" static let notificationsToggled = "notifications_toggled" static let languageChanged = "language_changed" } enum AnalyticsService { static func logEvent(_ name: String, parameters: [String: Any]? = nil) { Analytics.logEvent(name, parameters: parameters) } static func logScreenView(_ screenName: String) { Analytics.logEvent(AnalyticsEventScreenView, parameters: [ AnalyticsParameterScreenName: screenName, AnalyticsParameterScreenClass: screenName ]) } // MARK: - Convenience methods static func logDishAdded(tagCount: Int) { logEvent(AnalyticsEvent.dishAdded, parameters: ["tag_count": tagCount]) } static func logDishDeleted() { logEvent(AnalyticsEvent.dishDeleted) } static func logMealAssigned() { logEvent(AnalyticsEvent.mealAssigned) } static func logMealCleared() { logEvent(AnalyticsEvent.mealCleared) } static func logWeekReset() { logEvent(AnalyticsEvent.weekReset) } static func logWeekPlanShared(format: String) { logEvent(AnalyticsEvent.weekPlanShared, parameters: ["format": format]) } static func logPremiumUpgradeTapped(source: String) { logEvent(AnalyticsEvent.premiumUpgradeTapped, parameters: ["source": source]) } static func logPremiumPurchased() { logEvent(AnalyticsEvent.premiumPurchased) } static func logPremiumRestored() { logEvent(AnalyticsEvent.premiumRestored) } static func logOnboardingCompleted() { logEvent(AnalyticsEvent.onboardingCompleted) } static func logOnboardingStepViewed(step: Int) { logEvent(AnalyticsEvent.onboardingStepViewed, parameters: ["step": step]) } static func logAutoAssignUsed(filledSlots: Int, unfilledSlots: Int) { logEvent(AnalyticsEvent.autoAssignUsed, parameters: [ "filled_slots": filledSlots, "unfilled_slots": unfilledSlots ]) } static func logICloudSyncToggled(enabled: Bool) { logEvent(AnalyticsEvent.iCloudSyncToggled, parameters: ["enabled": enabled]) } static func logNotificationsToggled(enabled: Bool) { logEvent(AnalyticsEvent.notificationsToggled, parameters: ["enabled": enabled]) } }