Skip to content

Commit f2d17a6

Browse files
Use shared coroutine scope in cleaning settings
1 parent f12f251 commit f2d17a6

File tree

1 file changed

+20
-19
lines changed

1 file changed

+20
-19
lines changed

app/src/main/kotlin/com/d4rk/cleaner/app/settings/cleaning/ui/CleaningSettingsList.kt

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import androidx.compose.foundation.shape.RoundedCornerShape
1010
import androidx.compose.runtime.Composable
1111
import androidx.compose.runtime.collectAsState
1212
import androidx.compose.runtime.getValue
13+
import androidx.compose.runtime.rememberCoroutineScope
1314
import androidx.compose.ui.Modifier
1415
import androidx.compose.ui.draw.clip
1516
import androidx.compose.ui.platform.LocalContext
@@ -22,14 +23,14 @@ import com.d4rk.android.libs.apptoolkit.core.utils.constants.ui.SizeConstants
2223
import com.d4rk.cleaner.R
2324
import com.d4rk.cleaner.app.auto.AutoCleanScheduler
2425
import com.d4rk.cleaner.core.data.datastore.DataStore
25-
import kotlinx.coroutines.CoroutineScope
2626
import kotlinx.coroutines.Dispatchers
2727
import kotlinx.coroutines.launch
2828
import org.koin.compose.koinInject
2929

