Skip to content

Commit 5ffef99

Browse files
committed
improve media files retrieval
1 parent 7490742 commit 5ffef99

File tree

9 files changed

+229
-208
lines changed

9 files changed

+229
-208
lines changed

app/src/main/java/com/raival/compose/file/explorer/screen/main/tab/files/holder/VirtualFileHolder.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import com.raival.compose.file.explorer.R
55
import com.raival.compose.file.explorer.common.emptyString
66
import com.raival.compose.file.explorer.screen.main.tab.files.misc.ContentCount
77
import com.raival.compose.file.explorer.screen.main.tab.files.misc.FileListCategory
8-
import com.raival.compose.file.explorer.screen.main.tab.files.misc.sortNewerFirst
98
import com.raival.compose.file.explorer.screen.main.tab.files.provider.StorageProvider.getArchiveFiles
109
import com.raival.compose.file.explorer.screen.main.tab.files.provider.StorageProvider.getAudioFiles
1110
import com.raival.compose.file.explorer.screen.main.tab.files.provider.StorageProvider.getBookmarks
@@ -59,7 +58,6 @@ class VirtualFileHolder(val type: Int) : ContentHolder() {
5958

6059
if (type == RECENT && sortingPrefs == globalClass.preferencesManager.getDefaultSortingPrefs()) {
6160
return listContent().apply {
62-
sortWith(sortNewerFirst)
6361
if (!globalClass.preferencesManager.showHiddenFiles) {
6462
removeIf { it.isHidden() }
6563
}

app/src/main/java/com/raival/compose/file/explorer/screen/main/tab/files/provider/StorageProvider.kt

Lines changed: 156 additions & 162 deletions
Large diffs are not rendered by default.

app/src/main/java/com/raival/compose/file/explorer/screen/main/tab/files/ui/FilesList.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,7 @@ private fun FileDetails(
577577
fontSize: Int,
578578
isHighlighted: Boolean
579579
) {
580+
val scope = rememberCoroutineScope()
580581
Isolate {
581582
var details by remember(
582583
key1 = currentItemPath,
@@ -587,9 +588,11 @@ private fun FileDetails(
587588
key1 = currentItemPath,
588589
key2 = item.lastModified
589590
) {
590-
if (details.isEmpty()) {
591-
val det = item.getDetails()
592-
withContext(Dispatchers.Main) { details = det }
591+
scope.launch(Dispatchers.IO) {
592+
if (details.isEmpty()) {
593+
val det = item.getDetails()
594+
details = det
595+
}
593596
}
594597
}
595598

app/src/main/java/com/raival/compose/file/explorer/screen/main/tab/files/ui/dialog/BookmarksDialog.kt

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import com.raival.compose.file.explorer.common.ui.Space
4545
import com.raival.compose.file.explorer.screen.main.tab.files.FilesTab
4646
import com.raival.compose.file.explorer.screen.main.tab.files.holder.LocalFileHolder
4747
import com.raival.compose.file.explorer.screen.main.tab.files.ui.FileItemRow
48+
import kotlinx.coroutines.launch
4849
import java.io.File
4950

5051
@OptIn(ExperimentalMaterialApi::class, ExperimentalFoundationApi::class)
@@ -61,13 +62,16 @@ fun BookmarksDialog(
6162
}
6263

6364
LaunchedEffect(Unit) {
64-
val originalList = globalClass.preferencesManager.bookmarks
65-
bookmarks.addAll(
66-
originalList.map { LocalFileHolder(File(it)) }.filter { it.isValid() }
67-
)
65+
tab.scope.launch {
66+
val originalList = globalClass.preferencesManager.bookmarks
67+
bookmarks.addAll(
68+
originalList.map { LocalFileHolder(File(it)) }.filter { it.isValid() }
69+
)
6870

69-
if (bookmarks.size isNot originalList.size) {
70-
globalClass.preferencesManager.bookmarks = bookmarks.map { it.uniquePath }.toSet()
71+
if (bookmarks.size isNot originalList.size) {
72+
globalClass.preferencesManager.bookmarks =
73+
bookmarks.map { it.uniquePath }.toSet()
74+
}
7175
}
7276
}
7377

app/src/main/java/com/raival/compose/file/explorer/screen/main/tab/home/ui/HomeLayoutSettingsScreen.kt

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import androidx.compose.runtime.DisposableEffect
4242
import androidx.compose.runtime.LaunchedEffect
4343
import androidx.compose.runtime.mutableStateListOf
4444
import androidx.compose.runtime.remember
45+
import androidx.compose.runtime.rememberCoroutineScope
4546
import androidx.compose.ui.Alignment
4647
import androidx.compose.ui.Modifier
4748
import androidx.compose.ui.draw.clip
@@ -62,6 +63,8 @@ import com.raival.compose.file.explorer.screen.main.tab.home.data.HomeLayout
6263
import com.raival.compose.file.explorer.screen.main.tab.home.data.HomeSectionConfig
6364
import com.raival.compose.file.explorer.screen.main.tab.home.data.HomeSectionType
6465
import com.raival.compose.file.explorer.screen.main.tab.home.data.getDefaultHomeLayout
66+
import kotlinx.coroutines.Dispatchers
67+
import kotlinx.coroutines.launch
6568
import sh.calvin.reorderable.ReorderableCollectionItemScope
6669
import sh.calvin.reorderable.ReorderableItem
6770
import sh.calvin.reorderable.rememberReorderableLazyListState
@@ -91,6 +94,7 @@ fun HomeLayoutSettingsScreen(
9194
usePlatformDefaultWidth = false
9295
)
9396
) {
97+
val scope = rememberCoroutineScope()
9498
val color = MaterialTheme.colorScheme.surfaceContainerHigh
9599
val systemUiController = rememberSystemUiController()
96100
DisposableEffect(systemUiController, useDarkIcons) {
@@ -99,17 +103,19 @@ fun HomeLayoutSettingsScreen(
99103
}
100104

101105
LaunchedEffect(Unit) {
102-
val config = try {
103-
Gson().fromJson(
104-
globalClass.preferencesManager.homeTabLayout,
105-
HomeLayout::class.java
106-
)
107-
} catch (e: Exception) {
108-
logger.logError(e)
109-
getDefaultHomeLayout()
110-
}.getSections().sortedBy { it.order }
106+
scope.launch(Dispatchers.IO) {
107+
val config = try {
108+
Gson().fromJson(
109+
globalClass.preferencesManager.homeTabLayout,
110+
HomeLayout::class.java
111+
)
112+
} catch (e: Exception) {
113+
logger.logError(e)
114+
getDefaultHomeLayout()
115+
}.getSections().sortedBy { it.order }
111116

112-
sections.addAll(config)
117+
sections.addAll(config)
118+
}
113119
}
114120

115121
Scaffold(

app/src/main/java/com/raival/compose/file/explorer/screen/main/tab/home/ui/HomeTabContentView.kt

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ import com.raival.compose.file.explorer.screen.main.tab.home.data.HomeSectionTyp
7979
import com.raival.compose.file.explorer.screen.main.tab.home.data.getDefaultHomeLayout
8080
import com.raival.compose.file.explorer.screen.main.ui.SimpleNewTabViewItem
8181
import com.raival.compose.file.explorer.screen.main.ui.StorageDeviceView
82+
import kotlinx.coroutines.Dispatchers
83+
import kotlinx.coroutines.async
8284
import kotlinx.coroutines.launch
8385

8486
@OptIn(ExperimentalFoundationApi::class)
@@ -89,19 +91,27 @@ fun ColumnScope.HomeTabContentView(tab: HomeTab) {
8991
val enabledSections = remember { mutableStateListOf<HomeSectionConfig>() }
9092

9193
LaunchedEffect(tab.id) {
92-
tab.fetchRecentFiles()
93-
tab.getPinnedFiles()
94-
val config = try {
95-
Gson().fromJson(
96-
globalClass.preferencesManager.homeTabLayout,
97-
HomeLayout::class.java
98-
)
99-
} catch (e: Exception) {
100-
logger.logError(e)
101-
getDefaultHomeLayout()
102-
}.getSections().filter { it.isEnabled }.sortedBy { it.order }
94+
scope.launch(Dispatchers.IO) {
95+
async {
96+
tab.fetchRecentFiles()
97+
}
98+
async {
99+
tab.getPinnedFiles()
100+
}
101+
async {
102+
val config = try {
103+
Gson().fromJson(
104+
globalClass.preferencesManager.homeTabLayout,
105+
HomeLayout::class.java
106+
)
107+
} catch (e: Exception) {
108+
logger.logError(e)
109+
getDefaultHomeLayout()
110+
}.getSections().filter { it.isEnabled }.sortedBy { it.order }
103111

104-
enabledSections.addAll(config)
112+
enabledSections.addAll(config)
113+
}
114+
}
105115
}
106116

107117
if (tab.showCustomizeHomeTabDialog) {

app/src/main/java/com/raival/compose/file/explorer/screen/preferences/PreferencesManager.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ class PreferencesManager {
131131

132132
var removeHiddenPathsFromRecentFiles by prefMutableState(
133133
keyName = "removeHiddenPathsFromRecentFiles",
134-
defaultValue = true,
134+
defaultValue = false,
135135
getPreferencesKey = { booleanPreferencesKey(it) }
136136
)
137137

app/src/main/java/com/raival/compose/file/explorer/screen/preferences/ui/RecentFilesContainer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ fun RecentFilesContainer() {
243243
supportingText = stringResource(R.string.scan_hidden_files_and_folders),
244244
icon = Icons.AutoMirrored.Rounded.ManageSearch,
245245
switchState = !prefs.removeHiddenPathsFromRecentFiles,
246-
onSwitchChange = { prefs.useBuiltInViewer = !it }
246+
onSwitchChange = { prefs.removeHiddenPathsFromRecentFiles = !it }
247247
)
248248

249249
HorizontalDivider(

app/src/main/java/com/raival/compose/file/explorer/screen/viewer/pdf/ui/PdfViewerContent.kt

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import androidx.compose.runtime.getValue
2020
import androidx.compose.runtime.mutableStateListOf
2121
import androidx.compose.runtime.mutableStateOf
2222
import androidx.compose.runtime.remember
23+
import androidx.compose.runtime.rememberCoroutineScope
2324
import androidx.compose.runtime.setValue
2425
import androidx.compose.ui.Alignment
2526
import androidx.compose.ui.Modifier
@@ -29,6 +30,8 @@ import com.raival.compose.file.explorer.R
2930
import com.raival.compose.file.explorer.common.isNot
3031
import com.raival.compose.file.explorer.screen.viewer.pdf.PdfViewerInstance
3132
import com.raival.compose.file.explorer.screen.viewer.pdf.misc.PdfPageHolder
33+
import kotlinx.coroutines.Dispatchers.IO
34+
import kotlinx.coroutines.launch
3235
import my.nanihadesuka.compose.InternalLazyColumnScrollbar
3336
import my.nanihadesuka.compose.ScrollbarLayoutSide
3437
import my.nanihadesuka.compose.ScrollbarSettings
@@ -58,6 +61,7 @@ fun PdfViewerContent(instance: PdfViewerInstance, onBackPress: () -> Unit) {
5861
listState.firstVisibleItemIndex == 0
5962
}
6063
}
64+
val scope = rememberCoroutineScope()
6165

6266
val visiblePageNumbers by remember {
6367
derivedStateOf {
@@ -79,17 +83,19 @@ fun PdfViewerContent(instance: PdfViewerInstance, onBackPress: () -> Unit) {
7983
}
8084

8185
LaunchedEffect(Unit) {
82-
instance.prepare { success ->
83-
if (success) {
84-
defaultPageSize = Size(
85-
constraints.maxWidth,
86-
instance.defaultPageSize.height * constraints.maxWidth / instance.defaultPageSize.width
87-
)
88-
pdfPages.addAll(instance.pages)
89-
isLoading = false
90-
} else {
91-
errorMessage = globalClass.getString(R.string.failed_to_load_pdf)
92-
isLoading = false
86+
scope.launch(IO) {
87+
instance.prepare { success ->
88+
if (success) {
89+
defaultPageSize = Size(
90+
constraints.maxWidth,
91+
instance.defaultPageSize.height * constraints.maxWidth / instance.defaultPageSize.width
92+
)
93+
pdfPages.addAll(instance.pages)
94+
isLoading = false
95+
} else {
96+
errorMessage = globalClass.getString(R.string.failed_to_load_pdf)
97+
isLoading = false
98+
}
9399
}
94100
}
95101
}

0 commit comments

Comments
 (0)