package com.suno.android.common_ui.components.dialogs import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.platform.LocalContext import androidx.mediarouter.app.MediaRouteChooserDialog import androidx.mediarouter.media.MediaRouteSelector import com.google.android.gms.cast.CastMediaControlIntent @Composable fun CastDeviceChooserDialog( isVisible: Boolean, castAppId: String, onDismiss: () -> Unit, onError: (Exception) -> Unit, ) { val context = LocalContext.current var dialog by remember { mutableStateOf(null) } LaunchedEffect(isVisible) { if (isVisible) { try { val selector = MediaRouteSelector.Builder() .addControlCategory( CastMediaControlIntent.categoryForCast(castAppId), ) .build() val newDialog = MediaRouteChooserDialog(context).apply { routeSelector = selector setOnDismissListener { onDismiss() } } dialog = newDialog newDialog.show() } catch (e: Exception) { onError(e) onDismiss() } } else { dialog?.dismiss() dialog = null } } }