From a32725fac5d60092cf89510ee4ea1118243b9fa0 Mon Sep 17 00:00:00 2001 From: mdrlzy Date: Mon, 23 Oct 2023 13:57:47 +0600 Subject: [PATCH] Folders screen: show hint only if folders are loaded --- .../screen/folders/FoldersFragment.kt | 24 +++++++++---------- .../screen/folders/FoldersViewModel.kt | 9 ++++++- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/dev/arkbuilders/navigator/presentation/screen/folders/FoldersFragment.kt b/app/src/main/java/dev/arkbuilders/navigator/presentation/screen/folders/FoldersFragment.kt index 031f3ad2..344030d4 100644 --- a/app/src/main/java/dev/arkbuilders/navigator/presentation/screen/folders/FoldersFragment.kt +++ b/app/src/main/java/dev/arkbuilders/navigator/presentation/screen/folders/FoldersFragment.kt @@ -14,6 +14,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.OnScrollListener import by.kirich1409.viewbindingdelegate.viewBinding +import dev.arkbuilders.arkfilepicker.folders.FoldersRepo.Companion.DELETE_FOLDER_KEY +import dev.arkbuilders.arkfilepicker.folders.FoldersRepo.Companion.FAVORITE_KEY +import dev.arkbuilders.arkfilepicker.folders.FoldersRepo.Companion.FORGET_FAVORITE_KEY +import dev.arkbuilders.arkfilepicker.folders.FoldersRepo.Companion.FORGET_ROOT_KEY +import dev.arkbuilders.arkfilepicker.folders.FoldersRepo.Companion.ROOT_KEY +import dev.arkbuilders.arkfilepicker.folders.RootAndFav +import dev.arkbuilders.arkfilepicker.presentation.folderstree.DeviceNode +import dev.arkbuilders.arkfilepicker.presentation.folderstree.FavoriteNode +import dev.arkbuilders.arkfilepicker.presentation.folderstree.FolderNode +import dev.arkbuilders.arkfilepicker.presentation.folderstree.FolderTreeView +import dev.arkbuilders.arkfilepicker.presentation.folderstree.RootNode import dev.arkbuilders.navigator.R import dev.arkbuilders.navigator.data.utils.LogTags.FOLDERS_SCREEN import dev.arkbuilders.navigator.databinding.FragmentFoldersBinding @@ -31,17 +42,6 @@ import dev.arkbuilders.navigator.presentation.utils.toast import dev.arkbuilders.navigator.presentation.utils.toastFailedPaths import dev.arkbuilders.navigator.presentation.view.StackedToasts import org.orbitmvi.orbit.viewmodel.observe -import dev.arkbuilders.arkfilepicker.folders.FoldersRepo.Companion.DELETE_FOLDER_KEY -import dev.arkbuilders.arkfilepicker.folders.FoldersRepo.Companion.FAVORITE_KEY -import dev.arkbuilders.arkfilepicker.folders.FoldersRepo.Companion.FORGET_FAVORITE_KEY -import dev.arkbuilders.arkfilepicker.folders.FoldersRepo.Companion.FORGET_ROOT_KEY -import dev.arkbuilders.arkfilepicker.folders.FoldersRepo.Companion.ROOT_KEY -import dev.arkbuilders.arkfilepicker.folders.RootAndFav -import dev.arkbuilders.arkfilepicker.presentation.folderstree.DeviceNode -import dev.arkbuilders.arkfilepicker.presentation.folderstree.FavoriteNode -import dev.arkbuilders.arkfilepicker.presentation.folderstree.FolderNode -import dev.arkbuilders.arkfilepicker.presentation.folderstree.FolderTreeView -import dev.arkbuilders.arkfilepicker.presentation.folderstree.RootNode import java.nio.file.Path import javax.inject.Inject import kotlin.io.path.Path @@ -123,7 +123,7 @@ class FoldersFragment : Fragment(R.layout.fragment_folders) { } private fun render(state: FoldersState) = with(state) { - binding.noFolderHint.isVisible = folders.isEmpty() + binding.noFolderHint.isVisible = initialized && folders.isEmpty() foldersTree?.set(devices, folders) setProgressVisibility( progressWithText.enabled, diff --git a/app/src/main/java/dev/arkbuilders/navigator/presentation/screen/folders/FoldersViewModel.kt b/app/src/main/java/dev/arkbuilders/navigator/presentation/screen/folders/FoldersViewModel.kt index 74db8576..a6cec28c 100644 --- a/app/src/main/java/dev/arkbuilders/navigator/presentation/screen/folders/FoldersViewModel.kt +++ b/app/src/main/java/dev/arkbuilders/navigator/presentation/screen/folders/FoldersViewModel.kt @@ -27,13 +27,19 @@ import java.nio.file.Path class ProgressWithText(val enabled: Boolean, val text: String = "") data class FoldersState private constructor( + val initialized: Boolean, val devices: List, val folders: Map>, val progressWithText: ProgressWithText ) { companion object { fun initial() = - FoldersState(emptyList(), emptyMap(), ProgressWithText(false)) + FoldersState( + initialized = false, + devices = emptyList(), + folders = emptyMap(), + progressWithText = ProgressWithText(false) + ) } } @@ -86,6 +92,7 @@ class FoldersViewModel( reduce { state.copy( + initialized = true, devices = devices, folders = folders.succeeded, progressWithText = ProgressWithText(false)