This commit refactors the navigation state management by renaming `NiaNavigatorState` to `NavigationState` to make it more generic.
Specific changes include:
- Renamed `NiaNavigatorState` to `NavigationState`.
- Renamed `NiaNavigatorProvider` to `NavigationStateProvider`.
- Updated all usages of the renamed classes, including `NiaNavigator`, `NiaBackStackViewModel`, and various tests.
- Replaced the `getEntries()` extension function with `toEntries()`.
- Added numerous TODOs to identify areas for future improvement, such as removing dependencies on `SavedStateHandle` for navigation state, simplifying event handling in ViewModels, and documenting the new navigation components.
Made NiaNavigator a stateless class only responsibly for navigating and pop (modifying backStack).
Navigation state now lives in a new class called NiaNavigatorState.
The state of this class is saved and restored by ViewModel.
Gradle 9.0.0 has the new enforcement that Test task runs that
have sources but no tests run should fail. Without this change we get
Execution failed for task ':core:analytics:testDemoDebugUnitTest'.
> There are test sources present and no filters are applied, but the test task did not discover any tests to execute. This is likely due to a misconfiguration. Please check your test configuration. If this is not a misconfiguration, this error can be disabled by setting the 'failOnNoDiscoveredTests' property to false.
We get this because before this change AndroidCompose was always setting
isIncludeAndroidResources = true which generates a source to the test
task and in the case of :core:analytics it is the only source.
Instead of setting isIncludeAndroidResources in AndroidCompose move to
setting it in relevant build.gradle.kts files (most already had it)
* Add if state to prevent blank query.
* Create test emptySearchText_NotAddToRecentSearches
- For empty query not add in recent query list.
* Apply early return.
* assertEquals to assertNull.
Co-authored-by: Simon Marquis <contact@simon-marquis.fr>
* Import org.junit.Assert.assertNull
* Change org.junit.Assert.assertNull to kotlin.test.assertNull.
Change-Id: I60083b0b9a1dcaed84d957b49c91e5163d5659d6
* Add 'or' to prevent search when query is blank.
Change-Id: If498de05889d6d5946b1bbb1d1c10cb311bb9b52
* Create stateIsEmptyQuery_withThreeWhiteSpacesSearchQuery test.
Change-Id: I6d6e8f9fe988ca83fae484e4f2338ad6fe58b676
* Add UI logic to prevent blank text search in SearchScreen.
- Early return to do not call onSearchExplicitlyTriggered()
Change-Id: I28db284eac9059fb6f48dd718721a1fc5fdb8f7a
* Apply trim at query to remove whitespace.
Change-Id: Id349af4bb1af3d0f1c3973e6fb9e6f3e7b924d9b
* Create test stateIsEmptyQuery_withThreeWhiteSpacesAndOneLetterSearchQuery
Change-Id: Iee59f6085e4045b2e3c532f78804926290b6c6c5
* Update feature/search/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt
Change name to emptySearchText_isNotAddedTorecentSearches()
Co-authored-by: Don Turner <dturner@users.noreply.github.com>
* Change name to searchTextWithThreeSpaces_isEmptyQuery()
Co-authored-by: Don Turner <dturner@users.noreply.github.com>
* Change name to searchTextWithThreeWhiteSpacesAndOneCharacter_isEmptyQuery()
Change-Id: I4c82b12e2c9bd4ff480e94061caf257a603e38da
* Revert "Change name to searchTextWithThreeWhiteSpacesAndOneCharacter_isEmptyQuery()"
This reverts commit e4c176598a.
* Change name to searchTextWithThreeSpacesAndOneLetter_isEmptyQuery
Co-authored-by: Don Turner <dturner@users.noreply.github.com>
* Add end curly bracket.
Change-Id: I7bd113e7b65d646f5321e34a7df2868f6e239cad
---------
Co-authored-by: Simon Marquis <contact@simon-marquis.fr>
Co-authored-by: Don Turner <dturner@users.noreply.github.com>