Skip to content

Commit d026dc4

Browse files
committed
fix(settings): stabilize search query flow and update dependencies
This change refactors the search query debounce mechanism in SettingsViewModel to prevent the screen from flickering to an empty state while typing. It also brings all core libraries up to date with the latest releases, bumps app version to 0.9.8. - Convert `debouncedSearchQuery` from a computed property to a standard value in `SettingsViewModel` to reuse the Flow pipeline. - Bump library versions VERSION: 0.9.7 -> 0.9.8
1 parent 322c9fa commit d026dc4

2 files changed

Lines changed: 26 additions & 27 deletions

File tree

app/build.gradle.kts

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ android {
3939
minSdk = 29
4040
targetSdk = 36
4141
versionCode = 1
42-
versionName = "0.9.7"
42+
versionName = "0.9.8"
4343

4444
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
4545
vectorDrawables {
@@ -115,19 +115,19 @@ aboutLibraries {
115115
}
116116

117117
dependencies {
118-
val composeBomVersion = "2025.09.00"
118+
val composeBomVersion = "2026.01.00"
119119
implementation(platform("androidx.compose:compose-bom:$composeBomVersion"))
120120
androidTestImplementation(platform("androidx.compose:compose-bom:$composeBomVersion"))
121121

122122
// Core Android dependencies
123123
implementation("androidx.core:core-ktx:1.17.0")
124-
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.9.4")
125-
implementation("androidx.lifecycle:lifecycle-runtime-compose:2.9.4")
126-
implementation("androidx.activity:activity-compose:1.11.0")
127-
implementation("androidx.lifecycle:lifecycle-service:2.9.4")
124+
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.10.0")
125+
implementation("androidx.lifecycle:lifecycle-runtime-compose:2.10.0")
126+
implementation("androidx.activity:activity-compose:1.12.2")
127+
implementation("androidx.lifecycle:lifecycle-service:2.10.0")
128128

129129
// WorkManager
130-
val work_version = "2.10.4"
130+
val work_version = "2.11.0"
131131
implementation("androidx.work:work-runtime-ktx:$work_version")
132132

133133
// Hilt integration for WorkManager
@@ -137,36 +137,36 @@ dependencies {
137137
implementation("androidx.compose.ui:ui")
138138
implementation("androidx.compose.ui:ui-graphics")
139139
implementation("androidx.compose.ui:ui-tooling-preview")
140-
implementation("androidx.compose.material3:material3:1.3.2")
140+
implementation("androidx.compose.material3:material3:1.4.0")
141141
implementation("androidx.compose.material:material-icons-extended")
142-
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4")
143-
implementation("androidx.navigation:navigation-compose:2.9.4")
144-
implementation("androidx.compose.material3:material3-window-size-class:1.3.2")
142+
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0")
143+
implementation("androidx.navigation:navigation-compose:2.9.6")
144+
implementation("androidx.compose.material3:material3-window-size-class:1.4.0")
145145

146-
implementation("com.google.dagger:hilt-android:2.57.1")
147-
ksp("com.google.dagger:hilt-compiler:2.57.1")
146+
implementation("com.google.dagger:hilt-android:2.58")
147+
ksp("com.google.dagger:hilt-compiler:2.58")
148148
implementation("androidx.hilt:hilt-navigation-compose:1.3.0")
149149

150150
// Room
151-
implementation("androidx.room:room-runtime:2.8.0")
152-
ksp("androidx.room:room-compiler:2.8.0")
153-
implementation("androidx.room:room-ktx:2.8.0")
151+
implementation("androidx.room:room-runtime:2.8.4")
152+
ksp("androidx.room:room-compiler:2.8.4")
153+
implementation("androidx.room:room-ktx:2.8.4")
154154

155155
// Coil
156156
implementation("io.coil-kt:coil-compose:2.7.0")
157157
implementation("io.coil-kt:coil-video:2.7.0")
158158
implementation("io.coil-kt:coil-gif:2.7.0")
159159

160160
// ExoPlayer (Media3)
161-
implementation("androidx.media3:media3-exoplayer:1.8.0")
162-
implementation("androidx.media3:media3-ui:1.8.0")
163-
implementation("androidx.media3:media3-common:1.8.0")
161+
implementation("androidx.media3:media3-exoplayer:1.9.0")
162+
implementation("androidx.media3:media3-ui:1.9.0")
163+
implementation("androidx.media3:media3-common:1.9.0")
164164

165165
// Permissions handling
166166
implementation("com.google.accompanist:accompanist-permissions:0.37.3")
167167

168168
// DataStore for preferences
169-
implementation("androidx.datastore:datastore-preferences:1.1.7")
169+
implementation("androidx.datastore:datastore-preferences:1.2.0")
170170

171171
// DocumentFile for folder/file operations
172172
implementation("androidx.documentfile:documentfile:1.1.0")
@@ -180,5 +180,5 @@ dependencies {
180180
androidTestImplementation("androidx.test.espresso:espresso-core:3.7.0")
181181
androidTestImplementation("androidx.compose.ui:ui-test-junit4")
182182
debugImplementation("androidx.compose.ui:ui-tooling")
183-
debugImplementation("androidx.compose.ui:ui-test-manifest:1.9.1")
183+
debugImplementation("androidx.compose.ui:ui-test-manifest:1.10.1")
184184
}

app/src/main/java/com/cleansweep/ui/screens/settings/SettingsViewModel.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,11 @@ class SettingsViewModel @Inject constructor(
109109
private val _uiState = MutableStateFlow(SettingsUiState())
110110
val uiState: StateFlow<SettingsUiState> = _uiState.asStateFlow()
111111

112-
val debouncedSearchQuery: StateFlow<String>
113-
get() = _uiState
114-
.map { it.searchQuery }
115-
.debounce(200L)
116-
.distinctUntilChanged()
117-
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), "")
112+
val debouncedSearchQuery: StateFlow<String> = _uiState
113+
.map { it.searchQuery }
114+
.debounce(200L)
115+
.distinctUntilChanged()
116+
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), "")
118117

119118
val displayedUnindexedFiles: StateFlow<List<String>> = uiState.map { state ->
120119
if (state.showHiddenUnindexedFiles) {

0 commit comments

Comments
 (0)