Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
Provide Default implementation of LanguageProvider
  • Loading branch information
tuancoltech authored Apr 2, 2025
commit ff4f93beed36af0da21c07ee9287a16903468cc4
8 changes: 7 additions & 1 deletion app/src/main/java/ai/elimu/common/utils/DataModule.kt
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@
package ai.elimu.common.utils

import ai.elimu.common.utils.data.repository.language.LanguageProvider
import ai.elimu.common.utils.di.StringKey.LANGUAGE_CUSTOM
import ai.elimu.common.utils.repository.LanguageProviderImpl
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import dagger.multibindings.IntoMap
import dagger.multibindings.StringKey
import java.util.Optional

@Module
@InstallIn(SingletonComponent::class)
object DataModule {

@StringKey(LANGUAGE_CUSTOM)
@IntoMap
@Provides
fun providesLanguageProvider(): LanguageProvider = LanguageProviderImpl()
fun providesLanguageProvider(): Optional<LanguageProvider> = Optional.of(LanguageProviderImpl())
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import javax.inject.Inject

class LanguageProviderImpl @Inject constructor(): LanguageProvider {
override fun getLanguage(): String {
return ""
return "tha"
}

override fun getContentProviderId(): String {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package ai.elimu.common.utils.data.repository

import ai.elimu.common.utils.data.repository.language.LanguageProvider

class DefaultLanguageProviderImpl: LanguageProvider {
override fun getLanguage(): String {
return ""
}

override fun getContentProviderId(): String {
return "ai.elimu.content_provider"
}
}
22 changes: 22 additions & 0 deletions utils/src/main/java/ai/elimu/common/utils/di/DataModule.kt
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package ai.elimu.common.utils.di

import ai.elimu.common.utils.data.repository.DefaultLanguageProviderImpl
import ai.elimu.common.utils.data.repository.TextToSpeechRepository
import ai.elimu.common.utils.data.repository.TextToSpeechRepositoryImpl
import ai.elimu.common.utils.data.repository.language.LanguageProvider
import ai.elimu.common.utils.data.repository.local.LocalTextToSpeechDataSource
import ai.elimu.common.utils.data.repository.local.LocalTextToSpeechDataSourceImpl
import ai.elimu.common.utils.di.StringKey.LANGUAGE_CUSTOM
import ai.elimu.common.utils.di.StringKey.LANGUAGE_DEFAULT
import android.content.Context
import android.speech.tts.TextToSpeech
import dagger.Binds
Expand All @@ -14,6 +17,9 @@ import dagger.hilt.InstallIn
import dagger.hilt.android.components.ViewModelComponent
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import dagger.multibindings.IntoMap
import dagger.multibindings.StringKey
import java.util.Optional

// Tells Dagger this is a Dagger module
@Module
Expand All @@ -26,10 +32,26 @@ abstract class DataModule {
abstract fun bindLocalTTSDataSource(dataSource: LocalTextToSpeechDataSourceImpl): LocalTextToSpeechDataSource
}

object StringKey {
const val LANGUAGE_DEFAULT = "defaultLanguage"
const val LANGUAGE_CUSTOM = "customLanguage"
}

@Module
@InstallIn(SingletonComponent::class)
internal object TextToSpeechModule {

@StringKey(LANGUAGE_DEFAULT)
@Provides
@IntoMap
fun providesOptionalLanguageProvider(): Optional<LanguageProvider> = Optional.empty()

@Provides
fun providesLanguageProvider(providers: Map<String, @JvmSuppressWildcards Optional<LanguageProvider>>): LanguageProvider {
val defaultImpl = DefaultLanguageProviderImpl()
return providers[LANGUAGE_CUSTOM]?.orElse(defaultImpl) ?: defaultImpl
}

@Provides
fun providesTextToSpeech(
@ApplicationContext context: Context,
Expand Down