package com.craigvg.lichun_android.ui.screens.social import androidx.compose.foundation.layout.* import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.hilt.navigation.compose.hiltViewModel import com.craigvg.lichun_android.ui.screens.dating.DatingScreen import com.craigvg.lichun_android.ui.screens.messaging.MessagesScreen import com.craigvg.lichun_android.ui.theme.AppColors import com.craigvg.lichun_android.ui.theme.AppTypography import com.craigvg.lichun_android.viewmodel.PlayerViewModel import kotlinx.coroutines.launch import androidx.lifecycle.compose.collectAsStateWithLifecycle /** * Unified social tab combining Dating and Messages with a segment picker. * Ported from iOS SocialView.swift */ @Composable fun SocialScreen( onConversationClick: (String) -> Unit = {}, onViewRelationship: (String) -> Unit = {}, onStartChat: (String) -> Unit = {}, onGoOnDate: (String) -> Unit = {}, initialPage: Int = 0, playerViewModel: PlayerViewModel = hiltViewModel() ) { val tabs = listOf("Dating", "Messages") val pagerState = rememberPagerState(pageCount = { tabs.size }) val coroutineScope = rememberCoroutineScope() LaunchedEffect(initialPage) { pagerState.scrollToPage(initialPage.coerceIn(0, tabs.lastIndex)) } // Age-gate: only show dating for age 16+ val person by playerViewModel.person.collectAsStateWithLifecycle() val showDating = person.ageYears >= 16 Column(modifier = Modifier.fillMaxSize()) { // Segment picker TabRow( selectedTabIndex = pagerState.currentPage, containerColor = AppColors.surfaceElevated, contentColor = AppColors.primary ) { tabs.forEachIndexed { index, title -> Tab( selected = pagerState.currentPage == index, onClick = { coroutineScope.launch { pagerState.animateScrollToPage(index) } }, text = { Text( text = title, style = if (pagerState.currentPage == index) AppTypography.bodyBold else AppTypography.body, color = if (pagerState.currentPage == index) AppColors.primary else AppColors.secondaryText ) } ) } } // Tab content HorizontalPager( state = pagerState, modifier = Modifier.fillMaxSize() ) { page -> when (page) { 0 -> { if (showDating) { DatingScreen( onViewRelationship = onViewRelationship, onStartChat = onStartChat, onGoOnDate = onGoOnDate ) } else { Box(modifier = Modifier.fillMaxSize()) { Text( text = "Dating unlocks at age 16", style = AppTypography.headline, color = AppColors.secondaryText, modifier = Modifier .fillMaxWidth() .padding(com.craigvg.lichun_android.ui.theme.AppSpacing.xl) ) } } } 1 -> { MessagesScreen( onConversationClick = onConversationClick ) } } } } }