Skip to content

Commit

Permalink
feat: added snackbar when (un)setting av.offline
Browse files Browse the repository at this point in the history
  • Loading branch information
joragua committed Oct 1, 2024
1 parent aca79e8 commit 554ca38
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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<List<FileMenuOption>> = MutableStateFlow(emptyList())
val menuOptions: StateFlow<List<FileMenuOption>> = _menuOptions

private val ocFileWithSyncInfo = OCFileWithSyncInfo(
file = ocFile,
uploadWorkerUuid = UUID.randomUUID(),
downloadWorkerUuid = UUID.randomUUID(),
isSynchronizing = true,
space = null
)

val currentFile: StateFlow<OCFileWithSyncInfo?> =
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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -157,13 +158,15 @@ class PreviewTextFragment : FileFragment() {
val fileToSetAsAvailableOffline = ArrayList<OCFile>()
fileToSetAsAvailableOffline.add(file)
fileOperationsViewModel.performOperation(FileOperation.SetFilesAsAvailableOffline(fileToSetAsAvailableOffline))
Snackbar.make(requireView(), R.string.sync_file_nothing_to_do_msg, Snackbar.LENGTH_LONG).show()
true
}

R.id.action_unset_available_offline -> {
val fileToUnsetAsAvailableOffline = ArrayList<OCFile>()
fileToUnsetAsAvailableOffline.add(file)
fileOperationsViewModel.performOperation(FileOperation.UnsetFilesAsAvailableOffline(fileToUnsetAsAvailableOffline))
Snackbar.make(requireView(), R.string.sync_file_nothing_to_do_msg, Snackbar.LENGTH_LONG).show()
true
}

Expand Down Expand Up @@ -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)
}
}
Expand Down

0 comments on commit 554ca38

Please sign in to comment.