Skip to content

feat: feature:detail - complete MVI detail screen with Stitch design … - #9

Merged
Prajwal-4121998 merged 1 commit into
developfrom
feature/feature-detail-navigation
Jul 23, 2026
Merged

Prajwal-4121998 merged 1 commit into
developfrom
feature/feature-detail-navigation

Conversation

@Prajwal-4121998

Copy link
Copy Markdown
Owner

…+ type-safe navigation

feat: type-safe Navigation 3

  • Replaced string-based Screen sealed class with @serializable route classes
  • CatalogRoute (object) and DetailRoute(productId: Int) as type-safe routes
  • NavHost updated to composable and composable
  • toRoute() for extracting navigation arguments
  • Compile-time route safety: wrong argument types fail at build, not runtime

feat: feature:detail module

  • DetailContract: DetailUiState data class, DetailIntent + DetailEffect sealed classes
  • DetailViewModel: MVI single processIntent() entry point, ProductRepository injection (direct repo injection — no use case needed for single pass-through call)
  • DetailScreen: transparent overlay top bar (back + share + cart), hero image with gradient overlay, content card overlapping hero (-48dp offset), brand label in primary + uppercase, rating pill, in-stock emerald badge, price with strikethrough + discount %, features bento grid, expandable description, static reviews section with avatar initials, sticky bottom bar
  • DetailBottomBar: outlined wishlist button (border-2 primary), secondary-container Add to Cart button with shopping bag icon (Stitch spec)
  • 6 ViewModel unit tests: initial state, load success, load not found, toggle wishlist, toggle description, navigate back effect, add to cart effect

ci: JaCoCo updated for feature:detail

  • jacoco plugin applied, exec file at build/jacoco/testDebugUnitTest.exec
  • DetailViewModel threshold added to coverage verification

deps: kotlinx-serialization added for type-safe navigation

…+ type-safe navigation

feat: type-safe Navigation 3
- Replaced string-based Screen sealed class with @serializable route classes
- CatalogRoute (object) and DetailRoute(productId: Int) as type-safe routes
- NavHost updated to composable<CatalogRoute> and composable<DetailRoute>
- toRoute<DetailRoute>() for extracting navigation arguments
- Compile-time route safety: wrong argument types fail at build, not runtime

feat: feature:detail module
- DetailContract: DetailUiState data class, DetailIntent + DetailEffect sealed classes
- DetailViewModel: MVI single processIntent() entry point, ProductRepository injection
  (direct repo injection — no use case needed for single pass-through call)
- DetailScreen: transparent overlay top bar (back + share + cart),
  hero image with gradient overlay, content card overlapping hero (-48dp offset),
  brand label in primary + uppercase, rating pill, in-stock emerald badge,
  price with strikethrough + discount %, features bento grid, expandable description,
  static reviews section with avatar initials, sticky bottom bar
- DetailBottomBar: outlined wishlist button (border-2 primary), secondary-container
  Add to Cart button with shopping bag icon (Stitch spec)
- 6 ViewModel unit tests: initial state, load success, load not found,
  toggle wishlist, toggle description, navigate back effect, add to cart effect

ci: JaCoCo updated for feature:detail
- jacoco plugin applied, exec file at build/jacoco/testDebugUnitTest.exec
- DetailViewModel threshold added to coverage verification

deps: kotlinx-serialization added for type-safe navigation
@Prajwal-4121998
Prajwal-4121998 merged commit a4a79a8 into develop Jul 23, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant