new: modularize data.preferences

This commit is contained in:
2026-07-03 09:39:04 +02:00
parent ddab9b642d
commit 0d7503f029
8 changed files with 36 additions and 3 deletions
@@ -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)
}
@@ -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) }
}
}
@@ -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)
}
@@ -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,
)