@@ -20,6 +20,7 @@ import androidx.appcompat.content.res.AppCompatResources
2020import androidx.core.content.ContextCompat
2121import androidx.core.view.isEmpty
2222import androidx.core.view.isNotEmpty
23+ import androidx.lifecycle.lifecycleScope
2324import com.google.android.material.bottomsheet.BottomSheetDialog
2425import com.google.android.material.button.MaterialButton
2526import com.google.gson.Gson
@@ -30,6 +31,7 @@ import com.nextcloud.client.di.Injectable
3031import com.nextcloud.client.documentscan.AppScanOptionalFeature
3132import com.nextcloud.utils.BuildHelper.isFlavourGPlay
3233import com.nextcloud.utils.EditorUtils
34+ import com.nextcloud.utils.extensions.isNetworkAndServerAvailableSuspended
3335import com.nextcloud.utils.extensions.isTemplateAvailable
3436import com.nextcloud.utils.extensions.setVisibleIf
3537import com.owncloud.android.MainApp
@@ -44,6 +46,9 @@ import com.owncloud.android.utils.MimeTypeUtil
4446import com.owncloud.android.utils.PermissionUtil
4547import com.owncloud.android.utils.theme.ThemeUtils
4648import com.owncloud.android.utils.theme.ViewThemeUtils
49+ import kotlinx.coroutines.Dispatchers
50+ import kotlinx.coroutines.launch
51+ import kotlinx.coroutines.withContext
4752
4853@Suppress(" LongParameterList" )
4954class OCFileListBottomSheetDialog (
@@ -419,16 +424,20 @@ class OCFileListBottomSheetDialog(
419424 }
420425
421426 private fun filterActionsForOfflineOperations () {
422- fileActivity.connectivityService.isNetworkAndServerAvailable { available: Boolean? ->
423- // root directory doesn't have a remote_id and thus always reports as offlineOperation
424- val isOfflineOperation = file.isOfflineOperation && ! file.isRootDirectory
425- if (available != true || isOfflineOperation) {
426- binding.run {
427- menuCreateRichWorkspace.visibility = View .GONE
428- creatorsOverviewContainer.visibility = View .GONE
429- menuEncryptedMkdir.visibility = View .GONE
430- }
427+ lifecycleScope.launch {
428+ val available = fileActivity.connectivityService.isNetworkAndServerAvailableSuspended()
429+ if (available && (! file.isOfflineOperation || file.isRootDirectory)) {
430+ return @launch
431431 }
432+ hideCreationOptions()
433+ }
434+ }
435+
436+ private suspend fun hideCreationOptions () = withContext(Dispatchers .Main ) {
437+ binding.run {
438+ menuCreateRichWorkspace.visibility = View .GONE
439+ creatorsOverviewContainer.visibility = View .GONE
440+ menuEncryptedMkdir.visibility = View .GONE
432441 }
433442 }
434443
0 commit comments