diff --git a/Stepic/Legacy/Analytics/Events/AmplitudeAnalyticsEvents.swift b/Stepic/Legacy/Analytics/Events/AmplitudeAnalyticsEvents.swift index e7bb7ab6fd..3662aaca6a 100644 --- a/Stepic/Legacy/Analytics/Events/AmplitudeAnalyticsEvents.swift +++ b/Stepic/Legacy/Analytics/Events/AmplitudeAnalyticsEvents.swift @@ -465,6 +465,26 @@ extension AnalyticsEvent { return AmplitudeAnalyticsEvent(name: "Font size selected", parameters: ["size": fontSizeStringValue]) } + // MARK: - Content Language - + + static func contentLanguageChanged( + _ contentLanguage: ContentLanguage, + source: ContentLanguageChangeSource + ) -> AmplitudeAnalyticsEvent { + AmplitudeAnalyticsEvent( + name: "Content language changed", + parameters: [ + "language": contentLanguage.languageString, + "source": source.rawValue + ] + ) + } + + enum ContentLanguageChangeSource: String { + case catalog + case settings + } + // MARK: - CoursePreview - static func coursePreviewScreenOpened(course: Course, viewSource: CourseViewSource) -> AmplitudeAnalyticsEvent { diff --git a/Stepic/Sources/Modules/ExploreSubmodules/ContentLanguageSwitch/ContentLanguageSwitchAssembly.swift b/Stepic/Sources/Modules/ExploreSubmodules/ContentLanguageSwitch/ContentLanguageSwitchAssembly.swift index f5c6d9458e..34dcade179 100644 --- a/Stepic/Sources/Modules/ExploreSubmodules/ContentLanguageSwitch/ContentLanguageSwitchAssembly.swift +++ b/Stepic/Sources/Modules/ExploreSubmodules/ContentLanguageSwitch/ContentLanguageSwitchAssembly.swift @@ -8,7 +8,8 @@ final class ContentLanguageSwitchAssembly: Assembly { let presenter = ContentLanguageSwitchPresenter() let interactor = ContentLanguageSwitchInteractor( presenter: presenter, - provider: provider + provider: provider, + analytics: StepikAnalytics.shared ) let viewController = ContentLanguageSwitchViewController( interactor: interactor diff --git a/Stepic/Sources/Modules/ExploreSubmodules/ContentLanguageSwitch/ContentLanguageSwitchInteractor.swift b/Stepic/Sources/Modules/ExploreSubmodules/ContentLanguageSwitch/ContentLanguageSwitchInteractor.swift index 443923ef86..a9560c0959 100644 --- a/Stepic/Sources/Modules/ExploreSubmodules/ContentLanguageSwitch/ContentLanguageSwitchInteractor.swift +++ b/Stepic/Sources/Modules/ExploreSubmodules/ContentLanguageSwitch/ContentLanguageSwitchInteractor.swift @@ -10,14 +10,18 @@ final class ContentLanguageSwitchInteractor: ContentLanguageSwitchInteractorProt private let presenter: ContentLanguageSwitchPresenterProtocol private let provider: ContentLanguageSwitchProviderProtocol + private let analytics: Analytics + private var currentAvailableContentLanguages: [(UniqueIdentifierType, ContentLanguage)] = [] init( presenter: ContentLanguageSwitchPresenterProtocol, - provider: ContentLanguageSwitchProviderProtocol + provider: ContentLanguageSwitchProviderProtocol, + analytics: Analytics ) { self.presenter = presenter self.provider = provider + self.analytics = analytics } func doLanguagesListPresentation(request: ContentLanguageSwitch.LanguagesLoad.Request) { @@ -56,6 +60,8 @@ final class ContentLanguageSwitchInteractor: ContentLanguageSwitchInteractorProt fatalError("Request contains invalid data") } + self.analytics.send(.contentLanguageChanged(selectedLanguage, source: .catalog)) + self.provider.setGlobalContentLanguage(selectedLanguage) self.presenter.presentLanguageChange( response: ContentLanguageSwitch.LanguageSelection.Response( diff --git a/Stepic/Sources/Modules/Settings/SettingsInteractor.swift b/Stepic/Sources/Modules/Settings/SettingsInteractor.swift index 3463caf122..03f21ec072 100644 --- a/Stepic/Sources/Modules/Settings/SettingsInteractor.swift +++ b/Stepic/Sources/Modules/Settings/SettingsInteractor.swift @@ -117,7 +117,9 @@ final class SettingsInteractor: SettingsInteractorProtocol { } func doContentLanguageSettingUpdate(request: Settings.ContentLanguageSettingUpdate.Request) { - self.provider.globalContentLanguage = ContentLanguage(languageString: request.setting.uniqueIdentifier) + let selectedContentLanguage = ContentLanguage(languageString: request.setting.uniqueIdentifier) + self.provider.globalContentLanguage = selectedContentLanguage + self.analytics.send(.contentLanguageChanged(selectedContentLanguage, source: .settings)) } func doStepFontSizeSettingPresentation(request: Settings.StepFontSizeSettingPresentation.Request) {