Skip to content

Commit 088d758

Browse files
authored
Bugfix/adjust click to detail action (#42)
* feat(mobile-app): Updated searched item click action * feat(mobile-app): Updated catalog home list item click action
1 parent dfad138 commit 088d758

14 files changed

+192
-163
lines changed

apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/CatalogListContent.kt

Lines changed: 94 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -43,101 +43,106 @@ fun CatalogListContent(
4343
categories: List<String>,
4444
selectedCategory: String,
4545
onSelectedCategoryChanged: (String) -> Unit,
46-
onCatalogItemSelected: (Long) -> Unit,
47-
) {
48-
when {
46+
onCatalogItemSelected: (Long, Boolean) -> Unit,
47+
) = when {
4948

50-
appState.isLandscape.and(appState.devicePosture == DevicePosture.Normal)
51-
.and(appState.isCompactHeight) -> {
52-
LandscapeCompactCatalogListScreen(
53-
appState = appState,
54-
catalogItemsListState = catalogItemsListState,
55-
catalogItems = catalogItems,
56-
categories = categories,
57-
selectedCategory = selectedCategory,
58-
onSelectedCategoryChanged = onSelectedCategoryChanged,
59-
onCatalogItemSelected = onCatalogItemSelected,
60-
)
61-
}
49+
appState.isLandscape.and(appState.devicePosture == DevicePosture.Normal)
50+
.and(appState.isCompactHeight) -> {
51+
LandscapeCompactCatalogListScreen(
52+
appState = appState,
53+
isRouting = true,
54+
catalogItemsListState = catalogItemsListState,
55+
catalogItems = catalogItems,
56+
categories = categories,
57+
selectedCategory = selectedCategory,
58+
onSelectedCategoryChanged = onSelectedCategoryChanged,
59+
onCatalogItemSelected = onCatalogItemSelected,
60+
)
61+
}
6262

63-
appState.isLandscape.and(appState.devicePosture == DevicePosture.Normal)
64-
.and(listOf(NavigationType.EXPANDED_NAV, NavigationType.NAVIGATION_RAIL).contains(appState.navigationType)) -> {
65-
LandscapeTwoPaneCatalogListScreen(
66-
appState = appState,
67-
catalogItemsListState = catalogItemsListState,
68-
catalogItems = catalogItems,
69-
categories = categories,
70-
selectedCategory = selectedCategory,
71-
onSelectedCategoryChanged = onSelectedCategoryChanged,
72-
onCatalogItemSelected = onCatalogItemSelected,
73-
)
74-
}
63+
appState.isLandscape.and(appState.devicePosture == DevicePosture.Normal)
64+
.and(listOf(NavigationType.EXPANDED_NAV, NavigationType.NAVIGATION_RAIL).contains(appState.navigationType)) -> {
65+
LandscapeTwoPaneCatalogListScreen(
66+
appState = appState,
67+
isRouting = false,
68+
catalogItemsListState = catalogItemsListState,
69+
catalogItems = catalogItems,
70+
categories = categories,
71+
selectedCategory = selectedCategory,
72+
onSelectedCategoryChanged = onSelectedCategoryChanged,
73+
onCatalogItemSelected = onCatalogItemSelected,
74+
)
75+
}
7576

76-
(appState.devicePosture is DevicePosture.Separating.Book).and(appState.isCompactHeight.not())
77-
.and(appState.isLandscape) -> {
78-
LandscapeTwoPaneCatalogListScreen(
79-
appState = appState,
80-
catalogItemsListState = catalogItemsListState,
81-
catalogItems = catalogItems,
82-
categories = categories,
83-
selectedCategory = selectedCategory,
84-
onSelectedCategoryChanged = onSelectedCategoryChanged,
85-
onCatalogItemSelected = onCatalogItemSelected,
86-
)
87-
}
77+
(appState.devicePosture is DevicePosture.Separating.Book).and(appState.isCompactHeight.not())
78+
.and(appState.isLandscape) -> {
79+
LandscapeTwoPaneCatalogListScreen(
80+
appState = appState,
81+
isRouting = false,
82+
catalogItemsListState = catalogItemsListState,
83+
catalogItems = catalogItems,
84+
categories = categories,
85+
selectedCategory = selectedCategory,
86+
onSelectedCategoryChanged = onSelectedCategoryChanged,
87+
onCatalogItemSelected = onCatalogItemSelected,
88+
)
89+
}
8890

89-
(appState.devicePosture is DevicePosture.Separating.TableTop)
90-
.and(appState.isCompactWidth.not())
91-
.and(appState.isLandscape.not()) -> {
92-
TableTopCatalogListScreen(
93-
appState = appState,
94-
catalogItemsListState = catalogItemsListState,
95-
catalogItems = catalogItems,
96-
categories = categories,
97-
selectedCategory = selectedCategory,
98-
onSelectedCategoryChanged = onSelectedCategoryChanged,
99-
onCatalogItemSelected = onCatalogItemSelected,
100-
)
101-
}
102-
103-
appState.isCompactHeight.and(appState.isLandscape)
104-
.and(appState.scaffoldContentType == ScaffoldContentType.SinglePane)
105-
.and(appState.devicePosture is DevicePosture.Separating.Book) -> {
106-
LandscapeCompactCatalogListScreen(
107-
appState = appState,
108-
catalogItemsListState = catalogItemsListState,
109-
catalogItems = catalogItems,
110-
categories = categories,
111-
selectedCategory = selectedCategory,
112-
onSelectedCategoryChanged = onSelectedCategoryChanged,
113-
onCatalogItemSelected = onCatalogItemSelected,
114-
)
115-
}
91+
(appState.devicePosture is DevicePosture.Separating.TableTop)
92+
.and(appState.isCompactWidth.not())
93+
.and(appState.isLandscape.not()) -> {
94+
TableTopCatalogListScreen(
95+
appState = appState,
96+
isRouting = false,
97+
catalogItemsListState = catalogItemsListState,
98+
catalogItems = catalogItems,
99+
categories = categories,
100+
selectedCategory = selectedCategory,
101+
onSelectedCategoryChanged = onSelectedCategoryChanged,
102+
onCatalogItemSelected = onCatalogItemSelected,
103+
)
104+
}
116105

117-
appState.isCompactWidth.and(appState.isLandscape.not())
118-
.and(appState.devicePosture is DevicePosture.Separating.TableTop) -> {
119-
CompactTableTopCatalogListScreen(
120-
appState = appState,
121-
catalogItemsListState = catalogItemsListState,
122-
catalogItems = catalogItems,
123-
categories = categories,
124-
selectedCategory = selectedCategory,
125-
onSelectedCategoryChanged = onSelectedCategoryChanged,
126-
onCatalogItemSelected = onCatalogItemSelected,
127-
)
128-
}
106+
appState.isCompactHeight.and(appState.isLandscape)
107+
.and(appState.scaffoldContentType == ScaffoldContentType.SinglePane)
108+
.and(appState.devicePosture is DevicePosture.Separating.Book) -> {
109+
LandscapeCompactCatalogListScreen(
110+
appState = appState,
111+
isRouting = true,
112+
catalogItemsListState = catalogItemsListState,
113+
catalogItems = catalogItems,
114+
categories = categories,
115+
selectedCategory = selectedCategory,
116+
onSelectedCategoryChanged = onSelectedCategoryChanged,
117+
onCatalogItemSelected = onCatalogItemSelected,
118+
)
119+
}
120+
121+
appState.isCompactWidth.and(appState.isLandscape.not())
122+
.and(appState.devicePosture is DevicePosture.Separating.TableTop) -> {
123+
CompactTableTopCatalogListScreen(
124+
appState = appState,
125+
isRouting = true,
126+
catalogItemsListState = catalogItemsListState,
127+
catalogItems = catalogItems,
128+
categories = categories,
129+
selectedCategory = selectedCategory,
130+
onSelectedCategoryChanged = onSelectedCategoryChanged,
131+
onCatalogItemSelected = onCatalogItemSelected,
132+
)
133+
}
129134

130-
else -> {
131-
DefaultPortraitCatalogListScreen(
132-
appState = appState,
133-
catalogItemsListState = catalogItemsListState,
134-
catalogItems = catalogItems,
135-
categories = categories,
136-
selectedCategory = selectedCategory,
137-
onSelectedCategoryChanged = onSelectedCategoryChanged,
138-
onCatalogItemSelected = onCatalogItemSelected,
139-
)
140-
}
135+
else -> {
136+
DefaultPortraitCatalogListScreen(
137+
appState = appState,
138+
isRouting = true,
139+
catalogItemsListState = catalogItemsListState,
140+
catalogItems = catalogItems,
141+
categories = categories,
142+
selectedCategory = selectedCategory,
143+
onSelectedCategoryChanged = onSelectedCategoryChanged,
144+
onCatalogItemSelected = onCatalogItemSelected,
145+
)
141146
}
142147
}
143148

apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/CatalogListRoute.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ fun CatalogListRoute(
9898
catalogListScrollState.animateScrollToItem(0)
9999
}
100100
},
101-
onCatalogItemSelected = { itemId ->
102-
Timber.d("[CatalogListRoute] CatalogItemTuple.id[$itemId]")
101+
onCatalogItemSelected = { catalogId, isRouting ->
102+
Timber.d("[CatalogListRoute] clicked item[$catalogId], isRouting=$isRouting ")
103103
},
104104
)
105105
}

apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/screens/CompactTableTopCatalogListScreen.kt

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,24 +32,27 @@ import dev.marlonlom.apps.cappajv.ui.main.CappajvAppState
3232
* @author marlonlom
3333
*
3434
* @param appState Application ui state.
35-
* @param catalogItemsListState
36-
* @param catalogItems
37-
* @param categories
38-
* @param selectedCategory
39-
* @param onSelectedCategoryChanged
40-
* @param onCatalogItemSelected
35+
* @param isRouting True/False if should navigate through routing.
36+
* @param catalogItemsListState Catalog items lazy list state.
37+
* @param catalogItems Catalog items list.
38+
* @param categories Categories list.
39+
* @param selectedCategory Selected category name.
40+
* @param onSelectedCategoryChanged Action for category selected.
41+
* @param onCatalogItemSelected Action for catalog item selected.
42+
* @param modifier Modifier for this composable.
4143
*/
4244
@ExperimentalLayoutApi
4345
@ExperimentalFoundationApi
4446
@Composable
4547
fun CompactTableTopCatalogListScreen(
4648
appState: CappajvAppState,
49+
isRouting: Boolean,
4750
catalogItemsListState: LazyListState,
4851
catalogItems: List<CatalogItemTuple>,
4952
categories: List<String>,
5053
selectedCategory: String,
5154
onSelectedCategoryChanged: (String) -> Unit,
52-
onCatalogItemSelected: (Long) -> Unit,
55+
onCatalogItemSelected: (Long, Boolean) -> Unit,
5356
modifier: Modifier = Modifier,
5457
) {
5558

@@ -81,7 +84,7 @@ fun CompactTableTopCatalogListScreen(
8184
appState = appState,
8285
catalogItemsListState = catalogItemsListState,
8386
catalogTuples = catalogItems,
84-
onCatalogItemTupleClicked = { onCatalogItemSelected(it) },
87+
onCatalogItemTupleClicked = { onCatalogItemSelected(it, isRouting) },
8588
)
8689

8790
}

apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/screens/DefaultPortraitCatalogListScreen.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import dev.marlonlom.apps.cappajv.ui.main.CappajvAppState
2727
* @author marlonlom
2828
*
2929
* @param appState Application ui state.
30+
* @param isRouting True/False if should navigate through routing.
3031
* @param catalogItemsListState Catalog items lazy list state.
3132
* @param catalogItems Catalog items list.
3233
* @param categories Categories list.
@@ -40,12 +41,13 @@ import dev.marlonlom.apps.cappajv.ui.main.CappajvAppState
4041
@Composable
4142
fun DefaultPortraitCatalogListScreen(
4243
appState: CappajvAppState,
44+
isRouting: Boolean,
4345
catalogItemsListState: LazyListState,
4446
catalogItems: List<CatalogItemTuple>,
4547
categories: List<String>,
4648
selectedCategory: String,
4749
onSelectedCategoryChanged: (String) -> Unit,
48-
onCatalogItemSelected: (Long) -> Unit,
50+
onCatalogItemSelected: (Long, Boolean) -> Unit,
4951
modifier: Modifier = Modifier,
5052
) {
5153
Column(
@@ -65,7 +67,7 @@ fun DefaultPortraitCatalogListScreen(
6567
appState = appState,
6668
catalogItemsListState = catalogItemsListState,
6769
catalogTuples = catalogItems,
68-
onCatalogItemTupleClicked = { onCatalogItemSelected(it) },
70+
onCatalogItemTupleClicked = { onCatalogItemSelected(it, isRouting) },
6971
)
7072
}
7173
}

apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/screens/LandscapeCompactCatalogListScreen.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import dev.marlonlom.apps.cappajv.ui.main.scaffold.ScaffoldContentType
3232
* @author marlonlom
3333
*
3434
* @param appState Application ui state.
35+
* @param isRouting True/False if should navigate through routing.
3536
* @param catalogItemsListState Catalog items lazy list state.
3637
* @param catalogItems Catalog items list.
3738
* @param categories Categories list.
@@ -45,12 +46,13 @@ import dev.marlonlom.apps.cappajv.ui.main.scaffold.ScaffoldContentType
4546
@Composable
4647
fun LandscapeCompactCatalogListScreen(
4748
appState: CappajvAppState,
49+
isRouting: Boolean,
4850
catalogItemsListState: LazyListState,
4951
catalogItems: List<CatalogItemTuple>,
5052
categories: List<String>,
5153
selectedCategory: String,
5254
onSelectedCategoryChanged: (String) -> Unit,
53-
onCatalogItemSelected: (Long) -> Unit,
55+
onCatalogItemSelected: (Long, Boolean) -> Unit,
5456
modifier: Modifier = Modifier,
5557
) {
5658
val splitRatio = when {
@@ -82,7 +84,7 @@ fun LandscapeCompactCatalogListScreen(
8284
appState = appState,
8385
catalogItemsListState = catalogItemsListState,
8486
catalogTuples = catalogItems,
85-
onCatalogItemTupleClicked = onCatalogItemSelected,
87+
onCatalogItemTupleClicked = { onCatalogItemSelected(it, isRouting) },
8688
)
8789
}
8890
}

apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/screens/LandscapeTwoPaneCatalogListScreen.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import dev.marlonlom.apps.cappajv.ui.main.CappajvAppState
3535
* @author marlonlom
3636
*
3737
* @param appState Application ui state.
38+
* @param isRouting True/False if should navigate through routing.
3839
* @param catalogItemsListState Catalog items lazy list state.
3940
* @param catalogItems Catalog items list.
4041
* @param categories Categories list.
@@ -48,12 +49,13 @@ import dev.marlonlom.apps.cappajv.ui.main.CappajvAppState
4849
@Composable
4950
fun LandscapeTwoPaneCatalogListScreen(
5051
appState: CappajvAppState,
52+
isRouting: Boolean,
5153
catalogItemsListState: LazyListState,
5254
catalogItems: List<CatalogItemTuple>,
5355
categories: List<String>,
5456
selectedCategory: String,
5557
onSelectedCategoryChanged: (String) -> Unit,
56-
onCatalogItemSelected: (Long) -> Unit,
58+
onCatalogItemSelected: (Long, Boolean) -> Unit,
5759
modifier: Modifier = Modifier,
5860
) {
5961
val listColumnWidthFraction = when {
@@ -79,7 +81,7 @@ fun LandscapeTwoPaneCatalogListScreen(
7981
appState = appState,
8082
catalogItemsListState = catalogItemsListState,
8183
catalogTuples = catalogItems,
82-
onCatalogItemTupleClicked = { onCatalogItemSelected(it) },
84+
onCatalogItemTupleClicked = { onCatalogItemSelected(it, isRouting) },
8385
)
8486
}
8587
Column(

apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_list/screens/TableTopCatalogListScreen.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import androidx.compose.foundation.layout.safeContentPadding
1919
import androidx.compose.foundation.lazy.LazyListState
2020
import androidx.compose.material3.MaterialTheme
2121
import androidx.compose.runtime.Composable
22-
import androidx.compose.ui.Alignment
2322
import androidx.compose.ui.Modifier
2423
import androidx.compose.ui.unit.dp
2524
import dev.marlonlom.apps.cappajv.core.database.entities.CatalogItemTuple
@@ -37,6 +36,7 @@ import dev.marlonlom.apps.cappajv.ui.main.CappajvAppState
3736
* @author marlonlom
3837
*
3938
* @param appState Application ui state.
39+
* @param isRouting True/False if should navigate through routing.
4040
* @param catalogItemsListState Catalog items lazy list state.
4141
* @param catalogItems Catalog items list.
4242
* @param categories Categories list.
@@ -50,12 +50,13 @@ import dev.marlonlom.apps.cappajv.ui.main.CappajvAppState
5050
@Composable
5151
fun TableTopCatalogListScreen(
5252
appState: CappajvAppState,
53+
isRouting: Boolean,
5354
catalogItemsListState: LazyListState,
5455
catalogItems: List<CatalogItemTuple>,
5556
categories: List<String>,
5657
selectedCategory: String,
5758
onSelectedCategoryChanged: (String) -> Unit,
58-
onCatalogItemSelected: (Long) -> Unit,
59+
onCatalogItemSelected: (Long, Boolean) -> Unit,
5960
modifier: Modifier = Modifier,
6061
) {
6162
val hingeRatio = (appState.devicePosture as DevicePosture.Separating.TableTop).hingeRatio
@@ -81,7 +82,7 @@ fun TableTopCatalogListScreen(
8182
appState = appState,
8283
catalogItemsListState = catalogItemsListState,
8384
catalogTuples = catalogItems,
84-
onCatalogItemTupleClicked = onCatalogItemSelected,
85+
onCatalogItemTupleClicked = { onCatalogItemSelected(it, isRouting) },
8586
)
8687
}
8788
}

apps/mobile-app/src/main/kotlin/dev/marlonlom/apps/cappajv/features/catalog_search/CatalogSearchRoute.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ fun CatalogSearchRoute(
4242
showClearIcon = showClearIcon,
4343
onSearchReady = viewModel::onQueryTextChanged,
4444
searchResultUiState = searchResultState,
45-
onSearchedItemClicked = {
46-
Timber.d("[CatalogSearchRoute] clicked item[$it] ")
45+
onSearchedItemClicked = { catalogId, isRouting ->
46+
Timber.d("[CatalogSearchRoute] clicked item[$catalogId], isRouting=$isRouting ")
4747
},
4848
)
4949
}

0 commit comments

Comments
 (0)