Skip to content

Commit 6dd2adf

Browse files
authored
refactor: Transfer Discovery Related Screens to Discovery Module (#279)
* refactor: Transfer Discovery Details Page to Discovery Module Initially integrated within the course module, both pages have been strategically reassigned to the Discovery module, reflecting a refined organizational structure. - Relocated screens to ensure alignment with broader scope - Migrated presentation, domain, and data layers - Transferred models, database, repository and interactions - Included analytics for a comprehensive transition * refactor: Transfer Programs Screen to Discovery Module Initially integrated within the dashboard module, both pages have been strategically reassigned to the Discovery module, reflecting a refined organizational structure. - Relocated screens to ensure alignment with broader scope - Migrated presentation, domain, and data layers - Transferred models, database, repository and interactions - Included analytics for a comprehensive transition * refactor: Move Models and UI Components to Discovery Module We've streamlined our project by relocating models and UI components previously stored in the Core module to the Discovery module. These elements were previously shared across multiple modules—course, dashboard, and discovery.
1 parent cffbde3 commit 6dd2adf

File tree

75 files changed

+804
-577
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+804
-577
lines changed

app/src/main/java/org/openedx/app/AnalyticsManager.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import org.openedx.core.config.Config
99
import org.openedx.core.presentation.CoreAnalytics
1010
import org.openedx.core.presentation.dialog.appreview.AppReviewAnalytics
1111
import org.openedx.course.presentation.CourseAnalytics
12-
import org.openedx.dashboard.presentation.dashboard.DashboardAnalytics
12+
import org.openedx.dashboard.presentation.DashboardAnalytics
1313
import org.openedx.discovery.presentation.DiscoveryAnalytics
1414
import org.openedx.discussion.presentation.DiscussionAnalytics
1515
import org.openedx.profile.presentation.ProfileAnalytics

app/src/main/java/org/openedx/app/AppRouter.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,20 @@ import org.openedx.core.presentation.settings.VideoQualityType
1818
import org.openedx.course.presentation.CourseRouter
1919
import org.openedx.course.presentation.container.CourseContainerFragment
2020
import org.openedx.course.presentation.container.NoAccessCourseContainerFragment
21-
import org.openedx.course.presentation.detail.CourseDetailsFragment
2221
import org.openedx.course.presentation.handouts.HandoutsType
2322
import org.openedx.course.presentation.handouts.HandoutsWebViewFragment
24-
import org.openedx.course.presentation.info.CourseInfoFragment
2523
import org.openedx.course.presentation.section.CourseSectionFragment
2624
import org.openedx.course.presentation.unit.container.CourseUnitContainerFragment
2725
import org.openedx.course.presentation.unit.video.VideoFullScreenFragment
2826
import org.openedx.course.presentation.unit.video.YoutubeVideoFullScreenFragment
2927
import org.openedx.course.settings.download.DownloadQueueFragment
3028
import org.openedx.dashboard.presentation.DashboardRouter
31-
import org.openedx.dashboard.presentation.program.ProgramFragment
3229
import org.openedx.discovery.presentation.DiscoveryRouter
3330
import org.openedx.discovery.presentation.NativeDiscoveryFragment
3431
import org.openedx.discovery.presentation.WebViewDiscoveryFragment
32+
import org.openedx.discovery.presentation.detail.CourseDetailsFragment
33+
import org.openedx.discovery.presentation.info.CourseInfoFragment
34+
import org.openedx.discovery.presentation.program.ProgramFragment
3535
import org.openedx.discovery.presentation.search.CourseSearchFragment
3636
import org.openedx.discussion.domain.model.DiscussionComment
3737
import org.openedx.discussion.domain.model.Thread
@@ -143,7 +143,7 @@ class AppRouter : AuthRouter, DiscoveryRouter, DashboardRouter, CourseRouter, Di
143143
)
144144
}
145145

