Skip to content

Commit fdf1a36

Browse files
committed
fix(unified-search-list-adapter): async initialization
Signed-off-by: alperozturk96 <[email protected]>
1 parent cbd1608 commit fdf1a36

File tree

3 files changed

+49
-49
lines changed

3 files changed

+49
-49
lines changed

app/src/main/java/com/owncloud/android/ui/adapter/UnifiedSearchItemViewHolder.kt

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,29 +9,35 @@ package com.owncloud.android.ui.adapter
99

1010
import android.content.Context
1111
import android.view.View
12+
import androidx.lifecycle.lifecycleScope
1213
import com.afollestad.sectionedrecyclerview.SectionedViewHolder
1314
import com.nextcloud.android.common.ui.theme.utils.ColorRole
14-
import com.nextcloud.common.NextcloudClient
1515
import com.nextcloud.model.SearchResultEntryType
1616
import com.nextcloud.utils.CalendarEventManager
1717
import com.nextcloud.utils.ContactManager
1818
import com.nextcloud.utils.GlideHelper
1919
import com.nextcloud.utils.extensions.getType
20+
import com.nextcloud.utils.extensions.getTypedActivity
2021
import com.owncloud.android.databinding.UnifiedSearchItemBinding
2122
import com.owncloud.android.datamodel.FileDataStorageManager
2223
import com.owncloud.android.lib.common.SearchResultEntry
24+
import com.owncloud.android.ui.activity.FileActivity
25+
import com.owncloud.android.ui.fragment.UnifiedSearchFragment
2326
import com.owncloud.android.ui.interfaces.UnifiedSearchListInterface
2427
import com.owncloud.android.utils.theme.ViewThemeUtils
28+
import kotlinx.coroutines.Dispatchers
29+
import kotlinx.coroutines.launch
30+
import kotlinx.coroutines.withContext
2531

