import AnalyticsClient
import ComposableArchitecture

extension Settings {
    struct Analytics: AnalyticsReducer {
        var source: String = "settings_v2_screen"

        func analytics(before _: State, after _: State, action: Action) -> Effect<Action> {
            switch action {
            // TODO: rest of settings v2
            case .languageTapped:
                track(
                    Event(
                        category: .settings,
                        actionName: .languageSettingsTapped,
                        actionType: .tap,
                        elementType: .listRow,
                        context: getGlobalContext(options: [.preferredLanguage])
                    )
                )

            case .destination(.presented(.alert(.navigateToSettings))):
                track(
                    Event(
                        category: .settings,
                        actionName: .navigateToLanguageSettingsTapped,
                        actionType: .tap,
                        elementType: .alert,
                        context: getGlobalContext(options: [.preferredLanguage])
                    )
                )

            case .reportProblemTapped:
                track(
                    Event(
                        category: .settings,
                        actionName: .reportProblemTapped,
                        actionType: .tap,
                        elementType: .listRow
                    )
                )

            default:
                break
            }
            return .none
        }
    }
}
