Skip to content

Commit b2b3340

Browse files
feat: cache-first logic
1 parent 8be8907 commit b2b3340

File tree

26 files changed

+508
-391
lines changed

26 files changed

+508
-391
lines changed

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import org.openedx.core.presentation.dialog.appupgrade.AppUpgradeDialogFragment
2626
import org.openedx.core.presentation.global.appupgrade.AppUpgradeRecommendedBox
2727
import org.openedx.core.presentation.global.appupgrade.UpgradeRequiredFragment
2828
import org.openedx.core.presentation.global.viewBinding
29+
import org.openedx.dates.presentation.dates.DatesFragment
2930
import org.openedx.core.system.notifier.app.AppUpgradeEvent
3031
import org.openedx.discovery.presentation.DiscoveryRouter
3132
import org.openedx.downloads.presentation.download.DownloadsFragment
@@ -104,6 +105,9 @@ class MainFragment : Fragment(R.layout.fragment_main) {
104105
if (viewModel.isDownloadsFragmentEnabled) {
105106
add(R.id.fragmentDownloads to { DownloadsFragment() })
106107
}
108+
if (viewModel.isDatesFragmentEnabled) {
109+
add(R.id.fragmentDates to DatesFragment())
110+
}
107111
add(R.id.fragmentProfile to { ProfileFragment() })
108112
}
109113
}
@@ -113,12 +117,14 @@ class MainFragment : Fragment(R.layout.fragment_main) {
113117
R.id.fragmentLearn to resources.getString(R.string.app_navigation_learn),
114118
R.id.fragmentDiscover to resources.getString(R.string.app_navigation_discovery),
115119
R.id.fragmentDownloads to resources.getString(R.string.app_navigation_downloads),
120+
R.id.fragmentDates to resources.getString(R.string.app_navigation_dates),
116121
R.id.fragmentProfile to resources.getString(R.string.app_navigation_profile),
117122
)
118123
val tabIconSelectors = mapOf(
119124
R.id.fragmentLearn to R.drawable.app_ic_learn_selector,
120125
R.id.fragmentDiscover to R.drawable.app_ic_discover_selector,
121126
R.id.fragmentDownloads to R.drawable.app_ic_downloads_selector,
127+
R.id.fragmentDates to R.drawable.app_ic_dates_selector,
122128
R.id.fragmentProfile to R.drawable.app_ic_profile_selector
123129
)
124130

@@ -136,6 +142,7 @@ class MainFragment : Fragment(R.layout.fragment_main) {
136142
R.id.fragmentLearn -> viewModel.logLearnTabClickedEvent()
137143
R.id.fragmentDiscover -> viewModel.logDiscoveryTabClickedEvent()
138144
R.id.fragmentDownloads -> viewModel.logDownloadsTabClickedEvent()
145+
R.id.fragmentDates -> viewModel.logDatesTabClickedEvent()
139146
R.id.fragmentProfile -> viewModel.logProfileTabClickedEvent()
140147
}
141148
menuIdToIndex[menuItem.itemId]?.let { index ->
@@ -173,7 +180,7 @@ class MainFragment : Fragment(R.layout.fragment_main) {
173180
} else {
174181
R.id.fragmentLearn
175182
}
176-
183+
HomeTab.DATES.name -> R.id.fragmentDates
177184
HomeTab.PROFILE.name -> R.id.fragmentProfile
178185
else -> R.id.fragmentLearn
179186
}

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

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

241241
single { CourseRepository(get(), get(), get(), get(), get()) }
242242
factory { CourseInteractor(get()) }
243+
single<org.openedx.core.domain.interactor.CourseInteractor> { get<CourseInteractor>() }
243244

244245
viewModel { (pathId: String, infoType: String) ->
245246
CourseInfoViewModel(
@@ -605,7 +606,8 @@ val screenModule = module {
605606
resourceManager = get(),
606607
datesInteractor = get(),
607608
corePreferences = get(),
608-
analytics = get()
609+
analytics = get(),
610+
calendarSyncScheduler = get()
609611
)
610612
}
611613
}

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

Lines changed: 2 additions & 1 deletion
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.CourseProgressEntity
1112
import org.openedx.core.data.model.room.CourseStructureEntity
@@ -19,7 +20,6 @@ import org.openedx.core.module.db.DownloadDao
1920
import org.openedx.core.module.db.DownloadModelEntity
2021
import org.openedx.course.data.storage.CourseConverter
2122
import org.openedx.dashboard.data.DashboardDao
22-
import org.openedx.dates.data.storage.CourseDateEntity
2323
import org.openedx.dates.data.storage.DatesDao
2424
import org.openedx.discovery.data.converter.DiscoveryConverter
2525
import org.openedx.discovery.data.model.room.CourseEntity
@@ -42,6 +42,7 @@ const val DATABASE_NAME = "OpenEdX_db"
4242
CourseEnrollmentDetailsEntity::class,
4343
CourseDateEntity::class,
4444
VideoProgressEntity::class,
45+
CourseDatesResponseEntity::class,
4546
CourseProgressEntity::class,
4647
],
4748
autoMigrations = [
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 = AppLevelDownloadsConfig(),
8+
@SerializedName("APP_LEVEL_DATES")
9+
val appLevelDatesConfig: AppLevelDatesConfig = AppLevelDatesConfig(),
810
)

0 commit comments

Comments
 (0)