feat(deeplink): add DeeplinkNavigator, DeeplinkBottomSheet and integrate into History and Player

This commit is contained in:
nk
2026-06-01 13:15:31 +03:00
parent aa287f7588
commit ada422053f
4 changed files with 79 additions and 5 deletions

View File

@@ -0,0 +1,50 @@
package com.radiola.ui.components
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import com.radiola.deeplink.DeeplinkNavigator
import com.radiola.domain.model.DeeplinkService
import com.radiola.domain.model.Track
import com.radiola.ui.player.PlayerViewModel
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun DeeplinkBottomSheet(
track: Track,
onDismiss: () -> Unit,
modifier: Modifier = Modifier,
viewModel: PlayerViewModel = hiltViewModel()
) {
val context = androidx.compose.ui.platform.LocalContext.current
val enabledServices by viewModel.enabledServices.collectAsState()
ModalBottomSheet(
onDismissRequest = onDismiss,
modifier = modifier
) {
Text(
text = "Найти трек",
style = MaterialTheme.typography.headlineSmall,
modifier = Modifier.padding(horizontal = 24.dp, vertical = 16.dp)
)
LazyColumn {
items(enabledServices) { service ->
ListItem(
headlineContent = { Text(service.displayName) },
modifier = Modifier.clickable {
DeeplinkNavigator.openSearch(context, track, service)
onDismiss()
}
)
}
}
}
}