From 554ca389d80dc457614c493bb5207dc603d01566 Mon Sep 17 00:00:00 2001 From: joragua Date: Tue, 1 Oct 2024 13:05:25 +0200 Subject: [PATCH] feat: added snackbar when (un)setting av.offline --- .../previews/PreviewTextViewModel.kt | 26 +++++++++++++++++++ .../android/ui/preview/PreviewTextFragment.kt | 9 ++++--- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/owncloudApp/src/main/java/com/owncloud/android/presentation/previews/PreviewTextViewModel.kt b/owncloudApp/src/main/java/com/owncloud/android/presentation/previews/PreviewTextViewModel.kt index bd8f6a8f85f..6fb05496a8d 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/presentation/previews/PreviewTextViewModel.kt +++ b/owncloudApp/src/main/java/com/owncloud/android/presentation/previews/PreviewTextViewModel.kt @@ -26,23 +26,49 @@ import androidx.lifecycle.viewModelScope import com.owncloud.android.R import com.owncloud.android.domain.files.model.FileMenuOption import com.owncloud.android.domain.files.model.OCFile +import com.owncloud.android.domain.files.model.OCFileWithSyncInfo +import com.owncloud.android.domain.files.usecases.GetFileWithSyncInfoByIdUseCase import com.owncloud.android.providers.ContextProvider import com.owncloud.android.providers.CoroutinesDispatcherProvider import com.owncloud.android.usecases.files.FilterFileMenuOptionsUseCase import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch +import java.util.UUID class PreviewTextViewModel( private val filterFileMenuOptionsUseCase: FilterFileMenuOptionsUseCase, private val contextProvider: ContextProvider, private val coroutinesDispatcherProvider: CoroutinesDispatcherProvider, + getFileWithSyncInfoByIdUseCase: GetFileWithSyncInfoByIdUseCase, + ocFile: OCFile ) : ViewModel() { private val _menuOptions: MutableStateFlow> = MutableStateFlow(emptyList()) val menuOptions: StateFlow> = _menuOptions + private val ocFileWithSyncInfo = OCFileWithSyncInfo( + file = ocFile, + uploadWorkerUuid = UUID.randomUUID(), + downloadWorkerUuid = UUID.randomUUID(), + isSynchronizing = true, + space = null + ) + + val currentFile: StateFlow = + getFileWithSyncInfoByIdUseCase(GetFileWithSyncInfoByIdUseCase.Params(ocFile.id!!)) + .stateIn( + viewModelScope, + started = SharingStarted.WhileSubscribed(5_000), + initialValue = ocFileWithSyncInfo + ) + + + fun getCurrentFile(): OCFileWithSyncInfo? = currentFile.value + fun filterMenuOptions(file: OCFile, accountName: String) { val shareViaLinkAllowed = contextProvider.getBoolean(R.bool.share_via_link_feature) val shareWithUsersAllowed = contextProvider.getBoolean(R.bool.share_with_users_feature) diff --git a/owncloudApp/src/main/java/com/owncloud/android/ui/preview/PreviewTextFragment.kt b/owncloudApp/src/main/java/com/owncloud/android/ui/preview/PreviewTextFragment.kt index f6b912b3e7c..330aa35184f 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/ui/preview/PreviewTextFragment.kt +++ b/owncloudApp/src/main/java/com/owncloud/android/ui/preview/PreviewTextFragment.kt @@ -37,6 +37,7 @@ import android.view.ViewGroup import android.widget.RelativeLayout import android.widget.TextView import androidx.viewpager2.widget.ViewPager2 +import com.google.android.material.snackbar.Snackbar import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator import com.owncloud.android.R @@ -157,6 +158,7 @@ class PreviewTextFragment : FileFragment() { val fileToSetAsAvailableOffline = ArrayList() fileToSetAsAvailableOffline.add(file) fileOperationsViewModel.performOperation(FileOperation.SetFilesAsAvailableOffline(fileToSetAsAvailableOffline)) + Snackbar.make(requireView(), R.string.sync_file_nothing_to_do_msg, Snackbar.LENGTH_LONG).show() true } @@ -164,6 +166,7 @@ class PreviewTextFragment : FileFragment() { val fileToUnsetAsAvailableOffline = ArrayList() fileToUnsetAsAvailableOffline.add(file) fileOperationsViewModel.performOperation(FileOperation.UnsetFilesAsAvailableOffline(fileToUnsetAsAvailableOffline)) + Snackbar.make(requireView(), R.string.sync_file_nothing_to_do_msg, Snackbar.LENGTH_LONG).show() true } @@ -211,12 +214,12 @@ class PreviewTextFragment : FileFragment() { override fun onPrepareOptionsMenu(menu: Menu) { mContainerActivity.storageManager?.let { - val safeFile = file + val safeFile = previewTextViewModel.getCurrentFile() ?: return val accountName = it.account.name - previewTextViewModel.filterMenuOptions(safeFile, accountName) + previewTextViewModel.filterMenuOptions(safeFile.file, accountName) collectLatestLifecycleFlow(previewTextViewModel.menuOptions) { menuOptions -> - val hasWritePermission = safeFile.hasWritePermission + val hasWritePermission = safeFile.file.hasWritePermission menu.filterMenuOptions(menuOptions, hasWritePermission) } }