Skip to content

Commit a20f38b

Browse files
feat: cache-first logic
1 parent 9b21ef3 commit a20f38b

File tree

26 files changed

+512
-392
lines changed

26 files changed

+512
-392
lines changed

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@ import org.openedx.app.deeplink.HomeTab
1717
import org.openedx.core.adapter.NavigationFragmentAdapter
1818
import org.openedx.core.presentation.global.appupgrade.UpgradeRequiredFragment
1919
import org.openedx.core.presentation.global.viewBinding
20+
import org.openedx.dates.presentation.dates.DatesFragment
2021
import org.openedx.discovery.presentation.DiscoveryRouter
2122
import org.openedx.downloads.presentation.download.DownloadsFragment
2223
import org.openedx.learn.presentation.LearnFragment
2324
import org.openedx.learn.presentation.LearnTab
2425
import org.openedx.profile.presentation.profile.ProfileFragment
2526

26-
class MainFragment : Fragment(R.layout.fragment_main) {
27+
class
28+
MainFragment : Fragment(R.layout.fragment_main) {
2729

2830
private val binding by viewBinding(FragmentMainBinding::bind)
2931
private val viewModel by viewModel<MainViewModel>()
@@ -93,6 +95,9 @@ class MainFragment : Fragment(R.layout.fragment_main) {
9395
if (viewModel.isDownloadsFragmentEnabled) {
9496
add(R.id.fragmentDownloads to DownloadsFragment())
9597
}
98+
if (viewModel.isDatesFragmentEnabled) {
99+
add(R.id.fragmentDates to DatesFragment())
100+
}
96101
add(R.id.fragmentProfile to ProfileFragment())
97102
}
98103
}
@@ -102,12 +107,14 @@ class MainFragment : Fragment(R.layout.fragment_main) {
102107
R.id.fragmentLearn to resources.getString(R.string.app_navigation_learn),
103108
R.id.fragmentDiscover to resources.getString(R.string.app_navigation_discovery),
104109
R.id.fragmentDownloads to resources.getString(R.string.app_navigation_downloads),
110+
R.id.fragmentDates to resources.getString(R.string.app_navigation_dates),
105111
R.id.fragmentProfile to resources.getString(R.string.app_navigation_profile),
106112
)
107113
val tabIconSelectors = mapOf(
108114
R.id.fragmentLearn to R.drawable.app_ic_learn_selector,
109115
R.id.fragmentDiscover to R.drawable.app_ic_discover_selector,
110116
R.id.fragmentDownloads to R.drawable.app_ic_downloads_selector,
117+
R.id.fragmentDates to R.drawable.app_ic_dates_selector,
111118
R.id.fragmentProfile to R.drawable.app_ic_profile_selector
112119
)
113120

@@ -125,6 +132,7 @@ class MainFragment : Fragment(R.layout.fragment_main) {
125132
R.id.fragmentLearn -> viewModel.logLearnTabClickedEvent()
126133
R.id.fragmentDiscover -> viewModel.logDiscoveryTabClickedEvent()
127134
R.id.fragmentDownloads -> viewModel.logDownloadsTabClickedEvent()
135+
R.id.fragmentDates -> viewModel.logDatesTabClickedEvent()
128136
R.id.fragmentProfile -> viewModel.logProfileTabClickedEvent()
129137
}
130138
menuIdToIndex[menuItem.itemId]?.let { index ->
@@ -162,6 +170,7 @@ class MainFragment : Fragment(R.layout.fragment_main) {
162170
} else {
163171
R.id.fragmentLearn
164172
}
173+
HomeTab.DATES.name -> R.id.fragmentDates
165174
HomeTab.PROFILE.name -> R.id.fragmentProfile
166175
else -> R.id.fragmentLearn
167176
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ val screenModule = module {
235235

236236
single { CourseRepository(get(), get(), get(), get(), get()) }
237237
factory { CourseInteractor(get()) }
238+
single<org.openedx.core.domain.interactor.CourseInteractor> { get<CourseInteractor>() }
238239

239240
viewModel { (pathId: String, infoType: String) ->
240241
CourseInfoViewModel(
@@ -551,7 +552,8 @@ val screenModule = module {
551552
resourceManager = get(),
552553
datesInteractor = get(),
553554
corePreferences = get(),
554-
analytics = get()
555+
analytics = get(),
556+
calendarSyncScheduler = get()
555557
)
556558
}
557559
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import androidx.room.RoomDatabase
66
import androidx.room.TypeConverters
77
import org.openedx.core.data.model.room.CourseCalendarEventEntity
88
import org.openedx.core.data.model.room.CourseCalendarStateEntity
9+
import org.openedx.core.data.model.room.CourseDatesResponseEntity
910
import org.openedx.core.data.model.room.CourseEnrollmentDetailsEntity
1011
import org.openedx.core.data.model.room.CourseStructureEntity
1112
import org.openedx.core.data.model.room.DownloadCoursePreview
@@ -17,7 +18,6 @@ import org.openedx.core.module.db.DownloadDao
1718
import org.openedx.core.module.db.DownloadModelEntity
1819
import org.openedx.course.data.storage.CourseConverter
1920
import org.openedx.dashboard.data.DashboardDao
20-
import org.openedx.dates.data.storage.CourseDateEntity
2121
import org.openedx.dates.data.storage.DatesDao
2222
import org.openedx.discovery.data.converter.DiscoveryConverter
2323
import org.openedx.discovery.data.model.room.CourseEntity
@@ -37,7 +37,7 @@ const val DATABASE_NAME = "OpenEdX_db"
3737
CourseCalendarStateEntity::class,
3838
DownloadCoursePreview::class,
3939
CourseEnrollmentDetailsEntity::class,
40-
CourseDateEntity::class,
40+
CourseDatesResponseEntity::class,
4141
],
4242
autoMigrations = [
4343
AutoMigration(1, DATABASE_VERSION)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="18dp"
3+
android:height="20dp"
4+
android:viewportWidth="18"
5+
android:viewportHeight="20">
6+
<path
7+
android:pathData="M16,2H15V0H13V2H5V0H3V2H2C0.89,2 0.01,2.9 0.01,4L0,18C0,19.1 0.89,20 2,20H16C17.1,20 18,19.1 18,18V4C18,2.9 17.1,2 16,2ZM16,18H2V8H16V18ZM6,12H4V10H6V12ZM10,12H8V10H10V12ZM14,12H12V10H14V12ZM6,16H4V14H6V16ZM10,16H8V14H10V16ZM14,16H12V14H14V16Z"
8+
android:fillColor="#3C68FF" />
9+
</vector>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="18dp"
3+
android:height="20dp"
4+
android:viewportWidth="18"
5+
android:viewportHeight="20">
6+
<path
7+
android:pathData="M16,2H15V0H13V2H5V0H3V2H2C0.89,2 0.01,2.9 0.01,4L0,18C0,19.1 0.89,20 2,20H16C17.1,20 18,19.1 18,18V4C18,2.9 17.1,2 16,2ZM16,18H2V8H16V18ZM16,6H2V4H16V6ZM6,12H4V10H6V12ZM10,12H8V10H10V12ZM14,12H12V10H14V12ZM6,16H4V14H6V16ZM10,16H8V14H10V16ZM14,16H12V14H14V16Z"
8+
android:fillColor="#97A5BB" />
9+
</vector>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<selector xmlns:android="http://schemas.android.com/apk/res/android">
3+
<item android:drawable="@drawable/app_ic_dates_cloud_fill" android:state_checked="true" />
4+
<item android:drawable="@drawable/app_ic_dates_cloud_outline" />
5+
</selector>

app/src/main/res/menu/bottom_view_menu.xml

Whitespace-only changes.

app/src/main/res/values/main_manu_tab_ids.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@
33
<item type="id" name="fragmentLearn" />
44
<item type="id" name="fragmentDiscover" />
55
<item type="id" name="fragmentDownloads" />
6+
<item type="id" name="fragmentDates" />
67
<item type="id" name="fragmentProfile" />
78
</resources>

core/src/main/java/org/openedx/core/config/DatesConfig.kt renamed to core/src/main/java/org/openedx/core/config/AppLevelDatesConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package org.openedx.core.config
22

33
import com.google.gson.annotations.SerializedName
44

5-
data class DatesConfig(
5+
data class AppLevelDatesConfig(
66
@SerializedName("ENABLED")
77
val isEnabled: Boolean = true,
88
)

core/src/main/java/org/openedx/core/config/ExperimentalFeaturesConfig.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,6 @@ import com.google.gson.annotations.SerializedName
55
data class ExperimentalFeaturesConfig(
66
@SerializedName("APP_LEVEL_DOWNLOADS")
77
val appLevelDownloadsConfig: AppLevelDownloadsConfig,
8+
@SerializedName("APP_LEVEL_DATES")
9+
val appLevelDatesConfig: AppLevelDatesConfig,
810
)

0 commit comments

Comments
 (0)