@@ -17,6 +17,7 @@ import android.widget.Toast
1717import androidx.activity.compose.rememberLauncherForActivityResult
1818import androidx.activity.result.contract.ActivityResultContracts
1919import androidx.compose.animation.core.*
20+ import androidx.compose.foundation.ExperimentalFoundationApi
2021import androidx.compose.foundation.layout.*
2122import androidx.compose.foundation.lazy.LazyColumn
2223import androidx.compose.foundation.lazy.itemsIndexed
@@ -35,7 +36,6 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
3536import androidx.navigation.NavController
3637import com.google.accompanist.permissions.ExperimentalPermissionsApi
3738import com.google.accompanist.permissions.rememberMultiplePermissionsState
38- import com.st.blue_sdk.bt.advertise.getFwInfo
3939import com.st.blue_sdk.models.Boards
4040import com.st.blue_sdk.models.Node
4141import com.st.bluems.NFCConnectionViewModel
@@ -49,6 +49,9 @@ import com.st.ui.theme.LocalDimensions
4949import com.st.ui.theme.Grey6
5050import androidx.compose.material3.FloatingActionButton
5151import androidx.compose.material3.Scaffold
52+ import androidx.compose.ui.unit.IntOffset
53+ import androidx.navigation.NavOptions
54+ import androidx.navigation.navOptions
5255import com.st.ui.theme.SecondaryBlue
5356
5457@Composable
@@ -116,9 +119,20 @@ fun DeviceListScreen(
116119 if (boardsDescription.isEmpty()) {
117120 Toast .makeText(context, " Boards Catalog not Available" , Toast .LENGTH_SHORT ).show()
118121 } else {
119- navController.navigate(
120- HomeFragmentDirections .actionHomeFragmentToCatalog()
121- )
122+
123+ val navOptions: NavOptions = navOptions {
124+ anim {
125+ enter = com.st.ui.R .anim.slide_in_from_left
126+ exit = com.st.ui.R .anim.fade_out
127+ popEnter = com.st.ui.R .anim.fade_in
128+ popExit = com.st.ui.R .anim.slide_out_to_left
129+ }
130+ }
131+ navController.navigate(directions = HomeFragmentDirections .actionHomeFragmentToCatalog(), navOptions = navOptions)
132+
133+ // navController.navigate(
134+ // HomeFragmentDirections.actionHomeFragmentToCatalog()
135+ // )
122136 }
123137 },
124138 goToSourceCode = {
@@ -138,8 +152,8 @@ fun DeviceListScreen(
138152 },
139153 readBetaCatalog = {
140154 forceScan = true
141- // viewModel.readBetaCatalog()
142- Toast .makeText(context, " Loaded Beta Catalog Not Implemented " , Toast .LENGTH_SHORT ).show()
155+ viewModel.readBetaCatalog()
156+ Toast .makeText(context, " Loaded Beta Catalog" , Toast .LENGTH_SHORT ).show()
143157 },
144158 readReleaseCatalog = {
145159 forceScan = true
@@ -175,22 +189,19 @@ fun DeviceListScreen(
175189 )
176190 }
177191 },
178- onInfoClick = { node ->
179- if (boardsDescription.isNotEmpty()) {
180- val deviceId = node.advertiseInfo?.getFwInfo()?.deviceId
181- deviceId?.let {
182- navController.navigate(
183- HomeFragmentDirections .actionHomeFragmentToCatalogBoard(deviceId)
184- )
185- }
186- }
187- },
188192 onStartScan = {
189193 viewModel.startScan()
190194 },
191195 onAddCatalogEntryFromFile = { fileUri ->
192196 forceScan = true
193- viewModel.setLocalBoardCatalog(fileUri = fileUri)
197+ val result = viewModel.setLocalBoardCatalog(fileUri = fileUri)
198+ result?.let { res ->
199+ if (res.startsWith(" Added" )) {
200+ Toast .makeText(context, result, Toast .LENGTH_SHORT ).show()
201+ } else {
202+ Toast .makeText(context, result, Toast .LENGTH_LONG ).show()
203+ }
204+ }
194205 }
195206 )
196207}
@@ -230,7 +241,6 @@ fun DeviceListWithPermissionsCheck(
230241 onEnableBle : () -> Unit ,
231242 onEnableLocation : () -> Unit ,
232243 onNodeSelected : (Node ) -> Unit ,
233- onInfoClick : (Node ) -> Unit ,
234244 onAddCatalogEntryFromFile : (Uri ) -> Unit
235245) {
236246 val context = LocalContext .current
@@ -291,7 +301,6 @@ fun DeviceListWithPermissionsCheck(
291301 switchServerForced = switchServerForced,
292302 onStartScan = onStartScan,
293303 onNodeSelected = onNodeSelected,
294- onInfoClick = onInfoClick,
295304 onAddCatalogEntryFromFile = onAddCatalogEntryFromFile
296305 )
297306 }
@@ -465,8 +474,7 @@ fun DeviceList(
465474 switchServerForced : () -> Unit = { /* * NOP **/ },
466475 onStartScan : () -> Unit = { /* * NOOP**/ },
467476 onAddCatalogEntryFromFile : (Uri ) -> Unit = { /* * NOOP**/ },
468- onNodeSelected : (Node ) -> Unit = { /* * NOOP**/ },
469- onInfoClick : (Node ) -> Unit = { /* * NOOP**/ }
477+ onNodeSelected : (Node ) -> Unit = { /* * NOOP**/ }
470478) {
471479 var filters by remember { mutableStateOf(value = DeviceListFilter ()) }
472480 var openFilterDialog by rememberSaveable { mutableStateOf(value = false ) }
@@ -548,9 +556,7 @@ fun DeviceList(
548556 pinnedDevices = pinnedDevices,
549557 onPinChange = onPinChange,
550558 goToCatalog = goToCatalog,
551- onNodeSelected = onNodeSelected,
552- isExpert = isExpert,
553- onInfoClick = onInfoClick
559+ onNodeSelected = onNodeSelected
554560 )
555561 }
556562
@@ -564,16 +570,15 @@ fun DeviceList(
564570 }
565571}
566572
573+ @OptIn(ExperimentalFoundationApi ::class )
567574@Composable
568575fun DeviceList (
569576 modifier : Modifier = Modifier ,
570577 filteredDevices : List <Node >,
571578 pinnedDevices : List <String >,
572579 onPinChange : (String , Boolean ) -> Unit ,
573580 goToCatalog : () -> Unit = { /* * NOOP**/ },
574- onNodeSelected : (Node ) -> Unit = { /* * NOOP**/ },
575- isExpert : Boolean = false,
576- onInfoClick : (Node ) -> Unit = { /* * NOOP**/ }
581+ onNodeSelected : (Node ) -> Unit = { /* * NOOP**/ }
577582) {
578583 Column (
579584 modifier = modifier
@@ -604,14 +609,18 @@ fun DeviceList(
604609
605610 itemsIndexed(items = filteredDevices) { _, item ->
606611 DeviceListItem (
612+ modifier = Modifier .animateItem(
613+ fadeInSpec = null , fadeOutSpec = null , placementSpec = spring(
614+ stiffness = Spring .StiffnessMediumLow ,
615+ visibilityThreshold = IntOffset .VisibilityThreshold
616+ )
617+ ),
607618 isPin = pinnedDevices.contains(item.device.address),
608619 item = item,
609620 onNodeSelected = onNodeSelected,
610621 onPinChange = { change ->
611622 onPinChange(item.device.address, change)
612- },
613- isExpert = isExpert,
614- onInfoClick = onInfoClick
623+ }
615624 )
616625 }
617626
0 commit comments