From 87886024cb48e59f772411aa9f3df8bb60bdbe86 Mon Sep 17 00:00:00 2001 From: alperozturk Date: Fri, 12 Dec 2025 13:13:23 +0100 Subject: [PATCH] fix: calculate scan interval network on main thread exception Signed-off-by: alperozturk --- .../ui/activity/SyncedFoldersActivity.kt | 1 + .../android/ui/adapter/SyncedFolderAdapter.kt | 23 +++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt index 96a853af2a40..b26797716930 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt @@ -240,6 +240,7 @@ class SyncedFoldersActivity : val gridWidth = resources.getInteger(R.integer.media_grid_width) val lightVersion = resources.getBoolean(R.bool.syncedFolder_light) adapter = SyncedFolderAdapter( + lifecycleScope, this, clock, gridWidth, diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/SyncedFolderAdapter.kt b/app/src/main/java/com/owncloud/android/ui/adapter/SyncedFolderAdapter.kt index e701d4468daa..9573d7c11476 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/SyncedFolderAdapter.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/SyncedFolderAdapter.kt @@ -17,6 +17,7 @@ import android.widget.PopupMenu import androidx.annotation.VisibleForTesting import androidx.core.content.ContextCompat import androidx.core.view.isVisible +import androidx.lifecycle.LifecycleCoroutineScope import com.afollestad.sectionedrecyclerview.SectionedRecyclerViewAdapter import com.afollestad.sectionedrecyclerview.SectionedViewHolder import com.google.android.material.button.MaterialButton @@ -40,6 +41,9 @@ import com.owncloud.android.datamodel.ThumbnailsCacheManager import com.owncloud.android.datamodel.ThumbnailsCacheManager.AsyncMediaThumbnailDrawable import com.owncloud.android.datamodel.ThumbnailsCacheManager.MediaThumbnailGenerationTask import com.owncloud.android.utils.theme.ViewThemeUtils +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import java.io.File import java.util.Locale import java.util.concurrent.Executor @@ -51,6 +55,7 @@ import java.util.concurrent.TimeUnit */ @Suppress("LongParameterList", "TooManyFunctions") class SyncedFolderAdapter( + private val lifecycleScope: LifecycleCoroutineScope, private val context: Context, private val clock: Clock, private val gridWidth: Int, @@ -313,15 +318,19 @@ class SyncedFolderAdapter( } private fun initNextScanIndicator(holder: HeaderViewHolder, syncedFolder: SyncedFolder) { - val scanIndicatorText = getNextScanIndicatorText(syncedFolder) + lifecycleScope.launch(Dispatchers.IO) { + val scanIndicatorText = getNextScanIndicatorText(syncedFolder) - holder.binding.scanIndicatorText.setVisibleIf(syncedFolder.isEnabled && (scanIndicatorText != null)) + withContext(Dispatchers.Main) { + holder.binding.scanIndicatorText.setVisibleIf(syncedFolder.isEnabled && (scanIndicatorText != null)) - if (holder.binding.scanIndicatorText.isVisible) { - setMaxWidthOfScanIndicatorText(holder) - holder.binding.scanIndicatorText.text = scanIndicatorText - } else { - setBottomMarginOfTitle(holder) + if (holder.binding.scanIndicatorText.isVisible) { + setMaxWidthOfScanIndicatorText(holder) + holder.binding.scanIndicatorText.text = scanIndicatorText + } else { + setBottomMarginOfTitle(holder) + } + } } }