@@ -10,6 +10,7 @@ import androidx.compose.foundation.shape.RoundedCornerShape
1010import androidx.compose.runtime.Composable
1111import androidx.compose.runtime.collectAsState
1212import androidx.compose.runtime.getValue
13+ import androidx.compose.runtime.rememberCoroutineScope
1314import androidx.compose.ui.Modifier
1415import androidx.compose.ui.draw.clip
1516import androidx.compose.ui.platform.LocalContext
@@ -22,14 +23,14 @@ import com.d4rk.android.libs.apptoolkit.core.utils.constants.ui.SizeConstants
2223import com.d4rk.cleaner.R
2324import com.d4rk.cleaner.app.auto.AutoCleanScheduler
2425import com.d4rk.cleaner.core.data.datastore.DataStore
25- import kotlinx.coroutines.CoroutineScope
2626import kotlinx.coroutines.Dispatchers
2727import kotlinx.coroutines.launch
2828import org.koin.compose.koinInject
2929
3030@Composable
3131fun 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