mirror of
https://github.com/JustinZeus/Wholphin.git
synced 2026-07-08 23:51:21 +02:00
More minor bug fixes (#728)
## Description - Better focus handling on discover page - Follow up to #723 to dim the user image when the nav drawer is closed - Add a missed closeable to stop theme music when leaving a series page
This commit is contained in:
parent
2572a38450
commit
7a20fedef4
6 changed files with 17 additions and 17 deletions
|
|
@ -121,6 +121,7 @@ class SeriesViewModel
|
|||
) + Dispatchers.IO,
|
||||
) {
|
||||
Timber.v("Start")
|
||||
addCloseable { themeSongPlayer.stop() }
|
||||
val item = fetchItem(seriesId)
|
||||
backdropService.submit(item)
|
||||
|
||||
|
|
|
|||
|
|
@ -18,18 +18,17 @@ import androidx.compose.runtime.saveable.rememberSaveable
|
|||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.focus.FocusRequester
|
||||
import androidx.compose.ui.focus.focusRequester
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
|
||||
import com.github.damontecres.wholphin.R
|
||||
import com.github.damontecres.wholphin.preferences.UserPreferences
|
||||
import com.github.damontecres.wholphin.ui.OneTimeLaunchedEffect
|
||||
import com.github.damontecres.wholphin.ui.components.ErrorMessage
|
||||
import com.github.damontecres.wholphin.ui.components.TabRow
|
||||
import com.github.damontecres.wholphin.ui.logTab
|
||||
import com.github.damontecres.wholphin.ui.nav.NavDrawerItem
|
||||
import com.github.damontecres.wholphin.ui.preferences.PreferencesViewModel
|
||||
import com.github.damontecres.wholphin.ui.tryRequestFocus
|
||||
|
||||
@Composable
|
||||
fun DiscoverPage(
|
||||
|
|
@ -46,21 +45,16 @@ fun DiscoverPage(
|
|||
stringResource(R.string.request),
|
||||
)
|
||||
var selectedTabIndex by rememberSaveable { mutableIntStateOf(rememberedTabIndex) }
|
||||
val focusRequester = remember { FocusRequester() }
|
||||
val tabFocusRequesters = remember(tabs) { List(tabs.size) { FocusRequester() } }
|
||||
|
||||
val firstTabFocusRequester = remember { FocusRequester() }
|
||||
LaunchedEffect(Unit) { firstTabFocusRequester.tryRequestFocus() }
|
||||
|
||||
LaunchedEffect(selectedTabIndex) {
|
||||
logTab("discover", selectedTabIndex)
|
||||
preferencesViewModel.saveRememberedTab(preferences, NavDrawerItem.Discover.id, selectedTabIndex)
|
||||
preferencesViewModel.backdropService.clearBackdrop()
|
||||
}
|
||||
OneTimeLaunchedEffect { preferencesViewModel.backdropService.clearBackdrop() }
|
||||
|
||||
var showHeader by rememberSaveable { mutableStateOf(true) }
|
||||
|
||||
LaunchedEffect(Unit) { focusRequester.tryRequestFocus("page") }
|
||||
Column(
|
||||
modifier = modifier,
|
||||
) {
|
||||
|
|
@ -73,8 +67,7 @@ fun DiscoverPage(
|
|||
selectedTabIndex = selectedTabIndex,
|
||||
modifier =
|
||||
Modifier
|
||||
.padding(start = 32.dp, top = 16.dp, bottom = 16.dp)
|
||||
.focusRequester(firstTabFocusRequester),
|
||||
.padding(start = 32.dp, top = 16.dp, bottom = 16.dp),
|
||||
tabs = tabs,
|
||||
onClick = { selectedTabIndex = it },
|
||||
focusRequesters = tabFocusRequesters,
|
||||
|
|
@ -87,8 +80,7 @@ fun DiscoverPage(
|
|||
preferences = preferences,
|
||||
modifier =
|
||||
Modifier
|
||||
.fillMaxSize()
|
||||
.focusRequester(focusRequester),
|
||||
.fillMaxSize(),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -98,8 +90,7 @@ fun DiscoverPage(
|
|||
focusRequesterOnEmpty = tabFocusRequesters.getOrNull(selectedTabIndex),
|
||||
modifier =
|
||||
Modifier
|
||||
.fillMaxSize()
|
||||
.focusRequester(focusRequester),
|
||||
.fillMaxSize(),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@ fun SeerrDiscoverPage(
|
|||
listOf(state.trending, state.movies, state.tv, state.upcomingMovies, state.upcomingTv)
|
||||
val ratingMap by viewModel.rating.collectAsState()
|
||||
|
||||
val focusRequesters = remember(2) { List(rows.size) { FocusRequester() } }
|
||||
val focusRequesters = remember(rows) { List(rows.size) { FocusRequester() } }
|
||||
var position by rememberPosition(0, -1)
|
||||
val focusedItem =
|
||||
remember(position) {
|
||||
|
|
@ -212,6 +212,8 @@ fun SeerrDiscoverPage(
|
|||
LaunchedEffect(state.trending) {
|
||||
if (!firstFocused && state.trending.items is DataLoadingState.Success<*>) {
|
||||
firstFocused = focusRequesters.getOrNull(0)?.tryRequestFocus("discover") == true
|
||||
} else if (firstFocused) {
|
||||
focusRequesters.getOrNull(position.row)?.tryRequestFocus()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -396,6 +396,7 @@ fun NavDrawer(
|
|||
user = user,
|
||||
imageUrl = userImageUrl,
|
||||
serverName = server.name ?: server.url,
|
||||
drawerOpen = drawerState.isOpen,
|
||||
interactionSource = interactionSource,
|
||||
onClick = {
|
||||
viewModel.setupNavigationManager.navigateTo(
|
||||
|
|
@ -581,6 +582,7 @@ fun NavigationDrawerScope.ProfileIcon(
|
|||
user: JellyfinUser,
|
||||
imageUrl: String?,
|
||||
serverName: String,
|
||||
drawerOpen: Boolean,
|
||||
onClick: () -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
|
||||
|
|
@ -595,6 +597,7 @@ fun NavigationDrawerScope.ProfileIcon(
|
|||
id = user.id,
|
||||
name = user.name,
|
||||
imageUrl = imageUrl,
|
||||
alpha = if (drawerOpen) 1f else .5f,
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
)
|
||||
},
|
||||
|
|
|
|||
|
|
@ -181,9 +181,10 @@ fun ServerList(
|
|||
@Composable
|
||||
fun rememberIdColor(
|
||||
id: UUID?,
|
||||
alpha: Float = 1f,
|
||||
nullColor: Color = MaterialTheme.colorScheme.surfaceVariant,
|
||||
): Color =
|
||||
remember(id) {
|
||||
remember(id, alpha) {
|
||||
if (id == null) {
|
||||
return@remember nullColor
|
||||
}
|
||||
|
|
@ -212,6 +213,7 @@ fun rememberIdColor(
|
|||
red = (r + m).coerceIn(0f, 1f),
|
||||
green = (g + m).coerceIn(0f, 1f),
|
||||
blue = (b + m).coerceIn(0f, 1f),
|
||||
alpha = alpha,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -296,9 +296,10 @@ fun UserIconCardImage(
|
|||
name: String?,
|
||||
imageUrl: String?,
|
||||
modifier: Modifier = Modifier,
|
||||
alpha: Float = 1f,
|
||||
) {
|
||||
var imageError by remember { mutableStateOf(false) }
|
||||
val userColor = rememberIdColor(id)
|
||||
val userColor = rememberIdColor(id, alpha)
|
||||
Box(
|
||||
modifier =
|
||||
modifier.background(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue