From a686abc9d5e573687ffd12dd0c1d79309771a008 Mon Sep 17 00:00:00 2001 From: lihenggui Date: Wed, 3 Jul 2024 13:59:26 -0700 Subject: [PATCH] Migrate search to the multiplatform module --- feature/search/build.gradle.kts | 39 ++++++++++++++----- .../feature/search/SearchScreenTest.kt | 0 .../feature/search/SearchViewModelTest.kt | 0 .../composeResources}/values/strings.xml | 0 .../search/RecentSearchQueriesUiState.kt | 0 .../feature/search/SearchResultUiState.kt | 0 .../feature/search/SearchScreen.kt | 24 ++++++++---- .../SearchUiStatePreviewParameterProvider.kt | 0 .../feature/search/SearchViewModel.kt | 0 .../search/navigation/SearchNavigation.kt | 0 feature/search/src/main/AndroidManifest.xml | 17 -------- 11 files changed, 46 insertions(+), 34 deletions(-) rename feature/search/src/{androidTest => androidInstrumentedTest}/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreenTest.kt (100%) rename feature/search/src/{test => androidUnitTest}/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt (100%) rename feature/search/src/{main/res => commonMain/composeResources}/values/strings.xml (100%) rename feature/search/src/{main => commonMain}/kotlin/com/google/samples/apps/nowinandroid/feature/search/RecentSearchQueriesUiState.kt (100%) rename feature/search/src/{main => commonMain}/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchResultUiState.kt (100%) rename feature/search/src/{main => commonMain}/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt (94%) rename feature/search/src/{main => commonMain}/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchUiStatePreviewParameterProvider.kt (100%) rename feature/search/src/{main => commonMain}/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModel.kt (100%) rename feature/search/src/{main => commonMain}/kotlin/com/google/samples/apps/nowinandroid/feature/search/navigation/SearchNavigation.kt (100%) delete mode 100644 feature/search/src/main/AndroidManifest.xml diff --git a/feature/search/build.gradle.kts b/feature/search/build.gradle.kts index 98052e9ab..f0d95fb21 100644 --- a/feature/search/build.gradle.kts +++ b/feature/search/build.gradle.kts @@ -15,22 +15,41 @@ */ plugins { - alias(libs.plugins.nowinandroid.android.feature) - alias(libs.plugins.nowinandroid.android.library.compose) + alias(libs.plugins.nowinandroid.cmp.feature) alias(libs.plugins.nowinandroid.android.library.jacoco) + alias(libs.plugins.roborazzi) } android { namespace = "com.google.samples.apps.nowinandroid.feature.search" } -dependencies { - implementation(projects.core.data) - implementation(projects.core.domain) - implementation(projects.core.ui) - - testImplementation(projects.core.testing) - - androidTestImplementation(projects.core.testing) +kotlin { + sourceSets { + commonMain.dependencies { + implementation(projects.core.data) + implementation(projects.core.domain) + implementation(projects.core.ui) + implementation(compose.material3) + implementation(compose.foundation) + implementation(compose.ui) + implementation(compose.components.resources) + implementation(compose.components.uiToolingPreview) + } + commonMain.dependencies { + implementation(projects.core.testing) + } + androidUnitTest.dependencies { + implementation(libs.robolectric) + implementation(libs.roborazzi) + implementation(projects.core.screenshotTesting) + } + androidInstrumentedTest.dependencies { + implementation(projects.core.testing) + } + } } +compose.resources { + publicResClass = true +} diff --git a/feature/search/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreenTest.kt b/feature/search/src/androidInstrumentedTest/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreenTest.kt similarity index 100% rename from feature/search/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreenTest.kt rename to feature/search/src/androidInstrumentedTest/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreenTest.kt diff --git a/feature/search/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt b/feature/search/src/androidUnitTest/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt similarity index 100% rename from feature/search/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt rename to feature/search/src/androidUnitTest/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt diff --git a/feature/search/src/main/res/values/strings.xml b/feature/search/src/commonMain/composeResources/values/strings.xml similarity index 100% rename from feature/search/src/main/res/values/strings.xml rename to feature/search/src/commonMain/composeResources/values/strings.xml diff --git a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/RecentSearchQueriesUiState.kt b/feature/search/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/search/RecentSearchQueriesUiState.kt similarity index 100% rename from feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/RecentSearchQueriesUiState.kt rename to feature/search/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/search/RecentSearchQueriesUiState.kt diff --git a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchResultUiState.kt b/feature/search/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchResultUiState.kt similarity index 100% rename from feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchResultUiState.kt rename to feature/search/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchResultUiState.kt diff --git a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt b/feature/search/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt similarity index 94% rename from feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt rename to feature/search/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt index 86b1eb717..2ccb7974f 100644 --- a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt +++ b/feature/search/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt @@ -64,7 +64,6 @@ import androidx.compose.ui.input.key.key import androidx.compose.ui.input.key.onKeyEvent import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.TextStyle @@ -74,11 +73,7 @@ import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.text.withStyle -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel -import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.google.samples.apps.nowinandroid.core.designsystem.component.scrollbar.DraggableScrollbar import com.google.samples.apps.nowinandroid.core.designsystem.component.scrollbar.rememberDraggableScroller import com.google.samples.apps.nowinandroid.core.designsystem.component.scrollbar.scrollbarState @@ -91,8 +86,23 @@ import com.google.samples.apps.nowinandroid.core.ui.InterestsItem import com.google.samples.apps.nowinandroid.core.ui.NewsFeedUiState.Success import com.google.samples.apps.nowinandroid.core.ui.R.string import com.google.samples.apps.nowinandroid.core.ui.TrackScreenViewEvent +import com.google.samples.apps.nowinandroid.core.ui.collectAsStateWithLifecycle import com.google.samples.apps.nowinandroid.core.ui.newsFeed -import com.google.samples.apps.nowinandroid.feature.search.R as searchR +import nowinandroid.feature.search.generated.resources.feature_search_clear_recent_searches_content_desc +import nowinandroid.feature.search.generated.resources.feature_search_clear_search_text_content_desc +import nowinandroid.feature.search.generated.resources.feature_search_interests +import nowinandroid.feature.search.generated.resources.feature_search_not_ready +import nowinandroid.feature.search.generated.resources.feature_search_recent_searches +import nowinandroid.feature.search.generated.resources.feature_search_result_not_found +import nowinandroid.feature.search.generated.resources.feature_search_title +import nowinandroid.feature.search.generated.resources.feature_search_to_browse_topics +import nowinandroid.feature.search.generated.resources.feature_search_topics +import nowinandroid.feature.search.generated.resources.feature_search_try_another_search +import nowinandroid.feature.search.generated.resources.feature_search_updates +import org.jetbrains.compose.resources.stringResource +import org.jetbrains.compose.ui.tooling.preview.Preview +import org.jetbrains.compose.ui.tooling.preview.PreviewParameter +import nowinandroid.feature.search.generated.resources.Res as searchR @Composable internal fun SearchRoute( @@ -100,7 +110,7 @@ internal fun SearchRoute( onInterestsClick: () -> Unit, onTopicClick: (String) -> Unit, modifier: Modifier = Modifier, - searchViewModel: SearchViewModel = hiltViewModel(), + searchViewModel: SearchViewModel, ) { val recentSearchQueriesUiState by searchViewModel.recentSearchQueriesUiState.collectAsStateWithLifecycle() val searchResultUiState by searchViewModel.searchResultUiState.collectAsStateWithLifecycle() diff --git a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchUiStatePreviewParameterProvider.kt b/feature/search/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchUiStatePreviewParameterProvider.kt similarity index 100% rename from feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchUiStatePreviewParameterProvider.kt rename to feature/search/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchUiStatePreviewParameterProvider.kt diff --git a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModel.kt b/feature/search/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModel.kt similarity index 100% rename from feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModel.kt rename to feature/search/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModel.kt diff --git a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/navigation/SearchNavigation.kt b/feature/search/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/search/navigation/SearchNavigation.kt similarity index 100% rename from feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/navigation/SearchNavigation.kt rename to feature/search/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/search/navigation/SearchNavigation.kt diff --git a/feature/search/src/main/AndroidManifest.xml b/feature/search/src/main/AndroidManifest.xml deleted file mode 100644 index 312b22fd3..000000000 --- a/feature/search/src/main/AndroidManifest.xml +++ /dev/null @@ -1,17 +0,0 @@ - - -