3030
@Composable
3131
fun CleaningSettingsList(paddingValues: PaddingValues) {
3232
val context = LocalContext.current
33+
val scope = rememberCoroutineScope()
3334
val dataStore: DataStore = koinInject()
3435
val genericFilter: Boolean by dataStore.genericFilter.collectAsState(initial = true)
3536
val deleteEmptyFolders: Boolean by dataStore.deleteEmptyFolders.collectAsState(initial = false)
@@ -69,7 +70,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
6970
summary = stringResource(id = R.string.summary_preference_settings_generic_filter),
7071
checked = genericFilter,
7172
) { isChecked ->
72-
CoroutineScope(Dispatchers.IO).launch {
73+
scope.launch(Dispatchers.IO) {
7374
dataStore.saveGenericFilter(isChecked)
7475
}
7576
}
@@ -80,7 +81,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
8081
title = stringResource(id = R.string.delete_empty_folders),
8182
checked = deleteEmptyFolders,
8283
) { isChecked ->
83-
CoroutineScope(Dispatchers.IO).launch {
84+
scope.launch(Dispatchers.IO) {
8485
dataStore.saveDeleteEmptyFolders(isChecked)
8586
}
8687
}
@@ -92,7 +93,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
9293
summary = stringResource(id = R.string.summary_preference_settings_archive_filter),
9394
checked = deleteArchives,
9495
) { isChecked ->
95-
CoroutineScope(Dispatchers.IO).launch {
96+
scope.launch(Dispatchers.IO) {
9697
dataStore.saveDeleteArchives(isChecked)
9798
}
9899
}
@@ -104,7 +105,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
104105
summary = stringResource(id = R.string.summary_preference_settings_delete_corpse_files),
105106
checked = deleteCorpseFiles,
106107
) { isChecked ->
107-
CoroutineScope(Dispatchers.IO).launch {
108+
scope.launch(Dispatchers.IO) {
108109
dataStore.saveDeleteCorpseFiles(isChecked)
109110
}
110111
}
@@ -116,7 +117,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
116117
summary = stringResource(id = R.string.summary_preference_settings_delete_apk_files),
117118
checked = deleteApkFiles,
118119
) { isChecked ->
119-
CoroutineScope(Dispatchers.IO).launch {
120+
scope.launch(Dispatchers.IO) {
120121
dataStore.saveDeleteApkFiles(isChecked)
121122
}
122123
}
@@ -128,7 +129,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
128129
summary = stringResource(id = R.string.summary_preference_settings_delete_windows_files),
129130
checked = windowsExtensions,
130131
) { isChecked ->
131-
CoroutineScope(Dispatchers.IO).launch {
132+
scope.launch(Dispatchers.IO) {
132133
dataStore.saveDeleteWindowsFiles(isChecked)
133134
}
134135
}
@@ -140,7 +141,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
140141
summary = stringResource(id = R.string.summary_preference_settings_delete_office_files),
141142
checked = officeExtensions,
142143
) { isChecked ->
143-
CoroutineScope(Dispatchers.IO).launch {
144+
scope.launch(Dispatchers.IO) {
144145
dataStore.saveDeleteOfficeFiles(isChecked)
145146
}
146147
}
@@ -152,7 +153,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
152153
summary = stringResource(id = R.string.summary_preference_settings_delete_font_files),
153154
checked = fontExtensions,
154155
) { isChecked ->
155-
CoroutineScope(Dispatchers.IO).launch {
156+
scope.launch(Dispatchers.IO) {
156157
dataStore.saveDeleteFontFiles(isChecked)
157158
}
158159
}
@@ -164,7 +165,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
164165
summary = stringResource(id = R.string.summary_preference_settings_delete_other_files),
165166
checked = otherExtensions,
166167
) { isChecked ->
167-
CoroutineScope(Dispatchers.IO).launch {
168+
scope.launch(Dispatchers.IO) {
168169
dataStore.saveDeleteOtherFiles(isChecked)
169170
}
170171
}
@@ -185,7 +186,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
185186
summary = stringResource(id = R.string.summary_preference_settings_delete_audio),
186187
checked = deleteAudioFiles,
187188
) { isChecked ->
188-
CoroutineScope(Dispatchers.IO).launch {
189+
scope.launch(Dispatchers.IO) {
189190
dataStore.saveDeleteAudioFiles(isChecked)
190191
}
191192
}
@@ -197,7 +198,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
197198
summary = stringResource(id = R.string.summary_preference_settings_delete_video),
198199
checked = deleteVideoFiles,
199200
) { isChecked ->
200-
CoroutineScope(Dispatchers.IO).launch {
201+
scope.launch(Dispatchers.IO) {
201202
dataStore.saveDeleteVideoFiles(isChecked)
202203
}
203204
}
@@ -209,7 +210,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
209210
summary = stringResource(id = R.string.summary_preference_settings_delete_images),
210211
checked = deleteImageFiles,
211212
) { isChecked ->
212-
CoroutineScope(Dispatchers.IO).launch {
213+
scope.launch(Dispatchers.IO) {
213214
dataStore.saveDeleteImageFiles(isChecked)
214215
}
215216
}
@@ -221,7 +222,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
221222
summary = stringResource(id = R.string.summary_preference_settings_delete_invalid_media),
222223
checked = deleteInvalidMedia,
223224
) { isChecked ->
224-
CoroutineScope(Dispatchers.IO).launch {
225+
scope.launch(Dispatchers.IO) {
225226
dataStore.saveDeleteInvalidMedia(isChecked)
226227
}
227228
}
@@ -242,7 +243,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
242243
summary = stringResource(id = R.string.summary_preference_settings_show_hidden_files),
243244
checked = showHiddenFiles,
244245
) { isChecked ->
245-
CoroutineScope(Dispatchers.IO).launch {
246+
scope.launch(Dispatchers.IO) {
246247
dataStore.saveShowHiddenFiles(isChecked)
247248
}
248249
}
@@ -254,7 +255,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
254255
summary = stringResource(id = R.string.summary_preference_settings_delete_duplicates),
255256
checked = deleteDuplicateFiles,
256257
) { isChecked ->
257-
CoroutineScope(Dispatchers.IO).launch {
258+
scope.launch(Dispatchers.IO) {
258259
dataStore.saveDeleteDuplicateFiles(isChecked)
259260
}
260261
}
@@ -265,7 +266,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
265266
title = stringResource(id = R.string.preference_streak_reminder),
266267
checked = streakReminderEnabled,
267268
) { isChecked ->
268-
CoroutineScope(Dispatchers.IO).launch {
269+
scope.launch(Dispatchers.IO) {
269270
dataStore.saveStreakReminderEnabled(isChecked)
270271
}
271272
}
@@ -276,7 +277,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
276277
title = stringResource(id = R.string.preference_show_streak_card),
277278
checked = false,
278279
) { isChecked ->
279-
CoroutineScope(Dispatchers.IO).launch {
280+
scope.launch(Dispatchers.IO) {
280281
dataStore.saveShowStreakCard(isChecked)
281282
if (isChecked) dataStore.saveStreakHideUntil(0L)
282283
}
@@ -305,7 +306,7 @@ fun CleaningSettingsList(paddingValues: PaddingValues) {
305306
title = stringResource(id = R.string.enable_automatic_cleaning),
306307
checked = autoCleanEnabled,
307308
) { isChecked ->
308-
CoroutineScope(Dispatchers.IO).launch {
309+
scope.launch(Dispatchers.IO) {
309310
dataStore.saveAutoCleanEnabled(isChecked)
310311
if (isChecked) AutoCleanScheduler.schedule(
311312
context,

0 commit comments

Comments
 (0)