@@ -22,7 +22,6 @@ import android.view.MenuInflater
2222import android.view.MenuItem
2323import android.view.View
2424import android.view.ViewGroup
25- import androidx.annotation.VisibleForTesting
2625import androidx.core.content.ContextCompat
2726import androidx.core.content.res.ResourcesCompat
2827import androidx.core.view.MenuHost
@@ -33,20 +32,17 @@ import androidx.lifecycle.lifecycleScope
3332import androidx.recyclerview.widget.GridLayoutManager
3433import androidx.recyclerview.widget.LinearLayoutManager
3534import com.google.android.material.appbar.AppBarLayout
36- import com.nextcloud.client.account.User
3735import com.nextcloud.client.account.UserAccountManager
3836import com.nextcloud.client.di.Injectable
39- import com.nextcloud.client.network.ClientFactory
40- import com.nextcloud.client.network.ClientFactory.CreationException
4137import com.nextcloud.client.preferences.AppPreferences
4238import com.nextcloud.client.utils.Throttler
4339import com.owncloud.android.R
4440import com.owncloud.android.databinding.AlbumsFragmentBinding
4541import com.owncloud.android.datamodel.SyncedFolderProvider
46- import com.owncloud.android.lib.common.OwnCloudClient
4742import com.owncloud.android.lib.common.utils.Log_OC
4843import com.owncloud.android.lib.resources.albums.PhotoAlbumEntry
4944import com.owncloud.android.lib.resources.albums.ReadAlbumsRemoteOperation
45+ import com.owncloud.android.ui.activity.BaseActivity
5046import com.owncloud.android.ui.activity.FileDisplayActivity
5147import com.owncloud.android.ui.adapter.albums.AlbumFragmentInterface
5248import com.owncloud.android.ui.adapter.albums.AlbumsAdapter
@@ -56,7 +52,6 @@ import com.owncloud.android.utils.theme.ViewThemeUtils
5652import kotlinx.coroutines.Dispatchers
5753import kotlinx.coroutines.launch
5854import kotlinx.coroutines.withContext
59- import java.util.Optional
6055import javax.inject.Inject
6156
6257class AlbumsFragment :
@@ -65,8 +60,6 @@ class AlbumsFragment :
6560 Injectable {
6661
6762 private var adapter: AlbumsAdapter ? = null
68- private var client: OwnCloudClient ? = null
69- private var optionalUser: Optional <User >? = null
7063
7164 private lateinit var binding: AlbumsFragmentBinding
7265
@@ -76,9 +69,6 @@ class AlbumsFragment :
7669 @Inject
7770 lateinit var accountManager: UserAccountManager
7871
79- @Inject
80- lateinit var clientFactory: ClientFactory
81-
8272 @Inject
8373 lateinit var preferences: AppPreferences
8474
@@ -88,7 +78,7 @@ class AlbumsFragment :
8878 @Inject
8979 lateinit var throttler: Throttler
9080
91- private var mContainerActivity : FileFragment .ContainerActivity ? = null
81+ private var containerActivity : FileFragment .ContainerActivity ? = null
9282
9383 private var isGridView = true
9484 private var maxColumnSize = 2
@@ -98,7 +88,7 @@ class AlbumsFragment :
9888 override fun onAttach (context : Context ) {
9989 super .onAttach(context)
10090 try {
101- mContainerActivity = context as FileFragment .ContainerActivity
91+ containerActivity = context as FileFragment .ContainerActivity
10292 } catch (e: ClassCastException ) {
10393 throw IllegalArgumentException (
10494 context.toString() + " must implement " +
@@ -115,7 +105,7 @@ class AlbumsFragment :
115105 }
116106
117107 override fun onDetach () {
118- mContainerActivity = null
108+ containerActivity = null
119109 super .onDetach()
120110 }
121111
@@ -135,7 +125,6 @@ class AlbumsFragment :
135125
136126 override fun onViewCreated (view : View , savedInstanceState : Bundle ? ) {
137127 super .onViewCreated(view, savedInstanceState)
138- optionalUser = Optional .of(accountManager.user)
139128 showAppBar()
140129 createMenu()
141130 setupContainingList()
@@ -218,11 +207,9 @@ class AlbumsFragment :
218207 }
219208 }
220209
221- @VisibleForTesting
222210 fun populateList (albums : List <PhotoAlbumEntry >? ) {
223- if (requireActivity() is FileDisplayActivity ) {
224- (requireActivity() as FileDisplayActivity ).setMainFabVisible(false )
225- }
211+ Log_OC .d(TAG , " loading album list item size: " + albums?.size)
212+ (activity as ? FileDisplayActivity )?.setMainFabVisible(false )
226213 initializeAdapter()
227214 adapter?.setAlbumItems(albums)
228215 }
@@ -231,21 +218,31 @@ class AlbumsFragment :
231218 binding.swipeContainingList.isRefreshing = true
232219 initializeAdapter()
233220 updateEmptyView(false )
221+ readAlbums()
222+ }
223+
224+ private fun readAlbums () {
225+ val activity = activity ? : return
226+
234227 lifecycleScope.launch(Dispatchers .IO ) {
235- val albumsRemoteOperation = ReadAlbumsRemoteOperation ()
236- val result = client?.let { albumsRemoteOperation.execute(it) }
237- withContext(Dispatchers .Main ) {
238- if (result?.isSuccess == true && result.resultData != null ) {
239- if (result.resultData.isEmpty()) {
228+ if (activity is BaseActivity ) {
229+ val client = activity.clientRepository.getOwncloudClient()
230+ val operation = ReadAlbumsRemoteOperation ()
231+ val result = operation.execute(client)
232+
233+ withContext(Dispatchers .Main ) {
234+ if (result?.isSuccess == true && result.resultData != null ) {
235+ if (result.resultData.isEmpty()) {
236+ updateEmptyView(true )
237+ }
238+ populateList(result.resultData)
239+ } else {
240+ Log_OC .d(TAG , " read album operation failed" )
240241 updateEmptyView(true )
241242 }
242- populateList(result.resultData)
243- } else {
244- Log_OC .d(TAG , result?.logMessage)
245- // show error
246- updateEmptyView(true )
243+
244+ hideRefreshLayoutLoader()
247245 }
248- hideRefreshLayoutLoader()
249246 }
250247 }
251248 }
@@ -254,23 +251,11 @@ class AlbumsFragment :
254251 binding.swipeContainingList.isRefreshing = false
255252 }
256253
257- private fun initializeClient () {
258- if (client == null && optionalUser?.isPresent == true ) {
259- try {
260- val user = optionalUser?.get()
261- client = clientFactory.create(user)
262- } catch (e: CreationException ) {
263- Log_OC .e(TAG , " Error initializing client" , e)
264- }
265- }
266- }
267-
268254 private fun initializeAdapter () {
269- initializeClient()
270255 if (adapter == null ) {
271256 adapter = AlbumsAdapter (
272257 requireContext(),
273- mContainerActivity ?.storageManager,
258+ containerActivity ?.storageManager,
274259 accountManager.user,
275260 this ,
276261 syncedFolderProvider,
@@ -279,6 +264,7 @@ class AlbumsFragment :
279264 isGridView
280265 )
281266 }
267+
282268 binding.listRoot.adapter = adapter
283269
284270 // Restore scroll state
@@ -297,21 +283,22 @@ class AlbumsFragment :
297283 if (isSelectionMode) {
298284 binding.root.setBackgroundColor(ResourcesCompat .getColor(resources, R .color.bg_default, null ))
299285 }
300- if (requireActivity() is FileDisplayActivity ) {
301- (requireActivity() as FileDisplayActivity ).setupToolbar()
302- (requireActivity() as FileDisplayActivity ).supportActionBar?.let { actionBar ->
286+
287+ (activity as ? FileDisplayActivity )?.run {
288+ setupToolbar()
289+ supportActionBar?.let { actionBar ->
303290 viewThemeUtils.files.themeActionBar(
304291 requireContext(),
305292 actionBar,
306293 R .string.drawer_item_album,
307294 isMenu = true
308295 )
309296 }
310- (requireActivity() as FileDisplayActivity ). showSortListGroup(false )
311- (requireActivity() as FileDisplayActivity ). setMainFabVisible(false )
297+ showSortListGroup(false )
298+ setMainFabVisible(false )
312299
313300 // clear the subtitle while navigating to any other screen from Media screen
314- (requireActivity() as FileDisplayActivity ). clearToolbarSubtitle()
301+ clearToolbarSubtitle()
315302 }
316303 }
317304
0 commit comments