Skip to content

Commit

Permalink
Merge pull request #1232 from Infomaniak/fix-search-too-many-sorts
Browse files Browse the repository at this point in the history
Remove unsupported sort types
  • Loading branch information
JorisBodin authored Feb 29, 2024
2 parents c35afe1 + 0669456 commit 7b38ee8
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 14 deletions.
2 changes: 1 addition & 1 deletion app/src/main/java/com/infomaniak/drive/data/models/File.kt
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@ open class File(
// EXTENSION("asc", "extension", R.string.sortExtension); // TODO: Awaiting API
}

enum class SortTypeUsage { FILE_LIST, TRASH }
enum class SortTypeUsage { FILE_LIST, TRASH, SEARCH }

@Parcelize
enum class FolderPermission(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ open class FileListFragment : MultiSelectFragment(MATOMO_CATEGORY), SwipeRefresh
protected open var hideBackButtonWhenRoot: Boolean = true
protected open var showPendingFiles = true
protected open var allowCancellation = true
protected open var sortTypeUsage = SortTypeUsage.FILE_LIST
protected open val sortTypeUsage = SortTypeUsage.FILE_LIST

private val noItemsFoldersTitle: Int by lazy {
if (mainViewModel.currentFolder.value?.rights?.canCreateFile == true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import androidx.navigation.navGraphViewModels
import com.infomaniak.drive.R
import com.infomaniak.drive.data.models.File
import com.infomaniak.drive.data.models.File.SortType
import com.infomaniak.drive.data.models.File.SortTypeUsage
import com.infomaniak.drive.data.models.SearchFilter
import com.infomaniak.drive.data.models.SearchFilter.FilterKey
import com.infomaniak.drive.data.models.UiSettings
Expand All @@ -53,6 +54,7 @@ class SearchFragment : FileListFragment() {

override val noItemsIcon = R.drawable.ic_search_grey
override val noItemsTitle = R.string.searchNoFile
override val sortTypeUsage = SortTypeUsage.SEARCH

private lateinit var filtersAdapter: SearchFiltersAdapter
private lateinit var recentSearchesAdapter: RecentSearchesAdapter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,38 +29,41 @@ import com.infomaniak.drive.ui.fileList.SortFilesBottomSheetAdapter.SortFilesVie

class SortFilesBottomSheetAdapter(
private val selectedType: SortType,
private val usage: SortTypeUsage,
usage: SortTypeUsage,
private val onItemClicked: (sortType: SortType) -> Unit,
) : Adapter<SortFilesViewHolder>() {

private val types by lazy { usage.types() }

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SortFilesViewHolder {
return SortFilesViewHolder(ItemSelectBottomSheetBinding.inflate(LayoutInflater.from(parent.context), parent, false))
}

override fun onBindViewHolder(holder: SortFilesViewHolder, position: Int) = with(holder.binding) {
usage.types()[position].let { sortType ->
types[position].let { sortType ->
itemSelectText.setText(sortType.translation)
itemSelectActiveIcon.isVisible = selectedType == sortType
root.setOnClickListener { onItemClicked(sortType) }
}
}

override fun getItemCount() = usage.types().size
override fun getItemCount() = types.size

private fun SortTypeUsage.types(): Array<SortType> {
private fun SortTypeUsage.types(): List<SortType> {
return when (this) {
SortTypeUsage.FILE_LIST -> SortType.values().fileListTypes()
SortTypeUsage.TRASH -> SortType.values().trashTypes()
SortTypeUsage.FILE_LIST -> SortType.entries.fileListTypes()
SortTypeUsage.TRASH -> SortType.entries.trashTypes()
SortTypeUsage.SEARCH -> searchTypes()
}
}

private fun Array<SortType>.fileListTypes(): Array<SortType> {
return filter { it != SortType.OLDER_TRASHED && it != SortType.RECENT_TRASHED }.toTypedArray()
private fun List<SortType>.fileListTypes(): List<SortType> {
return filter { it != SortType.OLDER_TRASHED && it != SortType.RECENT_TRASHED }
}

private fun Array<SortType>.trashTypes(): Array<SortType> {
return filter { it != SortType.OLDER && it != SortType.RECENT }.toTypedArray()
}
private fun List<SortType>.trashTypes(): List<SortType> = filter { it != SortType.OLDER && it != SortType.RECENT }

private fun searchTypes(): List<SortType> = listOf(SortType.OLDER, SortType.RECENT)

class SortFilesViewHolder(val binding: ItemSelectBottomSheetBinding) : ViewHolder(binding.root)
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class TrashFragment : FileSubTypeListFragment() {
val trashViewModel: TrashViewModel by navGraphViewModels(R.id.trashFragment)

override var enabledMultiSelectMode: Boolean = true
override var sortTypeUsage = SortTypeUsage.TRASH
override val sortTypeUsage = SortTypeUsage.TRASH

override val noItemsRootIcon = R.drawable.ic_delete
override val noItemsRootTitle = R.string.trashNoFile
Expand Down

0 comments on commit 7b38ee8

Please sign in to comment.