new: modularize data.preferences
This commit is contained in:
@@ -39,6 +39,7 @@ kotlin {
|
||||
implementation(projects.core.model)
|
||||
|
||||
// Data modules
|
||||
implementation(projects.data.preferences)
|
||||
implementation(projects.data.records)
|
||||
implementation(projects.data.resources)
|
||||
implementation(projects.data.subtitle)
|
||||
|
||||
@@ -4,8 +4,7 @@ import fr.ajaury.gwenedeg.core.logging.di.loggingModule
|
||||
import fr.ajaury.gwenedeg.player.data.PlaybackRepositoryImpl
|
||||
import fr.ajaury.gwenedeg.player.domain.PlaybackRepository
|
||||
import fr.ajaury.gwenedeg.player.ui.viewmodel.PlayerViewModel
|
||||
import fr.ajaury.gwenedeg.preferences.data.PreferencesRepositoryImpl
|
||||
import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository
|
||||
import fr.ajaury.gwenedeg.preferences.di.preferencesModule
|
||||
import fr.ajaury.gwenedeg.records.di.recordsModule
|
||||
import fr.ajaury.gwenedeg.records.ui.viewmodel.RecordsViewModel
|
||||
import fr.ajaury.gwenedeg.resources.di.resourcesModule
|
||||
@@ -16,10 +15,10 @@ import org.koin.dsl.module
|
||||
|
||||
val sharedModule = module {
|
||||
includes(loggingModule)
|
||||
includes(preferencesModule)
|
||||
includes(recordsModule)
|
||||
includes(resourcesModule)
|
||||
singleOf(::PlaybackRepositoryImpl) { bind<PlaybackRepository>() }
|
||||
singleOf(::PreferencesRepositoryImpl) { bind<PreferencesRepository>() }
|
||||
viewModelOf(::RecordsViewModel)
|
||||
viewModelOf(::PlayerViewModel)
|
||||
}
|
||||
|
||||
-21
@@ -1,21 +0,0 @@
|
||||
package fr.ajaury.gwenedeg.preferences.data
|
||||
|
||||
import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository
|
||||
import fr.ajaury.gwenedeg.preferences.model.SubtitlePreferences
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
|
||||
internal class PreferencesRepositoryImpl : PreferencesRepository {
|
||||
private val state = MutableStateFlow(SubtitlePreferences())
|
||||
override val subtitlePreferences: StateFlow<SubtitlePreferences> = state.asStateFlow()
|
||||
|
||||
override fun setShowTranscription(enabled: Boolean) {
|
||||
state.update { it.copy(showTranscription = enabled) }
|
||||
}
|
||||
|
||||
override fun setShowTranslation(enabled: Boolean) {
|
||||
state.update { it.copy(showTranslation = enabled) }
|
||||
}
|
||||
}
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
package fr.ajaury.gwenedeg.preferences.domain
|
||||
|
||||
import fr.ajaury.gwenedeg.preferences.model.SubtitlePreferences
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
|
||||
interface PreferencesRepository {
|
||||
val subtitlePreferences: StateFlow<SubtitlePreferences>
|
||||
|
||||
fun setShowTranscription(enabled: Boolean)
|
||||
|
||||
fun setShowTranslation(enabled: Boolean)
|
||||
}
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
package fr.ajaury.gwenedeg.preferences.model
|
||||
|
||||
/**
|
||||
* User preferences controlling which subtitle lines are displayed on the player.
|
||||
*
|
||||
* @property showTranscription whether the Breton (BZH) transcription line is shown.
|
||||
* @property showTranslation whether the French (FR) translation line is shown.
|
||||
*/
|
||||
data class SubtitlePreferences(
|
||||
val showTranscription: Boolean = true,
|
||||
val showTranslation: Boolean = true,
|
||||
)
|
||||
Reference in New Issue
Block a user