2632
@Suppress("LongParameterList")
2733
class UnifiedSearchItemViewHolder(
34+
private val fragment: UnifiedSearchFragment,
2835
private val supportsOpeningCalendarContactsLocally: Boolean,
2936
val binding: UnifiedSearchItemBinding,
3037
private val storageManager: FileDataStorageManager,
3138
private val listInterface: UnifiedSearchListInterface,
3239
private val filesAction: FilesAction,
3340
val context: Context,
34-
private val nextcloudClient: NextcloudClient,
3541
private val viewThemeUtils: ViewThemeUtils
3642
) : SectionedViewHolder(binding.root) {
3743

@@ -55,14 +61,21 @@ class UnifiedSearchItemViewHolder(
5561
val entryType = entry.getType()
5662
viewThemeUtils.platform.colorImageView(binding.thumbnail, ColorRole.PRIMARY)
5763

58-
GlideHelper.loadIntoImageView(
59-
context,
60-
nextcloudClient,
61-
entry.thumbnailUrl,
62-
binding.thumbnail,
63-
entryType.iconId(),
64-
circleCrop = entry.rounded
65-
)
64+
fragment.lifecycleScope.launch(Dispatchers.IO) {
65+
val client =
66+
fragment.getTypedActivity(FileActivity::class.java)?.clientRepository?.getNextcloudClient() ?: return@launch
67+
68+
withContext(Dispatchers.Main) {
69+
GlideHelper.loadIntoImageView(
70+
context,
71+
client,
72+
entry.thumbnailUrl,
73+
binding.thumbnail,
74+
entryType.iconId(),
75+
circleCrop = entry.rounded
76+
)
77+
}
78+
}
6679

6780
if (entry.isFile) {
6881
binding.more.visibility = View.VISIBLE

app/src/main/java/com/owncloud/android/ui/adapter/UnifiedSearchListAdapter.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import com.afollestad.sectionedrecyclerview.SectionedRecyclerViewAdapter
1717
import com.afollestad.sectionedrecyclerview.SectionedViewHolder
1818
import com.nextcloud.client.account.User
1919
import com.nextcloud.client.preferences.AppPreferences
20-
import com.nextcloud.common.NextcloudClient
2120
import com.owncloud.android.R
2221
import com.owncloud.android.databinding.UnifiedSearchCurrentDirectoryItemBinding
2322
import com.owncloud.android.databinding.UnifiedSearchEmptyBinding
@@ -28,6 +27,7 @@ import com.owncloud.android.datamodel.FileDataStorageManager
2827
import com.owncloud.android.datamodel.OCFile
2928
import com.owncloud.android.datamodel.SyncedFolderProvider
3029
import com.owncloud.android.datamodel.ThumbnailsCacheManager
30+
import com.owncloud.android.ui.fragment.UnifiedSearchFragment
3131
import com.owncloud.android.ui.interfaces.UnifiedSearchCurrentDirItemAction
3232
import com.owncloud.android.ui.interfaces.UnifiedSearchListInterface
3333
import com.owncloud.android.ui.unifiedsearch.UnifiedSearchSection
@@ -39,6 +39,7 @@ import com.owncloud.android.utils.theme.ViewThemeUtils
3939
*/
4040
@Suppress("LongParameterList")
4141
class UnifiedSearchListAdapter(
42+
private val fragment: UnifiedSearchFragment,
4243
private val supportsOpeningCalendarContactsLocally: Boolean,
4344
private val storageManager: FileDataStorageManager,
4445
private val listInterface: UnifiedSearchListInterface,
@@ -48,7 +49,6 @@ class UnifiedSearchListAdapter(
4849
private val viewThemeUtils: ViewThemeUtils,
4950
private val appPreferences: AppPreferences,
5051
private val syncedFolderProvider: SyncedFolderProvider,
51-
private val nextcloudClient: NextcloudClient,
5252
private val currentDirItemAction: UnifiedSearchCurrentDirItemAction
5353
) : SectionedRecyclerViewAdapter<SectionedViewHolder>() {
5454
companion object {
@@ -85,13 +85,13 @@ class UnifiedSearchListAdapter(
8585
false
8686
)
8787
UnifiedSearchItemViewHolder(
88+
fragment,
8889
supportsOpeningCalendarContactsLocally,
8990
binding,
9091
storageManager,
9192
listInterface,
9293
filesAction,
9394
context,
94-
nextcloudClient,
9595
viewThemeUtils
9696
)
9797
}

app/src/main/java/com/owncloud/android/ui/fragment/UnifiedSearchFragment.kt

Lines changed: 23 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import androidx.appcompat.widget.SearchView
2626
import androidx.core.view.updatePadding
2727
import androidx.fragment.app.Fragment
2828
import androidx.lifecycle.ViewModelProvider
29-
import androidx.lifecycle.lifecycleScope
3029
import androidx.recyclerview.widget.GridLayoutManager
3130
import com.nextcloud.client.account.CurrentAccountProvider
3231
import com.nextcloud.client.account.UserAccountManager
@@ -36,7 +35,6 @@ import com.nextcloud.client.di.Injectable
3635
import com.nextcloud.client.di.ViewModelFactory
3736
import com.nextcloud.client.network.ClientFactory
3837
import com.nextcloud.client.preferences.AppPreferences
39-
import com.nextcloud.utils.extensions.getTypedActivity
4038
import com.nextcloud.utils.extensions.searchFilesByName
4139
import com.nextcloud.utils.extensions.typedActivity
4240
import com.owncloud.android.R
@@ -47,7 +45,6 @@ import com.owncloud.android.datamodel.SyncedFolderProvider
4745
import com.owncloud.android.lib.common.SearchResultEntry
4846
import com.owncloud.android.lib.common.utils.Log_OC
4947
import com.owncloud.android.lib.resources.status.NextcloudVersion
50-
import com.owncloud.android.ui.activity.FileActivity
5148
import com.owncloud.android.ui.activity.FileDisplayActivity
5249
import com.owncloud.android.ui.adapter.UnifiedSearchItemViewHolder
5350
import com.owncloud.android.ui.adapter.UnifiedSearchListAdapter
@@ -62,9 +59,6 @@ import com.owncloud.android.ui.unifiedsearch.filterOutHiddenFiles
6259
import com.owncloud.android.utils.DisplayUtils
6360
import com.owncloud.android.utils.PermissionUtil
6461
import com.owncloud.android.utils.theme.ViewThemeUtils
65-
import kotlinx.coroutines.Dispatchers
66-
import kotlinx.coroutines.launch
67-
import kotlinx.coroutines.withContext
6862
import javax.inject.Inject
6963

7064
/**
@@ -374,37 +368,30 @@ class UnifiedSearchFragment :
374368
val syncedFolderProvider = SyncedFolderProvider(requireContext().contentResolver, appPreferences, clock)
375369
val gridLayoutManager = GridLayoutManager(requireContext(), 1)
376370

377-
lifecycleScope.launch(Dispatchers.IO) {
378-
val client =
379-
getTypedActivity(FileActivity::class.java)?.clientRepository?.getNextcloudClient() ?: return@launch
380-
381-
withContext(Dispatchers.Main) {
382-
adapter = UnifiedSearchListAdapter(
383-
supportsOpeningCalendarContactsLocally(),
384-
storageManager,
385-
this@UnifiedSearchFragment,
386-
this@UnifiedSearchFragment,
387-
currentAccountProvider.user,
388-
requireContext(),
389-
viewThemeUtils,
390-
appPreferences,
391-
syncedFolderProvider,
392-
client,
393-
this@UnifiedSearchFragment
394-
)
371+
adapter = UnifiedSearchListAdapter(
372+
this@UnifiedSearchFragment,
373+
supportsOpeningCalendarContactsLocally(),
374+
storageManager,
375+
this@UnifiedSearchFragment,
376+
this@UnifiedSearchFragment,
377+
currentAccountProvider.user,
378+
requireContext(),
379+
viewThemeUtils,
380+
appPreferences,
381+
syncedFolderProvider,
382+
this@UnifiedSearchFragment
383+
)
384+
385+
adapter.shouldShowFooters(true)
386+
adapter.setLayoutManager(gridLayoutManager)
387+
binding.listRoot.layoutManager = gridLayoutManager
388+
binding.listRoot.adapter = adapter
389+
searchInCurrentDirectory(initialQuery ?: "")
395390

396-
adapter.shouldShowFooters(true)
397-
adapter.setLayoutManager(gridLayoutManager)
398-
binding.listRoot.layoutManager = gridLayoutManager
399-
binding.listRoot.adapter = adapter
400-
searchInCurrentDirectory(initialQuery ?: "")
401-
402-
setUpViewModel()
403-
if (!initialQuery.isNullOrEmpty()) {
404-
vm.setQuery(initialQuery!!)
405-
vm.initialQuery()
406-
}
407-
}
391+
setUpViewModel()
392+
if (!initialQuery.isNullOrEmpty()) {
393+
vm.setQuery(initialQuery!!)
394+
vm.initialQuery()
408395
}
409396
}
410397

0 commit comments

Comments
 (0)