package com.suno.android.ui.screens.hooks import androidx.annotation.OptIn import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale import androidx.media3.common.Player import androidx.media3.common.util.UnstableApi import androidx.media3.ui.compose.PlayerSurface import androidx.media3.ui.compose.SURFACE_TYPE_TEXTURE_VIEW import androidx.media3.ui.compose.modifiers.resizeWithContentScale import androidx.media3.ui.compose.state.rememberPresentationState import coil3.compose.AsyncImage import com.suno.android.common_core_utils.model.Url @OptIn(UnstableApi::class) @Composable fun HookPlayerSurface( player: Player, thumbnailUrl: Url?, ) { val presentationState = rememberPresentationState(player) val showPlaceholder = presentationState.coverSurface Box { PlayerSurface( player = player, modifier = Modifier .resizeWithContentScale( contentScale = ContentScale.Crop, sourceSizeDp = presentationState.videoSizeDp, ), surfaceType = SURFACE_TYPE_TEXTURE_VIEW, ) if (showPlaceholder && thumbnailUrl != null) { AsyncImage( model = thumbnailUrl, contentDescription = null, modifier = Modifier.fillMaxSize(), contentScale = ContentScale.Crop, ) } } }