From 316953610ff978d213bd2db2a999fa29bb5ef6d5 Mon Sep 17 00:00:00 2001 From: Ivan Magda Date: Wed, 2 Jun 2021 19:44:55 +0300 Subject: [PATCH] Update continue course pressed analytics event (#985) * Update Continue course pressed event --- .../Events/AmplitudeAnalyticsEvents.swift | 13 ++++++++++--- .../TransitionRouters/LastStepRouter.swift | 18 ++++++++++++++---- .../BaseExplore/BaseExploreDataFlow.swift | 2 ++ .../BaseExplore/BaseExploreInteractor.swift | 14 ++++++++++++-- .../BaseExplore/BaseExplorePresenter.swift | 1 + .../BaseExploreViewController.swift | 3 ++- .../CourseInfo/CourseInfoDataFlow.swift | 2 ++ .../CourseInfo/CourseInfoInteractor.swift | 6 ++++-- .../CourseInfo/CourseInfoPresenter.swift | 3 ++- .../CourseInfo/CourseInfoViewController.swift | 3 ++- .../InputOutput/CourseListOutputProtocol.swift | 7 ++++++- .../Interactor/CourseListInteractor.swift | 4 ++-- .../CatalogBlocksInteractor.swift | 14 ++++++++++++-- .../ContinueCourseInteractor.swift | 12 +++++++----- .../ContinueCourseOutputProtocol.swift | 7 ++++++- .../CourseListsCollectionInteractor.swift | 14 ++++++++++++-- .../FullscreenCourseListDataFlow.swift | 2 ++ .../FullscreenCourseListInteractor.swift | 14 ++++++++++++-- .../FullscreenCourseListPresenter.swift | 1 + .../FullscreenCourseListViewController.swift | 3 ++- .../NewProfileCreatedCoursesDataFlow.swift | 2 ++ .../NewProfileCreatedCoursesInteractor.swift | 14 ++++++++++++-- .../NewProfileCreatedCoursesPresenter.swift | 1 + ...ewProfileCreatedCoursesViewController.swift | 3 ++- .../Services/ApplicationShortcutService.swift | 3 ++- .../Services/Widget/WidgetRoutingService.swift | 16 ++++++++++------ 26 files changed, 142 insertions(+), 40 deletions(-) diff --git a/Stepic/Legacy/Analytics/Events/AmplitudeAnalyticsEvents.swift b/Stepic/Legacy/Analytics/Events/AmplitudeAnalyticsEvents.swift index 69c396214d..5dc2b56213 100644 --- a/Stepic/Legacy/Analytics/Events/AmplitudeAnalyticsEvents.swift +++ b/Stepic/Legacy/Analytics/Events/AmplitudeAnalyticsEvents.swift @@ -99,13 +99,19 @@ extension AnalyticsEvent { ) } - static func courseContinuePressed(source: CourseContinueSource, id: Int, title: String) -> AmplitudeAnalyticsEvent { + static func courseContinuePressed( + id: Int, + title: String, + source: CourseContinueSource, + viewSource: CourseViewSource + ) -> AmplitudeAnalyticsEvent { AmplitudeAnalyticsEvent( name: "Continue course pressed", parameters: [ - "source": source.rawValue, "course": id, - "title": title + "title": title, + "source": source.rawValue, + "view_source": viewSource.name ] ) } @@ -115,6 +121,7 @@ extension AnalyticsEvent { case homeWidget = "home_widget" case courseScreen = "course_screen" case homeScreenWidget = "ios_home_screen_widget" + case applicationShortcut = "ios_application_shortcut" } static func courseBuyPressed(source: CourseBuySource, id: Int) -> AmplitudeAnalyticsEvent { diff --git a/Stepic/Legacy/TransitionRouters/LastStepRouter.swift b/Stepic/Legacy/TransitionRouters/LastStepRouter.swift index 2905df940c..8d7555f775 100644 --- a/Stepic/Legacy/TransitionRouters/LastStepRouter.swift +++ b/Stepic/Legacy/TransitionRouters/LastStepRouter.swift @@ -22,9 +22,19 @@ final class LastStepRouter { didJustSubscribe: Bool = false, using navigationController: UINavigationController, skipSyllabus: Bool = false, - courseViewSource: AnalyticsEvent.CourseViewSource, + source: AnalyticsEvent.CourseContinueSource, + viewSource: AnalyticsEvent.CourseViewSource, lessonModuleOutput: LessonOutputProtocol? = nil ) { + StepikAnalytics.shared.send( + .courseContinuePressed( + id: course.id, + title: course.title, + source: source, + viewSource: viewSource + ) + ) + if skipSyllabus == true && lessonModuleOutput == nil { assert(false, "You need to provide LessonOutputProtocol when skipping syllabus!") } @@ -33,7 +43,7 @@ final class LastStepRouter { return self.fallbackToCourseInfo( courseID: course.id, initialTab: .info, - courseViewSource: courseViewSource, + courseViewSource: viewSource, navigationController: navigationController ) } @@ -42,7 +52,7 @@ final class LastStepRouter { let lastStepID = course.lastStepId else { return self.fallbackToSyllabus( courseID: course.id, - courseViewSource: courseViewSource, + courseViewSource: viewSource, navigationController: navigationController ) } @@ -66,7 +76,7 @@ final class LastStepRouter { didJustSubscribe: didJustSubscribe, using: navigationController, skipSyllabus: skipSyllabus, - courseViewSource: courseViewSource, + courseViewSource: viewSource, lessonModuleOutput: lessonModuleOutput ) }.catch { error in diff --git a/Stepic/Sources/Modules/BaseExplore/BaseExploreDataFlow.swift b/Stepic/Sources/Modules/BaseExplore/BaseExploreDataFlow.swift index dd980d3e9d..1c1d5370d0 100644 --- a/Stepic/Sources/Modules/BaseExplore/BaseExploreDataFlow.swift +++ b/Stepic/Sources/Modules/BaseExplore/BaseExploreDataFlow.swift @@ -52,6 +52,7 @@ enum BaseExplore { struct Response { let course: Course let isAdaptive: Bool + let courseContinueSource: AnalyticsEvent.CourseContinueSource let courseViewSource: AnalyticsEvent.CourseViewSource } @@ -60,6 +61,7 @@ enum BaseExplore { let course: Course @available(*, deprecated, message: "Target modules can't be initialized w/o model") let isAdaptive: Bool + let courseContinueSource: AnalyticsEvent.CourseContinueSource let courseViewSource: AnalyticsEvent.CourseViewSource } } diff --git a/Stepic/Sources/Modules/BaseExplore/BaseExploreInteractor.swift b/Stepic/Sources/Modules/BaseExplore/BaseExploreInteractor.swift index ac40ba65b7..61738aa154 100644 --- a/Stepic/Sources/Modules/BaseExplore/BaseExploreInteractor.swift +++ b/Stepic/Sources/Modules/BaseExplore/BaseExploreInteractor.swift @@ -48,9 +48,19 @@ class BaseExploreInteractor: BaseExploreInteractorProtocol, CourseListOutputProt self.presenter.presentCourseSyllabus(response: .init(course: course, courseViewSource: viewSource)) } - func presentLastStep(course: Course, isAdaptive: Bool, viewSource: AnalyticsEvent.CourseViewSource) { + func presentLastStep( + course: Course, + isAdaptive: Bool, + source: AnalyticsEvent.CourseContinueSource, + viewSource: AnalyticsEvent.CourseViewSource + ) { self.presenter.presentLastStep( - response: .init(course: course, isAdaptive: isAdaptive, courseViewSource: viewSource) + response: .init( + course: course, + isAdaptive: isAdaptive, + courseContinueSource: source, + courseViewSource: viewSource + ) ) } diff --git a/Stepic/Sources/Modules/BaseExplore/BaseExplorePresenter.swift b/Stepic/Sources/Modules/BaseExplore/BaseExplorePresenter.swift index f05d8d2adb..e480394754 100644 --- a/Stepic/Sources/Modules/BaseExplore/BaseExplorePresenter.swift +++ b/Stepic/Sources/Modules/BaseExplore/BaseExplorePresenter.swift @@ -45,6 +45,7 @@ class BaseExplorePresenter: BaseExplorePresenterProtocol { viewModel: .init( course: response.course, isAdaptive: response.isAdaptive, + courseContinueSource: response.courseContinueSource, courseViewSource: response.courseViewSource ) ) diff --git a/Stepic/Sources/Modules/BaseExplore/BaseExploreViewController.swift b/Stepic/Sources/Modules/BaseExplore/BaseExploreViewController.swift index d0c8b4e59f..ff65d6585f 100644 --- a/Stepic/Sources/Modules/BaseExplore/BaseExploreViewController.swift +++ b/Stepic/Sources/Modules/BaseExplore/BaseExploreViewController.swift @@ -167,7 +167,8 @@ extension BaseExploreViewController: BaseExploreViewControllerProtocol { for: viewModel.course, isAdaptive: viewModel.isAdaptive, using: navigationController, - courseViewSource: viewModel.courseViewSource + source: viewModel.courseContinueSource, + viewSource: viewModel.courseViewSource ) } diff --git a/Stepic/Sources/Modules/CourseInfo/CourseInfoDataFlow.swift b/Stepic/Sources/Modules/CourseInfo/CourseInfoDataFlow.swift index 70fb55f6d6..b06561f8a0 100644 --- a/Stepic/Sources/Modules/CourseInfo/CourseInfoDataFlow.swift +++ b/Stepic/Sources/Modules/CourseInfo/CourseInfoDataFlow.swift @@ -116,6 +116,7 @@ enum CourseInfo { struct Response { let course: Course let isAdaptive: Bool + let courseViewSource: AnalyticsEvent.CourseViewSource } struct ViewModel { @@ -123,6 +124,7 @@ enum CourseInfo { let course: Course @available(*, deprecated, message: "Target modules can't be initialized w/o model") let isAdaptive: Bool + let courseViewSource: AnalyticsEvent.CourseViewSource } } diff --git a/Stepic/Sources/Modules/CourseInfo/CourseInfoInteractor.swift b/Stepic/Sources/Modules/CourseInfo/CourseInfoInteractor.swift index e19e280b01..4b407c0ac0 100644 --- a/Stepic/Sources/Modules/CourseInfo/CourseInfoInteractor.swift +++ b/Stepic/Sources/Modules/CourseInfo/CourseInfoInteractor.swift @@ -250,7 +250,8 @@ final class CourseInfoInteractor: CourseInfoInteractorProtocol { course: course, isAdaptive: self.adaptiveStorageManager.canOpenInAdaptiveMode( courseId: course.id - ) + ), + courseViewSource: self.courseViewSource ) ) } else { @@ -286,7 +287,8 @@ final class CourseInfoInteractor: CourseInfoInteractorProtocol { course: course, isAdaptive: self.adaptiveStorageManager.canOpenInAdaptiveMode( courseId: course.id - ) + ), + courseViewSource: self.courseViewSource ) ) }.ensure { diff --git a/Stepic/Sources/Modules/CourseInfo/CourseInfoPresenter.swift b/Stepic/Sources/Modules/CourseInfo/CourseInfoPresenter.swift index 7a6d0e538c..35cb4e1fd8 100644 --- a/Stepic/Sources/Modules/CourseInfo/CourseInfoPresenter.swift +++ b/Stepic/Sources/Modules/CourseInfo/CourseInfoPresenter.swift @@ -78,7 +78,8 @@ final class CourseInfoPresenter: CourseInfoPresenterProtocol { self.viewController?.displayLastStep( viewModel: .init( course: response.course, - isAdaptive: response.isAdaptive + isAdaptive: response.isAdaptive, + courseViewSource: response.courseViewSource ) ) } diff --git a/Stepic/Sources/Modules/CourseInfo/CourseInfoViewController.swift b/Stepic/Sources/Modules/CourseInfo/CourseInfoViewController.swift index aff96822db..4adbb8ccef 100644 --- a/Stepic/Sources/Modules/CourseInfo/CourseInfoViewController.swift +++ b/Stepic/Sources/Modules/CourseInfo/CourseInfoViewController.swift @@ -558,7 +558,8 @@ extension CourseInfoViewController: CourseInfoViewControllerProtocol { isAdaptive: viewModel.isAdaptive, using: navigationController, skipSyllabus: true, - courseViewSource: .unknown, + source: .courseScreen, + viewSource: viewModel.courseViewSource, lessonModuleOutput: self.interactor as? LessonOutputProtocol ) } diff --git a/Stepic/Sources/Modules/CourseList/InputOutput/CourseListOutputProtocol.swift b/Stepic/Sources/Modules/CourseList/InputOutput/CourseListOutputProtocol.swift index e86081390a..e3f6b700f2 100644 --- a/Stepic/Sources/Modules/CourseList/InputOutput/CourseListOutputProtocol.swift +++ b/Stepic/Sources/Modules/CourseList/InputOutput/CourseListOutputProtocol.swift @@ -3,7 +3,12 @@ import Foundation protocol CourseListOutputProtocol: AnyObject { func presentCourseInfo(course: Course, viewSource: AnalyticsEvent.CourseViewSource) func presentCourseSyllabus(course: Course, viewSource: AnalyticsEvent.CourseViewSource) - func presentLastStep(course: Course, isAdaptive: Bool, viewSource: AnalyticsEvent.CourseViewSource) + func presentLastStep( + course: Course, + isAdaptive: Bool, + source: AnalyticsEvent.CourseContinueSource, + viewSource: AnalyticsEvent.CourseViewSource + ) func presentAuthorization() func presentPaidCourseInfo(course: Course) diff --git a/Stepic/Sources/Modules/CourseList/Interactor/CourseListInteractor.swift b/Stepic/Sources/Modules/CourseList/Interactor/CourseListInteractor.swift index c87b88691d..a5f5237387 100644 --- a/Stepic/Sources/Modules/CourseList/Interactor/CourseListInteractor.swift +++ b/Stepic/Sources/Modules/CourseList/Interactor/CourseListInteractor.swift @@ -208,6 +208,7 @@ final class CourseListInteractor: CourseListInteractorProtocol { isAdaptive: self.adaptiveStorageManager.canOpenInAdaptiveMode( courseId: targetCourse.id ), + source: .courseWidget, viewSource: self.courseViewSource ) } else { @@ -225,14 +226,13 @@ final class CourseListInteractor: CourseListInteractorProtocol { self.courseSubscriber.join(course: targetCourse, source: .widget).done { course in self.currentCourses[targetIndex].1 = course - self.analytics.send(.courseContinuePressed(source: .courseWidget, id: course.id, title: course.title)) - self.presenter.presentWaitingState(response: .init(shouldDismiss: true)) self.moduleOutput?.presentLastStep( course: targetCourse, isAdaptive: self.adaptiveStorageManager.canOpenInAdaptiveMode( courseId: targetCourse.id ), + source: .courseWidget, viewSource: self.courseViewSource ) }.catch { _ in diff --git a/Stepic/Sources/Modules/ExploreSubmodules/CatalogBlocks/CatalogBlocksInteractor.swift b/Stepic/Sources/Modules/ExploreSubmodules/CatalogBlocks/CatalogBlocksInteractor.swift index e62c13b6d5..a6554da7f0 100644 --- a/Stepic/Sources/Modules/ExploreSubmodules/CatalogBlocks/CatalogBlocksInteractor.swift +++ b/Stepic/Sources/Modules/ExploreSubmodules/CatalogBlocks/CatalogBlocksInteractor.swift @@ -71,8 +71,18 @@ extension CatalogBlocksInteractor: CourseListOutputProtocol { self.moduleOutput?.presentCourseSyllabus(course: course, viewSource: viewSource) } - func presentLastStep(course: Course, isAdaptive: Bool, viewSource: AnalyticsEvent.CourseViewSource) { - self.moduleOutput?.presentLastStep(course: course, isAdaptive: isAdaptive, viewSource: viewSource) + func presentLastStep( + course: Course, + isAdaptive: Bool, + source: AnalyticsEvent.CourseContinueSource, + viewSource: AnalyticsEvent.CourseViewSource + ) { + self.moduleOutput?.presentLastStep( + course: course, + isAdaptive: isAdaptive, + source: source, + viewSource: viewSource + ) } func presentAuthorization() { diff --git a/Stepic/Sources/Modules/ExploreSubmodules/ContinueCourse/ContinueCourseInteractor.swift b/Stepic/Sources/Modules/ExploreSubmodules/ContinueCourse/ContinueCourseInteractor.swift index 0f6d5af688..099d239bdd 100644 --- a/Stepic/Sources/Modules/ExploreSubmodules/ContinueCourse/ContinueCourseInteractor.swift +++ b/Stepic/Sources/Modules/ExploreSubmodules/ContinueCourse/ContinueCourseInteractor.swift @@ -55,12 +55,14 @@ final class ContinueCourseInteractor: ContinueCourseInteractorProtocol { return } - self.analytics.send( - .courseContinuePressed(source: .homeWidget, id: currentCourse.id, title: currentCourse.title) - ) - let isAdaptive = self.adaptiveStorageManager.canOpenInAdaptiveMode(courseId: currentCourse.id) - self.moduleOutput?.presentLastStep(course: currentCourse, isAdaptive: isAdaptive, viewSource: .fastContinue) + + self.moduleOutput?.presentLastStep( + course: currentCourse, + isAdaptive: isAdaptive, + source: .homeWidget, + viewSource: .fastContinue + ) } func doTooltipAvailabilityCheck(request: ContinueCourse.TooltipAvailabilityCheck.Request) { diff --git a/Stepic/Sources/Modules/ExploreSubmodules/ContinueCourse/ContinueCourseOutputProtocol.swift b/Stepic/Sources/Modules/ExploreSubmodules/ContinueCourse/ContinueCourseOutputProtocol.swift index 43c6f6cd90..d420a84055 100644 --- a/Stepic/Sources/Modules/ExploreSubmodules/ContinueCourse/ContinueCourseOutputProtocol.swift +++ b/Stepic/Sources/Modules/ExploreSubmodules/ContinueCourse/ContinueCourseOutputProtocol.swift @@ -2,5 +2,10 @@ import Foundation protocol ContinueCourseOutputProtocol: AnyObject { func hideContinueCourse() - func presentLastStep(course: Course, isAdaptive: Bool, viewSource: AnalyticsEvent.CourseViewSource) + func presentLastStep( + course: Course, + isAdaptive: Bool, + source: AnalyticsEvent.CourseContinueSource, + viewSource: AnalyticsEvent.CourseViewSource + ) } diff --git a/Stepic/Sources/Modules/ExploreSubmodules/CourseListsCollection/CourseListsCollectionInteractor.swift b/Stepic/Sources/Modules/ExploreSubmodules/CourseListsCollection/CourseListsCollectionInteractor.swift index 3080ca50f8..54c4c69d63 100644 --- a/Stepic/Sources/Modules/ExploreSubmodules/CourseListsCollection/CourseListsCollectionInteractor.swift +++ b/Stepic/Sources/Modules/ExploreSubmodules/CourseListsCollection/CourseListsCollectionInteractor.swift @@ -60,8 +60,18 @@ extension CourseListsCollectionInteractor: CourseListOutputProtocol { self.moduleOutput?.presentCourseSyllabus(course: course, viewSource: viewSource) } - func presentLastStep(course: Course, isAdaptive: Bool, viewSource: AnalyticsEvent.CourseViewSource) { - self.moduleOutput?.presentLastStep(course: course, isAdaptive: isAdaptive, viewSource: viewSource) + func presentLastStep( + course: Course, + isAdaptive: Bool, + source: AnalyticsEvent.CourseContinueSource, + viewSource: AnalyticsEvent.CourseViewSource + ) { + self.moduleOutput?.presentLastStep( + course: course, + isAdaptive: isAdaptive, + source: source, + viewSource: viewSource + ) } func presentAuthorization() { diff --git a/Stepic/Sources/Modules/FullscreenCourseList/FullscreenCourseListDataFlow.swift b/Stepic/Sources/Modules/FullscreenCourseList/FullscreenCourseListDataFlow.swift index 2ff7dfd4c7..432b71ae77 100644 --- a/Stepic/Sources/Modules/FullscreenCourseList/FullscreenCourseListDataFlow.swift +++ b/Stepic/Sources/Modules/FullscreenCourseList/FullscreenCourseListDataFlow.swift @@ -34,6 +34,7 @@ enum FullscreenCourseList { struct Response { let course: Course let isAdaptive: Bool + let courseContinueSource: AnalyticsEvent.CourseContinueSource let courseViewSource: AnalyticsEvent.CourseViewSource } @@ -42,6 +43,7 @@ enum FullscreenCourseList { let course: Course @available(*, deprecated, message: "Target modules can't be initialized w/o model") let isAdaptive: Bool + let courseContinueSource: AnalyticsEvent.CourseContinueSource let courseViewSource: AnalyticsEvent.CourseViewSource } } diff --git a/Stepic/Sources/Modules/FullscreenCourseList/FullscreenCourseListInteractor.swift b/Stepic/Sources/Modules/FullscreenCourseList/FullscreenCourseListInteractor.swift index 83f9e9ece4..94c402e0df 100644 --- a/Stepic/Sources/Modules/FullscreenCourseList/FullscreenCourseListInteractor.swift +++ b/Stepic/Sources/Modules/FullscreenCourseList/FullscreenCourseListInteractor.swift @@ -33,9 +33,19 @@ final class FullscreenCourseListInteractor: FullscreenCourseListInteractorProtoc self.presenter.presentCourseSyllabus(response: .init(course: course, courseViewSource: viewSource)) } - func presentLastStep(course: Course, isAdaptive: Bool, viewSource: AnalyticsEvent.CourseViewSource) { + func presentLastStep( + course: Course, + isAdaptive: Bool, + source: AnalyticsEvent.CourseContinueSource, + viewSource: AnalyticsEvent.CourseViewSource + ) { self.presenter.presentLastStep( - response: .init(course: course, isAdaptive: isAdaptive, courseViewSource: viewSource) + response: .init( + course: course, + isAdaptive: isAdaptive, + courseContinueSource: source, + courseViewSource: viewSource + ) ) } diff --git a/Stepic/Sources/Modules/FullscreenCourseList/FullscreenCourseListPresenter.swift b/Stepic/Sources/Modules/FullscreenCourseList/FullscreenCourseListPresenter.swift index 3b93ec3d9a..71a566b5a2 100644 --- a/Stepic/Sources/Modules/FullscreenCourseList/FullscreenCourseListPresenter.swift +++ b/Stepic/Sources/Modules/FullscreenCourseList/FullscreenCourseListPresenter.swift @@ -40,6 +40,7 @@ final class FullscreenCourseListPresenter: FullscreenCourseListPresenterProtocol viewModel: .init( course: response.course, isAdaptive: response.isAdaptive, + courseContinueSource: response.courseContinueSource, courseViewSource: response.courseViewSource ) ) diff --git a/Stepic/Sources/Modules/FullscreenCourseList/FullscreenCourseListViewController.swift b/Stepic/Sources/Modules/FullscreenCourseList/FullscreenCourseListViewController.swift index 909e300ccc..f6d0663774 100644 --- a/Stepic/Sources/Modules/FullscreenCourseList/FullscreenCourseListViewController.swift +++ b/Stepic/Sources/Modules/FullscreenCourseList/FullscreenCourseListViewController.swift @@ -360,7 +360,8 @@ extension FullscreenCourseListViewController: FullscreenCourseListViewController for: viewModel.course, isAdaptive: viewModel.isAdaptive, using: navigationController, - courseViewSource: viewModel.courseViewSource + source: viewModel.courseContinueSource, + viewSource: viewModel.courseViewSource ) } diff --git a/Stepic/Sources/Modules/NewProfileSubmodules/CreatedCourses/NewProfileCreatedCoursesDataFlow.swift b/Stepic/Sources/Modules/NewProfileSubmodules/CreatedCourses/NewProfileCreatedCoursesDataFlow.swift index 0cfa9b31ad..16e8090833 100644 --- a/Stepic/Sources/Modules/NewProfileSubmodules/CreatedCourses/NewProfileCreatedCoursesDataFlow.swift +++ b/Stepic/Sources/Modules/NewProfileSubmodules/CreatedCourses/NewProfileCreatedCoursesDataFlow.swift @@ -52,6 +52,7 @@ enum NewProfileCreatedCourses { struct Response { let course: Course let isAdaptive: Bool + let courseContinueSource: AnalyticsEvent.CourseContinueSource let courseViewSource: AnalyticsEvent.CourseViewSource } @@ -60,6 +61,7 @@ enum NewProfileCreatedCourses { let course: Course @available(*, deprecated, message: "Target modules can't be initialized w/o model") let isAdaptive: Bool + let courseContinueSource: AnalyticsEvent.CourseContinueSource let courseViewSource: AnalyticsEvent.CourseViewSource } } diff --git a/Stepic/Sources/Modules/NewProfileSubmodules/CreatedCourses/NewProfileCreatedCoursesInteractor.swift b/Stepic/Sources/Modules/NewProfileSubmodules/CreatedCourses/NewProfileCreatedCoursesInteractor.swift index e43795a739..567ea1ef19 100644 --- a/Stepic/Sources/Modules/NewProfileSubmodules/CreatedCourses/NewProfileCreatedCoursesInteractor.swift +++ b/Stepic/Sources/Modules/NewProfileSubmodules/CreatedCourses/NewProfileCreatedCoursesInteractor.swift @@ -51,9 +51,19 @@ extension NewProfileCreatedCoursesInteractor: CourseListOutputProtocol { self.presenter.presentCourseSyllabus(response: .init(course: course, courseViewSource: viewSource)) } - func presentLastStep(course: Course, isAdaptive: Bool, viewSource: AnalyticsEvent.CourseViewSource) { + func presentLastStep( + course: Course, + isAdaptive: Bool, + source: AnalyticsEvent.CourseContinueSource, + viewSource: AnalyticsEvent.CourseViewSource + ) { self.presenter.presentLastStep( - response: .init(course: course, isAdaptive: isAdaptive, courseViewSource: viewSource) + response: .init( + course: course, + isAdaptive: isAdaptive, + courseContinueSource: source, + courseViewSource: viewSource + ) ) } diff --git a/Stepic/Sources/Modules/NewProfileSubmodules/CreatedCourses/NewProfileCreatedCoursesPresenter.swift b/Stepic/Sources/Modules/NewProfileSubmodules/CreatedCourses/NewProfileCreatedCoursesPresenter.swift index b8bdd5af0d..bd525edb47 100644 --- a/Stepic/Sources/Modules/NewProfileSubmodules/CreatedCourses/NewProfileCreatedCoursesPresenter.swift +++ b/Stepic/Sources/Modules/NewProfileSubmodules/CreatedCourses/NewProfileCreatedCoursesPresenter.swift @@ -33,6 +33,7 @@ final class NewProfileCreatedCoursesPresenter: NewProfileCreatedCoursesPresenter viewModel: .init( course: response.course, isAdaptive: response.isAdaptive, + courseContinueSource: response.courseContinueSource, courseViewSource: response.courseViewSource ) ) diff --git a/Stepic/Sources/Modules/NewProfileSubmodules/CreatedCourses/NewProfileCreatedCoursesViewController.swift b/Stepic/Sources/Modules/NewProfileSubmodules/CreatedCourses/NewProfileCreatedCoursesViewController.swift index e149366230..e09399fd1a 100644 --- a/Stepic/Sources/Modules/NewProfileSubmodules/CreatedCourses/NewProfileCreatedCoursesViewController.swift +++ b/Stepic/Sources/Modules/NewProfileSubmodules/CreatedCourses/NewProfileCreatedCoursesViewController.swift @@ -116,7 +116,8 @@ extension NewProfileCreatedCoursesViewController: NewProfileCreatedCoursesViewCo for: viewModel.course, isAdaptive: viewModel.isAdaptive, using: navigationController, - courseViewSource: viewModel.courseViewSource + source: viewModel.courseContinueSource, + viewSource: viewModel.courseViewSource ) } diff --git a/Stepic/Sources/Services/ApplicationShortcutService.swift b/Stepic/Sources/Services/ApplicationShortcutService.swift index 7569496ffe..8c69f01783 100644 --- a/Stepic/Sources/Services/ApplicationShortcutService.swift +++ b/Stepic/Sources/Services/ApplicationShortcutService.swift @@ -114,7 +114,8 @@ final class ApplicationShortcutService: ApplicationShortcutServiceProtocol { for: lastCourse, isAdaptive: self.adaptiveStorageManager.canOpenInAdaptiveMode(courseId: lastCourse.id), using: currentNavigationController, - courseViewSource: .unknown + source: .applicationShortcut, + viewSource: .unknown ) }.catch { error in print("ApplicationShortcutService :: failed perform continue learning with error = \(error)") diff --git a/Stepic/Sources/Services/Widget/WidgetRoutingService.swift b/Stepic/Sources/Services/Widget/WidgetRoutingService.swift index 7405bdb92a..95c612ee53 100644 --- a/Stepic/Sources/Services/Widget/WidgetRoutingService.swift +++ b/Stepic/Sources/Services/Widget/WidgetRoutingService.swift @@ -53,10 +53,6 @@ final class WidgetRoutingService: WidgetRoutingServiceProtocol { switch deeplinkRoute { case .course(let courseID): self.coursesPersistenceService.fetch(id: courseID).done { course in - self.analytics.send( - .courseContinuePressed(source: .homeScreenWidget, id: courseID, title: course?.title ?? "") - ) - guard let course = course, let currentNavigationController = self.sourcelessRouter.currentNavigation else { return @@ -66,10 +62,18 @@ final class WidgetRoutingService: WidgetRoutingServiceProtocol { for: course, isAdaptive: self.adaptiveStorageManager.canOpenInAdaptiveMode(courseId: courseID), using: currentNavigationController, - courseViewSource: courseViewSource + source: .homeScreenWidget, + viewSource: courseViewSource ) }.catch { _ in - self.analytics.send(.courseContinuePressed(source: .homeScreenWidget, id: courseID, title: "")) + self.analytics.send( + .courseContinuePressed( + id: courseID, + title: "", + source: .homeScreenWidget, + viewSource: courseViewSource + ) + ) } default: self.analytics.send(.homeScreenWidgetClicked)