From 2ff9239e8cb364b88406f1ef188deecbd6642192 Mon Sep 17 00:00:00 2001 From: jarnedemeulemeester Date: Tue, 24 Aug 2021 20:26:57 +0200 Subject: [PATCH] Improve home loading --- .../jellyfin/viewmodels/HomeViewModel.kt | 65 ++++++++++++------- app/src/main/res/layout/activity_main.xml | 5 +- app/src/main/res/layout/fragment_home.xml | 12 ++-- app/src/main/res/layout/next_up_section.xml | 1 - app/src/main/res/layout/view_item.xml | 1 - 5 files changed, 48 insertions(+), 36 deletions(-) diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModel.kt index 3ba945ad..0628f27a 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModel.kt @@ -12,7 +12,9 @@ import dev.jdtech.jellyfin.models.HomeSection import dev.jdtech.jellyfin.models.View import dev.jdtech.jellyfin.repository.JellyfinRepository import dev.jdtech.jellyfin.utils.toView +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import org.jellyfin.sdk.model.api.BaseItemDto import timber.log.Timber import java.util.* @@ -50,43 +52,56 @@ constructor( _finishedLoading.value = false viewModelScope.launch { try { + + jellyfinRepository.postCapabilities() - val views: MutableList = mutableListOf() - val userViews = jellyfinRepository.getUserViews() - for (view in userViews) { - Timber.d("Collection type: ${view.collectionType}") - if (view.collectionType == "homevideos" || - view.collectionType == "music" || - view.collectionType == "playlists" || - view.collectionType == "books" || - view.collectionType == "livetv" - ) continue - val latestItems = jellyfinRepository.getLatestMedia(view.id) - if (latestItems.isEmpty()) continue - val v = view.toView() - v.items = latestItems - views.add(v) - } val items = mutableListOf() - val resumeItems = jellyfinRepository.getResumeItems() - val resumeSection = - HomeSection(UUID.randomUUID(), continueWatchingString, resumeItems) + withContext(Dispatchers.Default) { - if (!resumeItems.isNullOrEmpty()) { - items.add(HomeItem.Section(resumeSection)) + val resumeItems = jellyfinRepository.getResumeItems() + val resumeSection = + HomeSection(UUID.randomUUID(), continueWatchingString, resumeItems) + + if (!resumeItems.isNullOrEmpty()) { + items.add(HomeItem.Section(resumeSection)) + } + + val nextUpItems = jellyfinRepository.getNextUp() + val nextUpSection = HomeSection(UUID.randomUUID(), nextUpString, nextUpItems) + + if (!nextUpItems.isNullOrEmpty()) { + items.add(HomeItem.Section(nextUpSection)) + } } - val nextUpItems = jellyfinRepository.getNextUp() - val nextUpSection = HomeSection(UUID.randomUUID(), nextUpString, nextUpItems) + _views.value = items - if (!nextUpItems.isNullOrEmpty()) { - items.add(HomeItem.Section(nextUpSection)) + val views: MutableList = mutableListOf() + + withContext(Dispatchers.Default) { + val userViews = jellyfinRepository.getUserViews() + + for (view in userViews) { + Timber.d("Collection type: ${view.collectionType}") + if (view.collectionType == "homevideos" || + view.collectionType == "music" || + view.collectionType == "playlists" || + view.collectionType == "books" || + view.collectionType == "livetv" + ) continue + val latestItems = jellyfinRepository.getLatestMedia(view.id) + if (latestItems.isEmpty()) continue + val v = view.toView() + v.items = latestItems + views.add(v) + } } _views.value = items + views.map { HomeItem.ViewItem(it) } + } catch (e: Exception) { Timber.e(e) _error.value = e.toString() diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 47d6f80c..e41857e6 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -21,7 +21,7 @@ - diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 63f600f6..f0e22609 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -16,18 +16,18 @@ android:layout_height="match_parent" tools:context=".fragments.HomeFragment"> - + app:layout_constraintTop_toTopOf="parent" /> - +