import AnalyticsClient
import ComposableArchitecture
import StatsigClient
import Utilities

extension PlaylistDetail {
    struct Analytics: AnalyticsReducer {
        var source: String = "playlist_detail_v1"

        // swiftlint:disable:next cyclomatic_complexity function_body_length
        func analytics(before _: State, after _: State, action: Action) -> Effect<Action> {
            switch action {
            case .moreMenuAction(.delegate(.onAppear)):
                track(
                    Event(
                        category: .songActions,
                        actionName: .songActionsMenuOptionsTapped
                    )
                )
            case .sortingAction(.delegate(.onAppear)):
                track(
                    Event(
                        category: .sorting,
                        actionName: .sortingMenuTapped
                    )
                )
            case .sortingAction(.delegate(.sortOrderChanged)), .sortingAction(.delegate(.sortByChanged)):
                track(
                    Event(
                        category: .sorting,
                        actionName: .sortingOptionSelected
                    )
                )

            default:
                return .none
            }
            return .none
        }
    }
}
