refactor(settings): убрать осиротевший тумблер записи; тестер под SHOW_DEV_TOOLS
This commit is contained in:
@@ -28,7 +28,6 @@ class SettingsRepositoryImpl @Inject constructor(
|
|||||||
private val SLEEP_TIMER = intPreferencesKey("sleep_timer_minutes")
|
private val SLEEP_TIMER = intPreferencesKey("sleep_timer_minutes")
|
||||||
private val ENABLED_SERVICES = stringSetPreferencesKey("enabled_deeplink_services")
|
private val ENABLED_SERVICES = stringSetPreferencesKey("enabled_deeplink_services")
|
||||||
private val EQUALIZER_PRESET = stringPreferencesKey("equalizer_preset")
|
private val EQUALIZER_PRESET = stringPreferencesKey("equalizer_preset")
|
||||||
private val RECORDING_ENABLED = booleanPreferencesKey("recording_enabled")
|
|
||||||
private val PREFERRED_BITRATE = intPreferencesKey("preferred_bitrate")
|
private val PREFERRED_BITRATE = intPreferencesKey("preferred_bitrate")
|
||||||
private val COUNTRY_CODE = stringPreferencesKey("country_code")
|
private val COUNTRY_CODE = stringPreferencesKey("country_code")
|
||||||
private val VISUALIZER_STYLE = stringPreferencesKey("visualizer_style")
|
private val VISUALIZER_STYLE = stringPreferencesKey("visualizer_style")
|
||||||
@@ -57,9 +56,6 @@ class SettingsRepositoryImpl @Inject constructor(
|
|||||||
override fun getEqualizerPreset(): Flow<String> = dataStore.data.map { it[EQUALIZER_PRESET] ?: "Flat" }
|
override fun getEqualizerPreset(): Flow<String> = dataStore.data.map { it[EQUALIZER_PRESET] ?: "Flat" }
|
||||||
override suspend fun setEqualizerPreset(preset: String) { dataStore.edit { it[EQUALIZER_PRESET] = preset } }
|
override suspend fun setEqualizerPreset(preset: String) { dataStore.edit { it[EQUALIZER_PRESET] = preset } }
|
||||||
|
|
||||||
override fun isRecordingEnabled(): Flow<Boolean> = dataStore.data.map { it[RECORDING_ENABLED] ?: false }
|
|
||||||
override suspend fun setRecordingEnabled(enabled: Boolean) { dataStore.edit { it[RECORDING_ENABLED] = enabled } }
|
|
||||||
|
|
||||||
override fun getPreferredBitrate(): Flow<Int> = dataStore.data.map { it[PREFERRED_BITRATE] ?: 0 }
|
override fun getPreferredBitrate(): Flow<Int> = dataStore.data.map { it[PREFERRED_BITRATE] ?: 0 }
|
||||||
override suspend fun setPreferredBitrate(bitrate: Int) { dataStore.edit { it[PREFERRED_BITRATE] = bitrate } }
|
override suspend fun setPreferredBitrate(bitrate: Int) { dataStore.edit { it[PREFERRED_BITRATE] = bitrate } }
|
||||||
|
|
||||||
|
|||||||
@@ -12,8 +12,6 @@ interface SettingsRepository {
|
|||||||
suspend fun setEnabledDeeplinkServices(serviceIds: Set<String>)
|
suspend fun setEnabledDeeplinkServices(serviceIds: Set<String>)
|
||||||
fun getEqualizerPreset(): Flow<String>
|
fun getEqualizerPreset(): Flow<String>
|
||||||
suspend fun setEqualizerPreset(preset: String)
|
suspend fun setEqualizerPreset(preset: String)
|
||||||
fun isRecordingEnabled(): Flow<Boolean>
|
|
||||||
suspend fun setRecordingEnabled(enabled: Boolean)
|
|
||||||
// Предпочитаемый битрейт (kbps). 0 = авто (брать качество по умолчанию станции).
|
// Предпочитаемый битрейт (kbps). 0 = авто (брать качество по умолчанию станции).
|
||||||
fun getPreferredBitrate(): Flow<Int>
|
fun getPreferredBitrate(): Flow<Int>
|
||||||
suspend fun setPreferredBitrate(bitrate: Int)
|
suspend fun setPreferredBitrate(bitrate: Int)
|
||||||
|
|||||||
@@ -50,7 +50,6 @@ fun SettingsScreen(
|
|||||||
val enabledServices by viewModel.enabledServices.collectAsState()
|
val enabledServices by viewModel.enabledServices.collectAsState()
|
||||||
val visualizerStyle by viewModel.visualizerStyle.collectAsState()
|
val visualizerStyle by viewModel.visualizerStyle.collectAsState()
|
||||||
val themePalette by viewModel.themePalette.collectAsState()
|
val themePalette by viewModel.themePalette.collectAsState()
|
||||||
val isRecordingEnabled by viewModel.isRecordingEnabled.collectAsState()
|
|
||||||
val preferredBitrate by viewModel.preferredBitrate.collectAsState()
|
val preferredBitrate by viewModel.preferredBitrate.collectAsState()
|
||||||
val isTesting by viewModel.isTesting.collectAsState()
|
val isTesting by viewModel.isTesting.collectAsState()
|
||||||
val testProgress by viewModel.testProgress.collectAsState()
|
val testProgress by viewModel.testProgress.collectAsState()
|
||||||
@@ -449,51 +448,8 @@ fun SettingsScreen(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- Запись эфира ---
|
// --- Тестирование станций (dev-инструмент, только в sideload) ---
|
||||||
item {
|
if (com.radiola.BuildConfig.SHOW_DEV_TOOLS) item {
|
||||||
Column(
|
|
||||||
modifier = Modifier
|
|
||||||
.fillMaxWidth()
|
|
||||||
.clip(RoundedCornerShape(16.dp))
|
|
||||||
.background(colors.surface)
|
|
||||||
.border(1.dp, colors.border, RoundedCornerShape(16.dp))
|
|
||||||
) {
|
|
||||||
Row(
|
|
||||||
modifier = Modifier
|
|
||||||
.fillMaxWidth()
|
|
||||||
.clickable { viewModel.setRecordingEnabled(!isRecordingEnabled) }
|
|
||||||
.padding(horizontal = 16.dp, vertical = 14.dp),
|
|
||||||
horizontalArrangement = Arrangement.SpaceBetween,
|
|
||||||
verticalAlignment = Alignment.CenterVertically
|
|
||||||
) {
|
|
||||||
Column {
|
|
||||||
Text(
|
|
||||||
text = "Запись эфира",
|
|
||||||
style = MaterialTheme.typography.titleMedium,
|
|
||||||
color = colors.textPrimary
|
|
||||||
)
|
|
||||||
Text(
|
|
||||||
text = "Сохранять в файл при воспроизведении",
|
|
||||||
style = MaterialTheme.typography.labelMedium,
|
|
||||||
color = colors.textSecondary
|
|
||||||
)
|
|
||||||
}
|
|
||||||
Switch(
|
|
||||||
checked = isRecordingEnabled,
|
|
||||||
onCheckedChange = { viewModel.setRecordingEnabled(it) },
|
|
||||||
colors = SwitchDefaults.colors(
|
|
||||||
checkedThumbColor = colors.bgBase,
|
|
||||||
checkedTrackColor = colors.accent,
|
|
||||||
uncheckedThumbColor = colors.textMuted,
|
|
||||||
uncheckedTrackColor = colors.surface2
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- Тестирование станций ---
|
|
||||||
item {
|
|
||||||
SectionLabel("ТЕСТИРОВАНИЕ СТАНЦИЙ")
|
SectionLabel("ТЕСТИРОВАНИЕ СТАНЦИЙ")
|
||||||
Spacer(Modifier.height(8.dp))
|
Spacer(Modifier.height(8.dp))
|
||||||
Column(
|
Column(
|
||||||
|
|||||||
@@ -38,9 +38,6 @@ class SettingsViewModel @Inject constructor(
|
|||||||
val themePalette: StateFlow<String> = settingsRepository.getThemePalette()
|
val themePalette: StateFlow<String> = settingsRepository.getThemePalette()
|
||||||
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), "forest")
|
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), "forest")
|
||||||
|
|
||||||
val isRecordingEnabled: StateFlow<Boolean> = settingsRepository.isRecordingEnabled()
|
|
||||||
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), false)
|
|
||||||
|
|
||||||
// Предпочитаемый битрейт по умолчанию (0 = авто/станция сама выбирает).
|
// Предпочитаемый битрейт по умолчанию (0 = авто/станция сама выбирает).
|
||||||
val preferredBitrate: StateFlow<Int> = settingsRepository.getPreferredBitrate()
|
val preferredBitrate: StateFlow<Int> = settingsRepository.getPreferredBitrate()
|
||||||
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), 0)
|
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), 0)
|
||||||
@@ -91,10 +88,6 @@ class SettingsViewModel @Inject constructor(
|
|||||||
viewModelScope.launch { settingsRepository.setThemePalette(id) }
|
viewModelScope.launch { settingsRepository.setThemePalette(id) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setRecordingEnabled(enabled: Boolean) {
|
|
||||||
viewModelScope.launch { settingsRepository.setRecordingEnabled(enabled) }
|
|
||||||
}
|
|
||||||
|
|
||||||
fun startTesting() {
|
fun startTesting() {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
_isTesting.value = true
|
_isTesting.value = true
|
||||||
|
|||||||
Reference in New Issue
Block a user