146-
override fun navigateToProgramInfo(fm: FragmentManager, pathId: String) {
146+
override fun navigateToEnrolledProgramInfo(fm: FragmentManager, pathId: String) {
147147
replaceFragmentWithBackStack(fm, ProgramFragment.newInstance(pathId))
148148
}
149149

app/src/main/java/org/openedx/app/MainFragment.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ import org.openedx.app.databinding.FragmentMainBinding
1616
import org.openedx.core.config.Config
1717
import org.openedx.core.presentation.global.app_upgrade.UpgradeRequiredFragment
1818
import org.openedx.core.presentation.global.viewBinding
19-
import org.openedx.dashboard.presentation.dashboard.DashboardFragment
20-
import org.openedx.dashboard.presentation.program.ProgramFragment
19+
import org.openedx.dashboard.presentation.DashboardFragment
2120
import org.openedx.discovery.presentation.DiscoveryNavigator
2221
import org.openedx.discovery.presentation.DiscoveryRouter
22+
import org.openedx.discovery.presentation.program.ProgramFragment
2323
import org.openedx.profile.presentation.profile.ProfileFragment
2424

2525
class MainFragment : Fragment(R.layout.fragment_main) {

app/src/main/java/org/openedx/app/MainViewModel.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ import kotlinx.coroutines.flow.launchIn
1212
import kotlinx.coroutines.flow.onEach
1313
import org.openedx.core.BaseViewModel
1414
import org.openedx.core.config.Config
15-
import org.openedx.dashboard.notifier.DashboardEvent
16-
import org.openedx.dashboard.notifier.DashboardNotifier
15+
import org.openedx.core.system.notifier.DiscoveryNotifier
16+
import org.openedx.core.system.notifier.NavigationToDiscovery
1717

1818
class MainViewModel(
1919
private val config: Config,
20-
private val notifier: DashboardNotifier,
20+
private val notifier: DiscoveryNotifier,
2121
private val analytics: AppAnalytics,
2222
) : BaseViewModel() {
2323

@@ -36,7 +36,7 @@ class MainViewModel(
3636
override fun onCreate(owner: LifecycleOwner) {
3737
super.onCreate(owner)
3838
notifier.notifier.onEach {
39-
if (it is DashboardEvent.NavigationToDiscovery) {
39+
if (it is NavigationToDiscovery) {
4040
_navigateToDiscovery.emit(true)
4141
}
4242
}.distinctUntilChanged().launchIn(viewModelScope)

app/src/main/java/org/openedx/app/di/AppModule.kt

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import org.openedx.core.config.Config
2929
import org.openedx.core.data.model.CourseEnrollments
3030
import org.openedx.core.data.storage.CorePreferences
3131
import org.openedx.core.data.storage.InAppReviewPreferences
32-
import org.openedx.core.interfaces.EnrollInCourseInteractor
3332
import org.openedx.core.module.DownloadWorkerController
3433
import org.openedx.core.module.TranscriptManager
3534
import org.openedx.core.module.download.FileDownloader
@@ -44,16 +43,15 @@ import org.openedx.core.system.ResourceManager
4443
import org.openedx.core.system.connection.NetworkConnection
4544
import org.openedx.core.system.notifier.AppUpgradeNotifier
4645
import org.openedx.core.system.notifier.CourseNotifier
46+
import org.openedx.core.system.notifier.DiscoveryNotifier
4747
import org.openedx.core.system.notifier.DownloadNotifier
4848
import org.openedx.core.system.notifier.VideoNotifier
4949
import org.openedx.course.data.storage.CoursePreferences
50-
import org.openedx.course.domain.interactor.CourseInteractor
5150
import org.openedx.course.presentation.CourseAnalytics
5251
import org.openedx.course.presentation.CourseRouter
5352
import org.openedx.course.presentation.calendarsync.CalendarManager
54-
import org.openedx.dashboard.notifier.DashboardNotifier
53+
import org.openedx.dashboard.presentation.DashboardAnalytics
5554
import org.openedx.dashboard.presentation.DashboardRouter
56-
import org.openedx.dashboard.presentation.dashboard.DashboardAnalytics
5755
import org.openedx.discovery.presentation.DiscoveryAnalytics
5856
import org.openedx.discovery.presentation.DiscoveryRouter
5957
import org.openedx.discussion.presentation.DiscussionAnalytics
@@ -95,8 +93,8 @@ val appModule = module {
9593
single { ProfileNotifier() }
9694
single { AppUpgradeNotifier() }
9795
single { DownloadNotifier() }
98-
single { DashboardNotifier() }
9996
single { VideoNotifier() }
97+
single { DiscoveryNotifier() }
10098

10199
single { AppRouter() }
102100
single<AuthRouter> { get<AppRouter>() }
@@ -180,6 +178,4 @@ val appModule = module {
180178
factory { GoogleAuthHelper(get()) }
181179
factory { MicrosoftAuthHelper() }
182180
factory { OAuthHelper(get(), get(), get()) }
183-
184-
factory<EnrollInCourseInteractor> { CourseInteractor(get()) }
185181
}

app/src/main/java/org/openedx/app/di/NetworkingModule.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import org.openedx.core.BuildConfig
1212
import org.openedx.core.config.Config
1313
import org.openedx.core.data.api.CookiesApi
1414
import org.openedx.core.data.api.CourseApi
15+
import org.openedx.discovery.data.api.DiscoveryApi
1516
import org.openedx.discussion.data.api.DiscussionApi
1617
import org.openedx.profile.data.api.ProfileApi
1718
import retrofit2.Retrofit
@@ -51,6 +52,7 @@ val networkingModule = module {
5152
single { provideApi<CourseApi>(get()) }
5253
single { provideApi<ProfileApi>(get()) }
5354
single { provideApi<DiscussionApi>(get()) }
55+
single { provideApi<DiscoveryApi>(get()) }
5456
}
5557

5658

app/src/main/java/org/openedx/app/di/ScreenModule.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ import org.openedx.course.data.repository.CourseRepository
1818
import org.openedx.course.domain.interactor.CourseInteractor
1919
import org.openedx.course.presentation.container.CourseContainerViewModel
2020
import org.openedx.course.presentation.dates.CourseDatesViewModel
21-
import org.openedx.course.presentation.detail.CourseDetailsViewModel
2221
import org.openedx.course.presentation.handouts.HandoutsViewModel
23-
import org.openedx.course.presentation.info.CourseInfoViewModel
2422
import org.openedx.course.presentation.outline.CourseOutlineViewModel
2523
import org.openedx.course.presentation.section.CourseSectionViewModel
2624
import org.openedx.course.presentation.unit.container.CourseUnitContainerViewModel
@@ -33,12 +31,14 @@ import org.openedx.course.presentation.videos.CourseVideoViewModel
3331
import org.openedx.course.settings.download.DownloadQueueViewModel
3432
import org.openedx.dashboard.data.repository.DashboardRepository
3533
import org.openedx.dashboard.domain.interactor.DashboardInteractor
36-
import org.openedx.dashboard.presentation.dashboard.DashboardViewModel
37-
import org.openedx.dashboard.presentation.program.ProgramViewModel
34+
import org.openedx.dashboard.presentation.DashboardViewModel
3835
import org.openedx.discovery.data.repository.DiscoveryRepository
3936
import org.openedx.discovery.domain.interactor.DiscoveryInteractor
4037
import org.openedx.discovery.presentation.NativeDiscoveryViewModel
4138
import org.openedx.discovery.presentation.WebViewDiscoveryViewModel
39+
import org.openedx.discovery.presentation.detail.CourseDetailsViewModel
40+
import org.openedx.discovery.presentation.info.CourseInfoViewModel
41+
import org.openedx.discovery.presentation.program.ProgramViewModel
4242
import org.openedx.discovery.presentation.search.CourseSearchViewModel
4343
import org.openedx.discussion.data.repository.DiscussionRepository
4444
import org.openedx.discussion.domain.interactor.DiscussionInteractor
@@ -114,9 +114,9 @@ val screenModule = module {
114114

115115
factory { DashboardRepository(get(), get(), get()) }
116116
factory { DashboardInteractor(get()) }
117-
viewModel { DashboardViewModel(get(), get(), get(), get(), get(), get(), get(), get()) }
117+
viewModel { DashboardViewModel(get(), get(), get(), get(), get(), get(), get()) }
118118

119-
factory { DiscoveryRepository(get(), get()) }
119+
factory { DiscoveryRepository(get(), get(), get()) }
120120
factory { DiscoveryInteractor(get()) }
121121
viewModel { NativeDiscoveryViewModel(get(), get(), get(), get(), get(), get(), get()) }
122122
viewModel { (querySearch: String) ->

app/src/main/java/org/openedx/app/room/AppDatabase.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package org.openedx.app.room
33
import androidx.room.Database
44
import androidx.room.RoomDatabase
55
import androidx.room.TypeConverters
6-
import org.openedx.core.data.model.room.CourseEntity
76
import org.openedx.core.data.model.room.CourseStructureEntity
87
import org.openedx.core.data.model.room.discovery.EnrolledCourseEntity
98
import org.openedx.core.module.db.DownloadDao
@@ -12,6 +11,7 @@ import org.openedx.course.data.storage.CourseConverter
1211
import org.openedx.course.data.storage.CourseDao
1312
import org.openedx.dashboard.data.DashboardDao
1413
import org.openedx.discovery.data.converter.DiscoveryConverter
14+
import org.openedx.discovery.data.model.room.CourseEntity
1515
import org.openedx.discovery.data.storage.DiscoveryDao
1616

1717
const val DATABASE_VERSION = 1

core/src/main/java/org/openedx/core/data/api/CourseApi.kt

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
11
package org.openedx.core.data.api
22

3-
import okhttp3.ResponseBody
4-
import org.openedx.core.data.model.*
5-
import retrofit2.http.*
3+
import org.openedx.core.data.model.AnnouncementModel
4+
import org.openedx.core.data.model.BlocksCompletionBody
5+
import org.openedx.core.data.model.CourseComponentStatus
6+
import org.openedx.core.data.model.CourseDates
7+
import org.openedx.core.data.model.CourseDatesBannerInfo
8+
import org.openedx.core.data.model.CourseEnrollments
9+
import org.openedx.core.data.model.CourseStructureModel
10+
import org.openedx.core.data.model.HandoutsModel
11+
import org.openedx.core.data.model.ResetCourseDates
12+
import retrofit2.http.Body
13+
import retrofit2.http.GET
14+
import retrofit2.http.Header
15+
import retrofit2.http.POST
16+
import retrofit2.http.Path
17+
import retrofit2.http.Query
618

719
interface CourseApi {
820

@@ -14,27 +26,6 @@ interface CourseApi {
1426
@Query("page") page: Int
1527
): CourseEnrollments
1628

17-
@GET("/api/courses/v1/courses/")
18-
suspend fun getCourseList(
19-
@Query("search_term") searchQuery: String? = null,
20-
@Query("page") page: Int,
21-
@Query("mobile") mobile: Boolean,
22-
@Query("mobile_search") mobileSearch: Boolean,
23-
@Query("username") username: String? = null,
24-
@Query("org") org: String? = null,
25-
@Query("permissions") permission: List<String> = listOf(
26-
"enroll",
27-
"see_in_catalog",
28-
"see_about_page"
29-
)
30-
): CourseList
31-
32-
@GET("/api/courses/v1/courses/{course_id}")
33-
suspend fun getCourseDetail(
34-
@Path("course_id") courseId: String?,
35-
@Query("username") username: String? = null
36-
): CourseDetails
37-
3829
@GET(
3930
"/api/mobile/{api_version}/course_info/blocks/?" +
4031
"depth=all&" +
@@ -50,9 +41,6 @@ interface CourseApi {
5041
@Query("course_id") courseId: String,
5142
): CourseStructureModel
5243

53-
@POST("/api/enrollment/v1/enrollment")
54-
suspend fun enrollInACourse(@Body enrollBody: EnrollBody): ResponseBody
55-
5644
@GET("/api/mobile/v1/users/{username}/course_status_info/{course_id}")
5745
suspend fun getCourseStatus(
5846
@Path("username") username: String,

core/src/main/java/org/openedx/core/domain/model/CourseList.kt

Lines changed: 0 additions & 6 deletions
This file was deleted.

0 commit comments

Comments
 (0)