28 import androidx.compose.material3.*  | 
    28 import androidx.compose.material3.*  | 
    29 import androidx.compose.runtime.*  | 
    29 import androidx.compose.runtime.*  | 
    30 import androidx.compose.ui.Alignment  | 
    30 import androidx.compose.ui.Alignment  | 
    31 import androidx.compose.ui.Modifier  | 
    31 import androidx.compose.ui.Modifier  | 
    32 import androidx.compose.ui.unit.dp  | 
    32 import androidx.compose.ui.unit.dp  | 
         | 
    33 import androidx.lifecycle.compose.collectAsStateWithLifecycle  | 
    33 import androidx.lifecycle.viewmodel.compose.viewModel  | 
    34 import androidx.lifecycle.viewmodel.compose.viewModel  | 
    34 import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel  | 
    35 import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel  | 
    35   | 
    36   | 
    36 @Composable  | 
    37 @Composable  | 
    37 fun CustomViewer(  | 
    38 fun CustomViewer(  | 
    51 @Composable  | 
    52 @Composable  | 
    52 private fun DependenciesGrid(  | 
    53 private fun DependenciesGrid(  | 
    53     viewModel: OpenSourceLicensesViewModel,  | 
    54     viewModel: OpenSourceLicensesViewModel,  | 
    54     modifier: Modifier = Modifier  | 
    55     modifier: Modifier = Modifier  | 
    55 ) { | 
    56 ) { | 
    56     val dependencies by viewModel.dependenciesList.collectAsState(initial = emptyList())  | 
    57     val dependencies by viewModel.dependenciesList.collectAsStateWithLifecycle(emptyList())  | 
    57     var selected by remember { mutableStateOf(-1) } | 
    58     var selected by remember { mutableStateOf(-1) } | 
    58     LazyVerticalGrid(  | 
    59     LazyVerticalGrid(  | 
    59         GridCells.Adaptive(150.dp),  | 
    60         GridCells.Adaptive(150.dp),  | 
    60         horizontalArrangement = Arrangement.spacedBy(16.dp),  | 
    61         horizontalArrangement = Arrangement.spacedBy(16.dp),  | 
    61         verticalArrangement = Arrangement.spacedBy(16.dp),  | 
    62         verticalArrangement = Arrangement.spacedBy(16.dp),  | 
    62         modifier = modifier  | 
    63         modifier = modifier  | 
    63     ) { | 
    64     ) { | 
    64         itemsIndexed(dependencies) { idx, dependency -> | 
    65         itemsIndexed(dependencies) { idx, dependency -> | 
    65             if (idx == selected) { | 
    66             if (idx == selected) { | 
    66                 val license by viewModel.getLicenseDependency(dependency)  | 
    67                 val license by viewModel.getLicenseDependency(dependency)  | 
    67                     .collectAsState(initial = "")  | 
    68                     .collectAsStateWithLifecycle("") | 
    68                 LicenseCard(license, onClick = { | 
    69                 LicenseCard(license, onClick = { | 
    69                     selected = -1  | 
    70                     selected = -1  | 
    70                 })  | 
    71                 })  | 
    71             } else { | 
    72             } else { | 
    72                 DependencyCard(dependency, onClick = { | 
    73                 DependencyCard(dependency, onClick = { |