Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ import org.oppia.android.domain.question.QuestionModule
import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule
import org.oppia.android.util.accessibility.AccessibilityProdModule
import org.oppia.android.util.caching.AssetModule
import org.oppia.android.util.caching.CachingModule
import org.oppia.android.util.caching.DevCachingModule
import org.oppia.android.util.gcsresource.GcsResourceModule
import org.oppia.android.util.locale.LocaleProdModule
import org.oppia.android.util.logging.LoggerModule
Expand Down Expand Up @@ -79,7 +79,7 @@ import javax.inject.Singleton
MultipleChoiceInputModule::class, NumberWithUnitsRuleModule::class,
NumericInputRuleModule::class, TextInputRuleModule::class, DragDropSortInputModule::class,
InteractionsModule::class, GcsResourceModule::class, GlideImageLoaderModule::class,
ImageParsingModule::class, HtmlParserEntityTypeModule::class, CachingModule::class,
ImageParsingModule::class, HtmlParserEntityTypeModule::class, DevCachingModule::class,
QuestionModule::class, DebugLogReportingModule::class, AccessibilityProdModule::class,
ImageClickInputModule::class, LogStorageModule::class, IntentFactoryShimModule::class,
ViewBindingShimModule::class,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import org.oppia.android.app.view.ViewComponentFactory
import org.oppia.android.app.view.ViewComponentImpl
import org.oppia.android.app.views.R
import org.oppia.android.domain.oppialogger.OppiaLogger
import org.oppia.android.util.caching.LoadThumbnailsFromGcs
import org.oppia.android.util.gcsresource.DefaultResourceBucketName
import org.oppia.android.util.locale.OppiaLocale
import org.oppia.android.util.parser.image.DefaultGcsPrefix
Expand Down Expand Up @@ -56,6 +57,10 @@ class LessonThumbnailImageView @JvmOverloads constructor(
@Inject
lateinit var machineLocale: OppiaLocale.MachineLocale

@Inject
@field:LoadThumbnailsFromGcs
var loadThumbnailsFromGcs: Boolean = true

/** Sets the entityId of the current [LessonThumbnailImageView] being displayed. */
fun setEntityId(entityId: String) {
this.entityId = entityId
Expand Down Expand Up @@ -101,7 +106,7 @@ class LessonThumbnailImageView @JvmOverloads constructor(
} else {
listOf()
}
if (lessonThumbnail.thumbnailFilename.isNotEmpty()) {
if (lessonThumbnail.thumbnailFilename.isNotEmpty() && loadThumbnailsFromGcs) {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have you tested this with proto lessons @harshsomankar123-tech? I wouldn't expect this to work, actually. I left more thoughts in #5663 (comment). PTAL.

loadImage(lessonThumbnail.thumbnailFilename, transformations)
} else {
imageLoader.loadDrawable(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ import org.oppia.android.util.accessibility.AccessibilityTestModule
import org.oppia.android.util.caching.AssetModule
import org.oppia.android.util.caching.LoadImagesFromAssets
import org.oppia.android.util.caching.LoadLessonProtosFromAssets
import org.oppia.android.util.caching.LoadThumbnailsFromGcs
import org.oppia.android.util.extensions.getProto
import org.oppia.android.util.gcsresource.GcsResourceModule
import org.oppia.android.util.locale.LocaleProdModule
Expand Down Expand Up @@ -6993,6 +6994,10 @@ class StateFragmentTest {
@Provides
@LoadImagesFromAssets
fun provideLoadImagesFromAssets(): Boolean = false

@Provides
@LoadThumbnailsFromGcs
fun provideLoadThumbnailsFromGcs(): Boolean = false
}

@Singleton
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ import org.oppia.android.util.accessibility.AccessibilityTestModule
import org.oppia.android.util.caching.AssetModule
import org.oppia.android.util.caching.LoadImagesFromAssets
import org.oppia.android.util.caching.LoadLessonProtosFromAssets
import org.oppia.android.util.caching.LoadThumbnailsFromGcs
import org.oppia.android.util.extensions.getProto
import org.oppia.android.util.gcsresource.GcsResourceModule
import org.oppia.android.util.locale.LocaleProdModule
Expand Down Expand Up @@ -589,6 +590,10 @@ class ConceptCardFragmentTest {
@Provides
@LoadImagesFromAssets
fun provideLoadImagesFromAssets(): Boolean = false

@Provides
@LoadThumbnailsFromGcs
fun provideLoadThumbnailsFromGcs(): Boolean = false
}

// TODO(#59): Figure out a way to reuse modules instead of needing to re-declare them.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ import org.oppia.android.util.accessibility.AccessibilityTestModule
import org.oppia.android.util.caching.AssetModule
import org.oppia.android.util.caching.LoadImagesFromAssets
import org.oppia.android.util.caching.LoadLessonProtosFromAssets
import org.oppia.android.util.caching.LoadThumbnailsFromGcs
import org.oppia.android.util.extensions.getProto
import org.oppia.android.util.gcsresource.GcsResourceModule
import org.oppia.android.util.locale.LocaleProdModule
Expand Down Expand Up @@ -911,6 +912,10 @@ class RevisionCardFragmentTest {
@Provides
@LoadImagesFromAssets
fun provideLoadImagesFromAssets(): Boolean = false

@Provides
@LoadThumbnailsFromGcs
fun provideLoadThumbnailsFromGcs(): Boolean = false
}

// TODO(#59): Figure out a way to reuse modules instead of needing to re-declare them.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ import org.oppia.android.util.accessibility.AccessibilityTestModule
import org.oppia.android.util.caching.AssetModule
import org.oppia.android.util.caching.LoadImagesFromAssets
import org.oppia.android.util.caching.LoadLessonProtosFromAssets
import org.oppia.android.util.caching.LoadThumbnailsFromGcs
import org.oppia.android.util.gcsresource.GcsResourceModule
import org.oppia.android.util.locale.LocaleProdModule
import org.oppia.android.util.logging.LoggerModule
Expand Down Expand Up @@ -283,6 +284,10 @@ class WalkthroughTopicListFragmentTest {
@Provides
@LoadImagesFromAssets
fun provideLoadImagesFromAssets(): Boolean = false

@Provides
@LoadThumbnailsFromGcs
fun provideLoadThumbnailsFromGcs(): Boolean = false
}

// TODO(#59): Figure out a way to reuse modules instead of needing to re-declare them.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ import org.oppia.android.util.accessibility.FakeAccessibilityService
import org.oppia.android.util.caching.AssetModule
import org.oppia.android.util.caching.LoadImagesFromAssets
import org.oppia.android.util.caching.LoadLessonProtosFromAssets
import org.oppia.android.util.caching.LoadThumbnailsFromGcs
import org.oppia.android.util.gcsresource.GcsResourceModule
import org.oppia.android.util.locale.LocaleProdModule
import org.oppia.android.util.logging.LoggerModule
Expand Down Expand Up @@ -2997,6 +2998,10 @@ class StateFragmentLocalTest {
@Provides
@LoadImagesFromAssets
fun provideLoadImagesFromAssets(): Boolean = false

@Provides
@LoadThumbnailsFromGcs
fun provideLoadThumbnailsFromGcs(): Boolean = false
}

// TODO(#59): Figure out a way to reuse modules instead of needing to re-declare them.
Expand Down
14 changes: 14 additions & 0 deletions utility/src/main/java/org/oppia/android/util/caching/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,27 @@ kt_android_library(
srcs = [
"LoadImagesFromAssets.kt",
"LoadLessonProtosFromAssets.kt",
"LoadThumbnailsFromGcs.kt",
],
visibility = ["//:oppia_api_visibility"],
deps = [
"//third_party:javax_inject_javax_inject",
],
)

kt_android_library(
name = "dev_caching_module",
srcs = [
"DevCachingModule.kt",
],
visibility = ["//:oppia_api_visibility"],
deps = [
":annotations",
":asset_repository",
"//:dagger",
],
)

kt_android_library(
name = "impl",
srcs = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,8 @@ class CachingModule {
@Provides
@LoadImagesFromAssets
fun provideLoadImagesFromAssets(): Boolean = false

@Provides
@LoadThumbnailsFromGcs
fun provideLoadThumbnailsFromGcs(): Boolean = true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package org.oppia.android.util.caching

import dagger.Module
import dagger.Provides

/**
* Provides dependencies corresponding to the app's caching policies for developer builds.
*
* This module is identical to [CachingModule] except that it sets [LoadThumbnailsFromGcs] to
* false, ensuring that developer builds use local drawable resources for thumbnails instead of
* attempting to fetch them from Google Cloud Storage (which is inaccessible in dev builds).
*/
@Module
class DevCachingModule {
@Provides
@LoadLessonProtosFromAssets
fun provideLoadLessonProtosFromAssets(): Boolean = false

@Provides
@LoadImagesFromAssets
fun provideLoadImagesFromAssets(): Boolean = false

@Provides
@LoadThumbnailsFromGcs
fun provideLoadThumbnailsFromGcs(): Boolean = false
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.oppia.android.util.caching

import javax.inject.Qualifier

/**
* Corresponds to an injectable boolean indicating whether lesson thumbnails should be loaded
* from Google Cloud Storage (GCS). When false, local drawable resources are used instead.
*
* This is primarily used to support developer builds where GCS is inaccessible, ensuring that
* thumbnails still render correctly using bundled drawable assets.
*/
@Qualifier
annotation class LoadThumbnailsFromGcs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import dagger.Module
import dagger.Provides
import org.oppia.android.util.caching.LoadImagesFromAssets
import org.oppia.android.util.caching.LoadLessonProtosFromAssets
import org.oppia.android.util.caching.LoadThumbnailsFromGcs

/**
* Provides test dependencies corresponding to the app's caching policies. In particular, this
Expand All @@ -18,4 +19,8 @@ class CachingTestModule {
@Provides
@LoadImagesFromAssets
fun provideLoadImagesFromAssets(): Boolean = false

@Provides
@LoadThumbnailsFromGcs
fun provideLoadThumbnailsFromGcs(): Boolean = false
}
Loading