Integrate nav drawer settings for default home page (#888)
## Description Customizing the home page (#803) and nav drawer (#886) were developed independently, so this PR just cleans up somethings so that those two changes work together. This PR restores the default home page when there is no customization to be the same as before: continue watching/next up row(s) followed by the order of the nav drawer libraries' recently added rows. Finally gets rid of `NavDrawerIteRepository` and related functions which all had weird, hard to follow code. ### Related issues Related to #803 & #886 ### Testing Emulator testing ## Screenshots N/A ## AI or LLM usage None
This commit is contained in:
parent
17b0eef5c5
commit
7fcd66f407
8 changed files with 58 additions and 153 deletions
|
|
@ -3,7 +3,6 @@ package com.github.damontecres.wholphin.ui.main
|
|||
import android.content.Context
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.github.damontecres.wholphin.data.NavDrawerItemRepository
|
||||
import com.github.damontecres.wholphin.data.ServerRepository
|
||||
import com.github.damontecres.wholphin.data.model.BaseItem
|
||||
import com.github.damontecres.wholphin.data.model.HomeRowConfig
|
||||
|
|
@ -13,11 +12,10 @@ import com.github.damontecres.wholphin.services.FavoriteWatchManager
|
|||
import com.github.damontecres.wholphin.services.HomePageResolvedSettings
|
||||
import com.github.damontecres.wholphin.services.HomeSettingsService
|
||||
import com.github.damontecres.wholphin.services.MediaReportService
|
||||
import com.github.damontecres.wholphin.services.NavDrawerService
|
||||
import com.github.damontecres.wholphin.services.NavigationManager
|
||||
import com.github.damontecres.wholphin.services.UserPreferencesService
|
||||
import com.github.damontecres.wholphin.ui.launchIO
|
||||
import com.github.damontecres.wholphin.ui.main.settings.Library
|
||||
import com.github.damontecres.wholphin.ui.nav.ServerNavDrawerItem
|
||||
import com.github.damontecres.wholphin.ui.showToast
|
||||
import com.github.damontecres.wholphin.util.ExceptionHandler
|
||||
import com.github.damontecres.wholphin.util.HomeRowLoadingState
|
||||
|
|
@ -46,8 +44,8 @@ class HomeViewModel
|
|||
@param:ApplicationContext private val context: Context,
|
||||
val navigationManager: NavigationManager,
|
||||
val serverRepository: ServerRepository,
|
||||
val navDrawerItemRepository: NavDrawerItemRepository,
|
||||
val mediaReportService: MediaReportService,
|
||||
private val navDrawerService: NavDrawerService,
|
||||
private val homeSettingsService: HomeSettingsService,
|
||||
private val favoriteWatchManager: FavoriteWatchManager,
|
||||
private val datePlayedService: DatePlayedService,
|
||||
|
|
@ -69,17 +67,8 @@ class HomeViewModel
|
|||
val preferences = userPreferencesService.getCurrent()
|
||||
val prefs = preferences.appPreferences.homePagePreferences
|
||||
|
||||
val navDrawerItems =
|
||||
navDrawerItemRepository
|
||||
.getNavDrawerItems()
|
||||
val libraries =
|
||||
navDrawerItems
|
||||
.filter { it is ServerNavDrawerItem }
|
||||
.map {
|
||||
it as ServerNavDrawerItem
|
||||
Library(it.itemId, it.name, it.type)
|
||||
}
|
||||
serverRepository.currentUserDto.value?.let { userDto ->
|
||||
val libraries = navDrawerService.getAllUserLibraries(userDto.id)
|
||||
val settings =
|
||||
homeSettingsService.currentSettings.first { it != HomePageResolvedSettings.EMPTY }
|
||||
val state = state.value
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import androidx.datastore.core.DataStore
|
|||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.github.damontecres.wholphin.R
|
||||
import com.github.damontecres.wholphin.data.NavDrawerItemRepository
|
||||
import com.github.damontecres.wholphin.data.ServerRepository
|
||||
import com.github.damontecres.wholphin.data.model.BaseItem
|
||||
import com.github.damontecres.wholphin.data.model.HomePageSettings
|
||||
|
|
@ -26,12 +25,12 @@ import com.github.damontecres.wholphin.services.BackdropService
|
|||
import com.github.damontecres.wholphin.services.HomePageResolvedSettings
|
||||
import com.github.damontecres.wholphin.services.HomeRowConfigDisplay
|
||||
import com.github.damontecres.wholphin.services.HomeSettingsService
|
||||
import com.github.damontecres.wholphin.services.NavDrawerService
|
||||
import com.github.damontecres.wholphin.services.SeerrServerRepository
|
||||
import com.github.damontecres.wholphin.services.UnsupportedHomeSettingsVersionException
|
||||
import com.github.damontecres.wholphin.services.UserPreferencesService
|
||||
import com.github.damontecres.wholphin.services.hilt.IoCoroutineScope
|
||||
import com.github.damontecres.wholphin.ui.launchIO
|
||||
import com.github.damontecres.wholphin.ui.nav.ServerNavDrawerItem
|
||||
import com.github.damontecres.wholphin.ui.showToast
|
||||
import com.github.damontecres.wholphin.util.HomeRowLoadingState
|
||||
import com.github.damontecres.wholphin.util.LoadingState
|
||||
|
|
@ -68,7 +67,7 @@ class HomeSettingsViewModel
|
|||
private val homeSettingsService: HomeSettingsService,
|
||||
private val serverRepository: ServerRepository,
|
||||
private val userPreferencesService: UserPreferencesService,
|
||||
private val navDrawerItemRepository: NavDrawerItemRepository,
|
||||
private val navDrawerService: NavDrawerService,
|
||||
private val backdropService: BackdropService,
|
||||
private val seerrServerRepository: SeerrServerRepository,
|
||||
val preferencesDataStore: DataStore<AppPreferences>,
|
||||
|
|
@ -84,16 +83,8 @@ class HomeSettingsViewModel
|
|||
init {
|
||||
addCloseable { saveToLocal() }
|
||||
viewModelScope.launchIO {
|
||||
val navDrawerItems =
|
||||
navDrawerItemRepository
|
||||
.getNavDrawerItems()
|
||||
val libraries =
|
||||
navDrawerItems
|
||||
.filter { it is ServerNavDrawerItem }
|
||||
.map {
|
||||
it as ServerNavDrawerItem
|
||||
Library(it.itemId, it.name, it.type)
|
||||
}
|
||||
val userId = serverRepository.currentUser.value?.id ?: return@launchIO
|
||||
val libraries = navDrawerService.getAllUserLibraries(userId)
|
||||
val currentSettings =
|
||||
homeSettingsService.currentSettings.first { it != HomePageResolvedSettings.EMPTY }
|
||||
Timber.v("currentSettings=%s", currentSettings)
|
||||
|
|
@ -525,8 +516,9 @@ class HomeSettingsViewModel
|
|||
|
||||
fun resetToDefault() {
|
||||
viewModelScope.launchIO {
|
||||
val userId = serverRepository.currentUser.value?.id ?: return@launchIO
|
||||
_state.update { it.copy(loading = LoadingState.Loading) }
|
||||
val result = homeSettingsService.createDefault()
|
||||
val result = homeSettingsService.createDefault(userId)
|
||||
_state.update {
|
||||
it.copy(rows = result.rows)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,7 +65,6 @@ import androidx.tv.material3.ProvideTextStyle
|
|||
import androidx.tv.material3.Text
|
||||
import androidx.tv.material3.surfaceColorAtElevation
|
||||
import com.github.damontecres.wholphin.R
|
||||
import com.github.damontecres.wholphin.data.NavDrawerItemRepository
|
||||
import com.github.damontecres.wholphin.data.model.JellyfinServer
|
||||
import com.github.damontecres.wholphin.data.model.JellyfinUser
|
||||
import com.github.damontecres.wholphin.preferences.AppThemeColors
|
||||
|
|
@ -73,7 +72,6 @@ import com.github.damontecres.wholphin.preferences.UserPreferences
|
|||
import com.github.damontecres.wholphin.services.BackdropService
|
||||
import com.github.damontecres.wholphin.services.NavDrawerService
|
||||
import com.github.damontecres.wholphin.services.NavigationManager
|
||||
import com.github.damontecres.wholphin.services.SeerrServerRepository
|
||||
import com.github.damontecres.wholphin.services.SetupDestination
|
||||
import com.github.damontecres.wholphin.services.SetupNavigationManager
|
||||
import com.github.damontecres.wholphin.ui.FontAwesome
|
||||
|
|
@ -98,11 +96,9 @@ class NavDrawerViewModel
|
|||
constructor(
|
||||
private val api: ApiClient,
|
||||
private val navDrawerService: NavDrawerService,
|
||||
private val navDrawerItemRepository: NavDrawerItemRepository,
|
||||
val navigationManager: NavigationManager,
|
||||
val setupNavigationManager: SetupNavigationManager,
|
||||
val backdropService: BackdropService,
|
||||
private val seerrServerRepository: SeerrServerRepository,
|
||||
) : ViewModel() {
|
||||
val state = navDrawerService.state
|
||||
|
||||
|
|
@ -184,9 +180,13 @@ data class ServerNavDrawerItem(
|
|||
val destination: Destination,
|
||||
val type: CollectionType,
|
||||
) : NavDrawerItem {
|
||||
override val id: String = "s_" + itemId.toServerString()
|
||||
override val id: String = getId(itemId)
|
||||
|
||||
override fun name(context: Context): String = name
|
||||
|
||||
companion object {
|
||||
fun getId(itemId: UUID) = "s_" + itemId.toServerString()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import androidx.datastore.core.DataStore
|
|||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.asFlow
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.github.damontecres.wholphin.data.NavDrawerItemRepository
|
||||
import com.github.damontecres.wholphin.data.ServerPreferencesDao
|
||||
import com.github.damontecres.wholphin.data.ServerRepository
|
||||
import com.github.damontecres.wholphin.data.model.JellyfinUser
|
||||
|
|
@ -50,7 +49,6 @@ class PreferencesViewModel
|
|||
val backdropService: BackdropService,
|
||||
private val rememberTabManager: RememberTabManager,
|
||||
private val serverRepository: ServerRepository,
|
||||
private val navDrawerItemRepository: NavDrawerItemRepository,
|
||||
private val navDrawerService: NavDrawerService,
|
||||
private val serverPreferencesDao: ServerPreferencesDao,
|
||||
private val seerrServerRepository: SeerrServerRepository,
|
||||
|
|
@ -58,9 +56,6 @@ class PreferencesViewModel
|
|||
private val clientInfo: ClientInfo,
|
||||
) : ViewModel(),
|
||||
RememberTabManager by rememberTabManager {
|
||||
private lateinit var allNavDrawerItems: List<NavDrawerItem>
|
||||
// val navDrawerPins = MutableLiveData<List<NavDrawerPin>>(emptyList())
|
||||
|
||||
val navDrawerPins =
|
||||
navDrawerService.state
|
||||
.combine(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue