diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index fe3e2ec49..b07533105 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -67,12 +67,12 @@ android {
}
dependencies {
- implementation(projects.feature.interests)
- implementation(projects.feature.foryou)
- implementation(projects.feature.bookmarks)
- implementation(projects.feature.topic)
- implementation(projects.feature.search)
- implementation(projects.feature.settings)
+ implementation(projects.feature.interests.api)
+ implementation(projects.feature.foryou.api)
+ implementation(projects.feature.bookmarks.api)
+ implementation(projects.feature.topic.api)
+ implementation(projects.feature.search.api)
+ implementation(projects.feature.settings.api)
implementation(projects.core.common)
implementation(projects.core.ui)
diff --git a/app/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/ui/NavigationTest.kt b/app/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/ui/NavigationTest.kt
index 54053a1bb..8d479e3b1 100644
--- a/app/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/ui/NavigationTest.kt
+++ b/app/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/ui/NavigationTest.kt
@@ -47,10 +47,10 @@ import org.junit.Before
import org.junit.Rule
import org.junit.Test
import javax.inject.Inject
-import com.google.samples.apps.nowinandroid.feature.bookmarks.R as BookmarksR
-import com.google.samples.apps.nowinandroid.feature.foryou.R as FeatureForyouR
-import com.google.samples.apps.nowinandroid.feature.search.R as FeatureSearchR
-import com.google.samples.apps.nowinandroid.feature.settings.R as SettingsR
+import com.google.samples.apps.nowinandroid.feature.bookmarks.api.R as BookmarksR
+import com.google.samples.apps.nowinandroid.feature.foryou.api.R as FeatureForyouR
+import com.google.samples.apps.nowinandroid.feature.search.api.R as FeatureSearchR
+import com.google.samples.apps.nowinandroid.feature.settings.api.R as SettingsR
/**
* Tests all the navigation flows that are handled by the navigation library.
@@ -83,8 +83,8 @@ class NavigationTest {
lateinit var newsRepository: NewsRepository
// The strings used for matching in these tests
- private val navigateUp by composeTestRule.stringResource(FeatureForyouR.string.feature_foryou_navigate_up)
- private val forYou by composeTestRule.stringResource(FeatureForyouR.string.feature_foryou_title)
+ private val navigateUp by composeTestRule.stringResource(FeatureForyouR.string.feature_foryou_api_navigate_up)
+ private val forYou by composeTestRule.stringResource(FeatureForyouR.string.feature_foryou_api_title)
private val interests by composeTestRule.stringResource(FeatureSearchR.string.feature_search_interests)
private val sampleTopic = "Headlines"
private val appName by composeTestRule.stringResource(R.string.app_name)
diff --git a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/navigation/NiaNavHost.kt b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/navigation/NiaNavHost.kt
index e079c98f4..1f8f88686 100644
--- a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/navigation/NiaNavHost.kt
+++ b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/navigation/NiaNavHost.kt
@@ -19,13 +19,13 @@ package com.google.samples.apps.nowinandroid.navigation
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.navigation.compose.NavHost
-import com.google.samples.apps.nowinandroid.feature.bookmarks.navigation.bookmarksScreen
-import com.google.samples.apps.nowinandroid.feature.foryou.navigation.ForYouBaseRoute
-import com.google.samples.apps.nowinandroid.feature.foryou.navigation.forYouSection
-import com.google.samples.apps.nowinandroid.feature.interests.navigation.navigateToInterests
-import com.google.samples.apps.nowinandroid.feature.search.navigation.searchScreen
-import com.google.samples.apps.nowinandroid.feature.topic.navigation.navigateToTopic
-import com.google.samples.apps.nowinandroid.feature.topic.navigation.topicScreen
+import com.google.samples.apps.nowinandroid.feature.bookmarks.api.navigation.bookmarksScreen
+import com.google.samples.apps.nowinandroid.feature.foryou.api.navigation.ForYouBaseRoute
+import com.google.samples.apps.nowinandroid.feature.foryou.api.navigation.forYouSection
+import com.google.samples.apps.nowinandroid.feature.interests.api.navigation.navigateToInterests
+import com.google.samples.apps.nowinandroid.feature.search.api.navigation.searchScreen
+import com.google.samples.apps.nowinandroid.feature.topic.api.navigation.navigateToTopic
+import com.google.samples.apps.nowinandroid.feature.topic.api.navigation.topicScreen
import com.google.samples.apps.nowinandroid.navigation.TopLevelDestination.INTERESTS
import com.google.samples.apps.nowinandroid.ui.NiaAppState
import com.google.samples.apps.nowinandroid.ui.interests2pane.interestsListDetailScreen
diff --git a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/navigation/TopLevelDestination.kt b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/navigation/TopLevelDestination.kt
index 429e626ff..d43101078 100644
--- a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/navigation/TopLevelDestination.kt
+++ b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/navigation/TopLevelDestination.kt
@@ -20,14 +20,14 @@ import androidx.annotation.StringRes
import androidx.compose.ui.graphics.vector.ImageVector
import com.google.samples.apps.nowinandroid.R
import com.google.samples.apps.nowinandroid.core.designsystem.icon.NiaIcons
-import com.google.samples.apps.nowinandroid.feature.bookmarks.navigation.BookmarksRoute
-import com.google.samples.apps.nowinandroid.feature.foryou.navigation.ForYouBaseRoute
-import com.google.samples.apps.nowinandroid.feature.foryou.navigation.ForYouRoute
-import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsRoute
+import com.google.samples.apps.nowinandroid.feature.bookmarks.api.navigation.BookmarksRoute
+import com.google.samples.apps.nowinandroid.feature.foryou.api.navigation.ForYouBaseRoute
+import com.google.samples.apps.nowinandroid.feature.foryou.api.navigation.ForYouRoute
+import com.google.samples.apps.nowinandroid.feature.interests.api.navigation.InterestsRoute
import kotlin.reflect.KClass
-import com.google.samples.apps.nowinandroid.feature.bookmarks.R as bookmarksR
-import com.google.samples.apps.nowinandroid.feature.foryou.R as forYouR
-import com.google.samples.apps.nowinandroid.feature.search.R as searchR
+import com.google.samples.apps.nowinandroid.feature.bookmarks.api.R as bookmarksR
+import com.google.samples.apps.nowinandroid.feature.foryou.api.R as forYouR
+import com.google.samples.apps.nowinandroid.feature.search.api.R as searchR
/**
* Type for the top level destinations in the application. Contains metadata about the destination
@@ -54,7 +54,7 @@ enum class TopLevelDestination(
FOR_YOU(
selectedIcon = NiaIcons.Upcoming,
unselectedIcon = NiaIcons.UpcomingBorder,
- iconTextId = forYouR.string.feature_foryou_title,
+ iconTextId = forYouR.string.feature_foryou_api_title,
titleTextId = R.string.app_name,
route = ForYouRoute::class,
baseRoute = ForYouBaseRoute::class,
@@ -62,15 +62,15 @@ enum class TopLevelDestination(
BOOKMARKS(
selectedIcon = NiaIcons.Bookmarks,
unselectedIcon = NiaIcons.BookmarksBorder,
- iconTextId = bookmarksR.string.feature_bookmarks_title,
- titleTextId = bookmarksR.string.feature_bookmarks_title,
+ iconTextId = bookmarksR.string.feature_bookmarks_api_title,
+ titleTextId = bookmarksR.string.feature_bookmarks_api_title,
route = BookmarksRoute::class,
),
INTERESTS(
selectedIcon = NiaIcons.Grid3x3,
unselectedIcon = NiaIcons.Grid3x3,
- iconTextId = searchR.string.feature_search_interests,
- titleTextId = searchR.string.feature_search_interests,
+ iconTextId = searchR.string.feature_search_api_interests,
+ titleTextId = searchR.string.feature_search_api_interests,
route = InterestsRoute::class,
),
}
diff --git a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/NiaApp.kt b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/NiaApp.kt
index b237684ef..fe2d758ee 100644
--- a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/NiaApp.kt
+++ b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/NiaApp.kt
@@ -71,11 +71,11 @@ import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaTopAp
import com.google.samples.apps.nowinandroid.core.designsystem.icon.NiaIcons
import com.google.samples.apps.nowinandroid.core.designsystem.theme.GradientColors
import com.google.samples.apps.nowinandroid.core.designsystem.theme.LocalGradientColors
-import com.google.samples.apps.nowinandroid.feature.settings.SettingsDialog
+import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsDialog
import com.google.samples.apps.nowinandroid.navigation.NiaNavHost
import com.google.samples.apps.nowinandroid.navigation.TopLevelDestination
import kotlin.reflect.KClass
-import com.google.samples.apps.nowinandroid.feature.settings.R as settingsR
+import com.google.samples.apps.nowinandroid.feature.settings.api.R as settingsR
@Composable
fun NiaApp(
diff --git a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/NiaAppState.kt b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/NiaAppState.kt
index 7c892c854..4c1d23318 100644
--- a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/NiaAppState.kt
+++ b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/NiaAppState.kt
@@ -34,10 +34,10 @@ import com.google.samples.apps.nowinandroid.core.data.repository.UserNewsResourc
import com.google.samples.apps.nowinandroid.core.data.util.NetworkMonitor
import com.google.samples.apps.nowinandroid.core.data.util.TimeZoneMonitor
import com.google.samples.apps.nowinandroid.core.ui.TrackDisposableJank
-import com.google.samples.apps.nowinandroid.feature.bookmarks.navigation.navigateToBookmarks
-import com.google.samples.apps.nowinandroid.feature.foryou.navigation.navigateToForYou
-import com.google.samples.apps.nowinandroid.feature.interests.navigation.navigateToInterests
-import com.google.samples.apps.nowinandroid.feature.search.navigation.navigateToSearch
+import com.google.samples.apps.nowinandroid.feature.bookmarks.api.navigation.navigateToBookmarks
+import com.google.samples.apps.nowinandroid.feature.foryou.api.navigation.navigateToForYou
+import com.google.samples.apps.nowinandroid.feature.interests.api.navigation.navigateToInterests
+import com.google.samples.apps.nowinandroid.feature.search.api.navigation.navigateToSearch
import com.google.samples.apps.nowinandroid.navigation.TopLevelDestination
import com.google.samples.apps.nowinandroid.navigation.TopLevelDestination.BOOKMARKS
import com.google.samples.apps.nowinandroid.navigation.TopLevelDestination.FOR_YOU
diff --git a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/Interests2PaneViewModel.kt b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/Interests2PaneViewModel.kt
index 3d37f3417..83978a6f4 100644
--- a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/Interests2PaneViewModel.kt
+++ b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/Interests2PaneViewModel.kt
@@ -19,7 +19,7 @@ package com.google.samples.apps.nowinandroid.ui.interests2pane
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.navigation.toRoute
-import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsRoute
+import com.google.samples.apps.nowinandroid.feature.interests.api.navigation.InterestsRoute
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.StateFlow
import javax.inject.Inject
diff --git a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/InterestsListDetailScreen.kt b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/InterestsListDetailScreen.kt
index c0f425c65..07e93eee1 100644
--- a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/InterestsListDetailScreen.kt
+++ b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/InterestsListDetailScreen.kt
@@ -52,12 +52,12 @@ import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
-import com.google.samples.apps.nowinandroid.feature.interests.InterestsRoute
-import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsRoute
-import com.google.samples.apps.nowinandroid.feature.topic.TopicDetailPlaceholder
-import com.google.samples.apps.nowinandroid.feature.topic.TopicScreen
-import com.google.samples.apps.nowinandroid.feature.topic.TopicViewModel
-import com.google.samples.apps.nowinandroid.feature.topic.navigation.TopicRoute
+import com.google.samples.apps.nowinandroid.feature.interests.api.InterestsRoute
+import com.google.samples.apps.nowinandroid.feature.interests.api.navigation.InterestsRoute
+import com.google.samples.apps.nowinandroid.feature.topic.api.TopicDetailPlaceholder
+import com.google.samples.apps.nowinandroid.feature.topic.api.TopicScreen
+import com.google.samples.apps.nowinandroid.feature.topic.api.TopicViewModel
+import com.google.samples.apps.nowinandroid.feature.topic.api.navigation.TopicRoute
import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable
import kotlin.math.max
diff --git a/app/src/testDemo/kotlin/com/google/samples/apps/nowinandroid/ui/InterestsListDetailScreenTest.kt b/app/src/testDemo/kotlin/com/google/samples/apps/nowinandroid/ui/InterestsListDetailScreenTest.kt
index 1062c7e56..682f4983f 100644
--- a/app/src/testDemo/kotlin/com/google/samples/apps/nowinandroid/ui/InterestsListDetailScreenTest.kt
+++ b/app/src/testDemo/kotlin/com/google/samples/apps/nowinandroid/ui/InterestsListDetailScreenTest.kt
@@ -45,7 +45,7 @@ import org.robolectric.annotation.Config
import javax.inject.Inject
import kotlin.properties.ReadOnlyProperty
import kotlin.test.assertTrue
-import com.google.samples.apps.nowinandroid.feature.topic.R as FeatureTopicR
+import com.google.samples.apps.nowinandroid.feature.topic.api.R as FeatureTopicR
private const val EXPANDED_WIDTH = "w1200dp-h840dp"
private const val COMPACT_WIDTH = "w412dp-h915dp"
diff --git a/feature/bookmarks/README.md b/feature/bookmarks/README.md
deleted file mode 100644
index 54cbf91d0..000000000
--- a/feature/bookmarks/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# :feature:bookmarks module
-## Dependency graph
-
diff --git a/feature/bookmarks/.gitignore b/feature/bookmarks/api/.gitignore
similarity index 100%
rename from feature/bookmarks/.gitignore
rename to feature/bookmarks/api/.gitignore
diff --git a/feature/bookmarks/build.gradle.kts b/feature/bookmarks/api/build.gradle.kts
similarity index 98%
rename from feature/bookmarks/build.gradle.kts
rename to feature/bookmarks/api/build.gradle.kts
index 51a15ce7a..f12a39f7d 100644
--- a/feature/bookmarks/build.gradle.kts
+++ b/feature/bookmarks/api/build.gradle.kts
@@ -21,7 +21,7 @@ plugins {
}
android {
- namespace = "com.google.samples.apps.nowinandroid.feature.bookmarks"
+ namespace = "com.google.samples.apps.nowinandroid.feature.bookmarks.api"
}
dependencies {
diff --git a/feature/bookmarks/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreenTest.kt b/feature/bookmarks/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/api/BookmarksScreenTest.kt
similarity index 98%
rename from feature/bookmarks/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreenTest.kt
rename to feature/bookmarks/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/api/BookmarksScreenTest.kt
index dd01b84c9..78f29f92a 100644
--- a/feature/bookmarks/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreenTest.kt
+++ b/feature/bookmarks/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/api/BookmarksScreenTest.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.bookmarks
+package com.google.samples.apps.nowinandroid.feature.bookmarks.api
import androidx.activity.ComponentActivity
import androidx.compose.runtime.CompositionLocalProvider
@@ -35,7 +35,6 @@ import androidx.lifecycle.Lifecycle
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.lifecycle.testing.TestLifecycleOwner
import com.google.samples.apps.nowinandroid.core.testing.data.userNewsResourcesTestData
-import com.google.samples.apps.nowinandroid.core.ui.NewsFeedUiState
import kotlinx.coroutines.test.runTest
import org.junit.Rule
import org.junit.Test
diff --git a/feature/bookmarks/src/main/AndroidManifest.xml b/feature/bookmarks/api/src/main/AndroidManifest.xml
similarity index 100%
rename from feature/bookmarks/src/main/AndroidManifest.xml
rename to feature/bookmarks/api/src/main/AndroidManifest.xml
diff --git a/feature/bookmarks/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreen.kt b/feature/bookmarks/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/api/BookmarksScreen.kt
similarity index 98%
rename from feature/bookmarks/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreen.kt
rename to feature/bookmarks/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/api/BookmarksScreen.kt
index 7c229c5ea..019fb4609 100644
--- a/feature/bookmarks/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreen.kt
+++ b/feature/bookmarks/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/api/BookmarksScreen.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.bookmarks
+package com.google.samples.apps.nowinandroid.feature.bookmarks.api
import androidx.annotation.VisibleForTesting
import androidx.compose.foundation.Image
@@ -112,8 +112,8 @@ internal fun BookmarksScreen(
undoBookmarkRemoval: () -> Unit = {},
clearUndoState: () -> Unit = {},
) {
- val bookmarkRemovedMessage = stringResource(id = R.string.feature_bookmarks_removed)
- val undoText = stringResource(id = R.string.feature_bookmarks_undo)
+ val bookmarkRemovedMessage = stringResource(id = R.string.feature_bookmarks_api_removed)
+ val undoText = stringResource(id = R.string.feature_bookmarks_api_undo)
LaunchedEffect(shouldDisplayUndoBookmark) {
if (shouldDisplayUndoBookmark) {
@@ -155,7 +155,7 @@ private fun LoadingState(modifier: Modifier = Modifier) {
.fillMaxWidth()
.wrapContentSize()
.testTag("forYou:loading"),
- contentDesc = stringResource(id = R.string.feature_bookmarks_loading),
+ contentDesc = stringResource(id = R.string.feature_bookmarks_api_loading),
)
}
@@ -228,7 +228,7 @@ private fun EmptyState(modifier: Modifier = Modifier) {
val iconTint = LocalTintTheme.current.iconTint
Image(
modifier = Modifier.fillMaxWidth(),
- painter = painterResource(id = R.drawable.feature_bookmarks_img_empty_bookmarks),
+ painter = painterResource(id = R.drawable.feature_bookmarks_api_mg_empty_bookmarks),
colorFilter = if (iconTint != Color.Unspecified) ColorFilter.tint(iconTint) else null,
contentDescription = null,
)
@@ -236,7 +236,7 @@ private fun EmptyState(modifier: Modifier = Modifier) {
Spacer(modifier = Modifier.height(48.dp))
Text(
- text = stringResource(id = R.string.feature_bookmarks_empty_error),
+ text = stringResource(id = R.string.feature_bookmarks_api_empty_error),
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
style = MaterialTheme.typography.titleMedium,
@@ -246,7 +246,7 @@ private fun EmptyState(modifier: Modifier = Modifier) {
Spacer(modifier = Modifier.height(8.dp))
Text(
- text = stringResource(id = R.string.feature_bookmarks_empty_description),
+ text = stringResource(id = R.string.feature_bookmarks_api_empty_description),
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
style = MaterialTheme.typography.bodyMedium,
diff --git a/feature/bookmarks/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModel.kt b/feature/bookmarks/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/api/BookmarksViewModel.kt
similarity index 97%
rename from feature/bookmarks/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModel.kt
rename to feature/bookmarks/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/api/BookmarksViewModel.kt
index f93602485..7b8945eb2 100644
--- a/feature/bookmarks/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModel.kt
+++ b/feature/bookmarks/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/api/BookmarksViewModel.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.bookmarks
+package com.google.samples.apps.nowinandroid.feature.bookmarks.api
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
diff --git a/feature/bookmarks/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/navigation/BookmarksNavigation.kt b/feature/bookmarks/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/api/navigation/BookmarksNavigation.kt
similarity index 88%
rename from feature/bookmarks/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/navigation/BookmarksNavigation.kt
rename to feature/bookmarks/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/api/navigation/BookmarksNavigation.kt
index ea8d525ab..23b48b17a 100644
--- a/feature/bookmarks/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/navigation/BookmarksNavigation.kt
+++ b/feature/bookmarks/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/api/navigation/BookmarksNavigation.kt
@@ -14,13 +14,13 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.bookmarks.navigation
+package com.google.samples.apps.nowinandroid.feature.bookmarks.api.navigation
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
-import com.google.samples.apps.nowinandroid.feature.bookmarks.BookmarksRoute
+import com.google.samples.apps.nowinandroid.feature.bookmarks.api.BookmarksRoute
import kotlinx.serialization.Serializable
@Serializable object BookmarksRoute
diff --git a/feature/bookmarks/src/main/res/drawable/feature_bookmarks_img_empty_bookmarks.xml b/feature/bookmarks/api/src/main/res/drawable/feature_bookmarks_api_mg_empty_bookmarks.xml
similarity index 100%
rename from feature/bookmarks/src/main/res/drawable/feature_bookmarks_img_empty_bookmarks.xml
rename to feature/bookmarks/api/src/main/res/drawable/feature_bookmarks_api_mg_empty_bookmarks.xml
diff --git a/feature/bookmarks/src/main/res/values/strings.xml b/feature/bookmarks/api/src/main/res/values/strings.xml
similarity index 59%
rename from feature/bookmarks/src/main/res/values/strings.xml
rename to feature/bookmarks/api/src/main/res/values/strings.xml
index 6e2b23043..98f4b4a8d 100644
--- a/feature/bookmarks/src/main/res/values/strings.xml
+++ b/feature/bookmarks/api/src/main/res/values/strings.xml
@@ -15,10 +15,10 @@
limitations under the License.
-->
- Saved
- Loading saved…
- No saved updates
- Updates you save will be stored here\nto read later
- Bookmark removed
- UNDO
+ Saved
+ Loading saved…
+ No saved updates
+ Updates you save will be stored here\nto read later
+ Bookmark removed
+ UNDO
diff --git a/feature/bookmarks/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModelTest.kt b/feature/bookmarks/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/api/BookmarksViewModelTest.kt
similarity index 97%
rename from feature/bookmarks/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModelTest.kt
rename to feature/bookmarks/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/api/BookmarksViewModelTest.kt
index aa42adae2..ae3b488c7 100644
--- a/feature/bookmarks/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModelTest.kt
+++ b/feature/bookmarks/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/api/BookmarksViewModelTest.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.bookmarks
+package com.google.samples.apps.nowinandroid.feature.bookmarks.api
import com.google.samples.apps.nowinandroid.core.data.repository.CompositeUserNewsResourceRepository
import com.google.samples.apps.nowinandroid.core.testing.data.newsResourcesTestData
@@ -23,6 +23,7 @@ import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserData
import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule
import com.google.samples.apps.nowinandroid.core.ui.NewsFeedUiState.Loading
import com.google.samples.apps.nowinandroid.core.ui.NewsFeedUiState.Success
+import com.google.samples.apps.nowinandroid.feature.bookmarks.api.BookmarksViewModel
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.UnconfinedTestDispatcher
diff --git a/feature/foryou/.gitignore b/feature/bookmarks/impl/.gitignore
similarity index 100%
rename from feature/foryou/.gitignore
rename to feature/bookmarks/impl/.gitignore
diff --git a/feature/bookmarks/impl/build.gradle.kts b/feature/bookmarks/impl/build.gradle.kts
new file mode 100644
index 000000000..f46554044
--- /dev/null
+++ b/feature/bookmarks/impl/build.gradle.kts
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+plugins {
+ alias(libs.plugins.nowinandroid.android.feature)
+ alias(libs.plugins.nowinandroid.android.library.compose)
+}
+
+android {
+ namespace = "com.google.samples.apps.nowinandroid.feature.bookmarks.impl"
+}
+
+dependencies { }
diff --git a/feature/interests/.gitignore b/feature/foryou/api/.gitignore
similarity index 100%
rename from feature/interests/.gitignore
rename to feature/foryou/api/.gitignore
diff --git a/feature/foryou/build.gradle.kts b/feature/foryou/api/build.gradle.kts
similarity index 99%
rename from feature/foryou/build.gradle.kts
rename to feature/foryou/api/build.gradle.kts
index de1af7540..2ee38bfae 100644
--- a/feature/foryou/build.gradle.kts
+++ b/feature/foryou/api/build.gradle.kts
@@ -22,7 +22,7 @@ plugins {
}
android {
- namespace = "com.google.samples.apps.nowinandroid.feature.foryou"
+ namespace = "com.google.samples.apps.nowinandroid.feature.foryou.api"
testOptions.unitTests.isIncludeAndroidResources = true
}
diff --git a/feature/foryou/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenTest.kt b/feature/foryou/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/ForYouScreenTest.kt
similarity index 97%
rename from feature/foryou/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenTest.kt
rename to feature/foryou/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/ForYouScreenTest.kt
index c3ec5c560..46905fd8b 100644
--- a/feature/foryou/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenTest.kt
+++ b/feature/foryou/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/ForYouScreenTest.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.foryou
+package com.google.samples.apps.nowinandroid.feature.foryou.api
import androidx.activity.ComponentActivity
import androidx.compose.foundation.layout.Box
@@ -45,7 +45,7 @@ class ForYouScreenTest {
private val doneButtonMatcher by lazy {
hasText(
- composeTestRule.activity.resources.getString(R.string.feature_foryou_done),
+ composeTestRule.activity.resources.getString(R.string.feature_foryou_api_done),
)
}
@@ -70,7 +70,7 @@ class ForYouScreenTest {
composeTestRule
.onNodeWithContentDescription(
- composeTestRule.activity.resources.getString(R.string.feature_foryou_loading),
+ composeTestRule.activity.resources.getString(R.string.feature_foryou_api_loading),
)
.assertExists()
}
@@ -96,7 +96,7 @@ class ForYouScreenTest {
composeTestRule
.onNodeWithContentDescription(
- composeTestRule.activity.resources.getString(R.string.feature_foryou_loading),
+ composeTestRule.activity.resources.getString(R.string.feature_foryou_api_loading),
)
.assertExists()
}
@@ -215,7 +215,7 @@ class ForYouScreenTest {
composeTestRule
.onNodeWithContentDescription(
- composeTestRule.activity.resources.getString(R.string.feature_foryou_loading),
+ composeTestRule.activity.resources.getString(R.string.feature_foryou_api_loading),
)
.assertExists()
}
@@ -241,7 +241,7 @@ class ForYouScreenTest {
composeTestRule
.onNodeWithContentDescription(
- composeTestRule.activity.resources.getString(R.string.feature_foryou_loading),
+ composeTestRule.activity.resources.getString(R.string.feature_foryou_api_loading),
)
.assertExists()
}
diff --git a/feature/foryou/src/main/AndroidManifest.xml b/feature/foryou/api/src/main/AndroidManifest.xml
similarity index 100%
rename from feature/foryou/src/main/AndroidManifest.xml
rename to feature/foryou/api/src/main/AndroidManifest.xml
diff --git a/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt b/feature/foryou/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/ForYouScreen.kt
similarity index 99%
rename from feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt
rename to feature/foryou/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/ForYouScreen.kt
index 1a3325996..0b32cc6a6 100644
--- a/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt
+++ b/feature/foryou/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/ForYouScreen.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.foryou
+package com.google.samples.apps.nowinandroid.feature.foryou.api
import android.net.Uri
import android.os.Build.VERSION
@@ -215,7 +215,7 @@ internal fun ForYouScreen(
targetOffsetY = { fullHeight -> -fullHeight },
) + fadeOut(),
) {
- val loadingContentDescription = stringResource(id = R.string.feature_foryou_loading)
+ val loadingContentDescription = stringResource(id = R.string.feature_foryou_api_loading)
Box(
modifier = Modifier
.fillMaxWidth()
@@ -270,7 +270,7 @@ private fun LazyStaggeredGridScope.onboarding(
item(span = StaggeredGridItemSpan.FullLine, contentType = "onboarding") {
Column(modifier = interestsItemModifier) {
Text(
- text = stringResource(R.string.feature_foryou_onboarding_guidance_title),
+ text = stringResource(R.string.feature_foryou_api_onboarding_guidance_title),
textAlign = TextAlign.Center,
modifier = Modifier
.fillMaxWidth()
@@ -278,7 +278,7 @@ private fun LazyStaggeredGridScope.onboarding(
style = MaterialTheme.typography.titleMedium,
)
Text(
- text = stringResource(R.string.feature_foryou_onboarding_guidance_subtitle),
+ text = stringResource(R.string.feature_foryou_api_onboarding_guidance_subtitle),
modifier = Modifier
.fillMaxWidth()
.padding(top = 8.dp, start = 24.dp, end = 24.dp),
@@ -304,7 +304,7 @@ private fun LazyStaggeredGridScope.onboarding(
.fillMaxWidth(),
) {
Text(
- text = stringResource(R.string.feature_foryou_done),
+ text = stringResource(R.string.feature_foryou_api_done),
)
}
}
@@ -433,7 +433,7 @@ fun TopicIcon(
modifier: Modifier = Modifier,
) {
DynamicAsyncImage(
- placeholder = painterResource(R.drawable.feature_foryou_ic_icon_placeholder),
+ placeholder = painterResource(R.drawable.feature_foryou_api_ic_icon_placeholder),
imageUrl = imageUrl,
// decorative
contentDescription = null,
diff --git a/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt b/feature/foryou/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/ForYouViewModel.kt
similarity index 98%
rename from feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt
rename to feature/foryou/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/ForYouViewModel.kt
index 4b6cd39c9..6fb44a5f5 100644
--- a/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt
+++ b/feature/foryou/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/ForYouViewModel.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.foryou
+package com.google.samples.apps.nowinandroid.feature.foryou.api
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
diff --git a/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/OnboardingUiState.kt b/feature/foryou/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/OnboardingUiState.kt
similarity index 95%
rename from feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/OnboardingUiState.kt
rename to feature/foryou/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/OnboardingUiState.kt
index 70634b4c5..cd2197bcb 100644
--- a/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/OnboardingUiState.kt
+++ b/feature/foryou/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/OnboardingUiState.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.foryou
+package com.google.samples.apps.nowinandroid.feature.foryou.api
import com.google.samples.apps.nowinandroid.core.model.data.FollowableTopic
diff --git a/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/navigation/ForYouNavigation.kt b/feature/foryou/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/navigation/ForYouNavigation.kt
similarity index 94%
rename from feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/navigation/ForYouNavigation.kt
rename to feature/foryou/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/navigation/ForYouNavigation.kt
index b77ce72a0..a4b276983 100644
--- a/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/navigation/ForYouNavigation.kt
+++ b/feature/foryou/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/navigation/ForYouNavigation.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.foryou.navigation
+package com.google.samples.apps.nowinandroid.feature.foryou.api.navigation
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
@@ -23,7 +23,7 @@ import androidx.navigation.compose.composable
import androidx.navigation.compose.navigation
import androidx.navigation.navDeepLink
import com.google.samples.apps.nowinandroid.core.notifications.DEEP_LINK_URI_PATTERN
-import com.google.samples.apps.nowinandroid.feature.foryou.ForYouScreen
+import com.google.samples.apps.nowinandroid.feature.foryou.api.ForYouScreen
import kotlinx.serialization.Serializable
@Serializable data object ForYouRoute // route to ForYou screen
diff --git a/feature/foryou/src/main/res/drawable/feature_foryou_ic_icon_placeholder.xml b/feature/foryou/api/src/main/res/drawable/feature_foryou_api_ic_icon_placeholder.xml
similarity index 100%
rename from feature/foryou/src/main/res/drawable/feature_foryou_ic_icon_placeholder.xml
rename to feature/foryou/api/src/main/res/drawable/feature_foryou_api_ic_icon_placeholder.xml
diff --git a/feature/foryou/src/main/res/values/strings.xml b/feature/foryou/api/src/main/res/values/strings.xml
similarity index 57%
rename from feature/foryou/src/main/res/values/strings.xml
rename to feature/foryou/api/src/main/res/values/strings.xml
index 166749664..4694eb444 100644
--- a/feature/foryou/src/main/res/values/strings.xml
+++ b/feature/foryou/api/src/main/res/values/strings.xml
@@ -15,11 +15,11 @@
limitations under the License.
-->
- For you
- Done
- Loading for you…
- Navigate up
- What are you interested in?
- Updates from topics you follow will appear here. Follow some things to get started.
+ For you
+ Done
+ Loading for you…
+ Navigate up
+ What are you interested in?
+ Updates from topics you follow will appear here. Follow some things to get started.
diff --git a/feature/foryou/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenScreenshotTests.kt b/feature/foryou/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/ForYouScreenScreenshotTests.kt
similarity index 95%
rename from feature/foryou/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenScreenshotTests.kt
rename to feature/foryou/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/ForYouScreenScreenshotTests.kt
index 29fc6f536..447472d1c 100644
--- a/feature/foryou/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenScreenshotTests.kt
+++ b/feature/foryou/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/ForYouScreenScreenshotTests.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.foryou
+package com.google.samples.apps.nowinandroid.feature.foryou.api
import androidx.activity.ComponentActivity
import androidx.compose.runtime.Composable
@@ -31,9 +31,9 @@ import com.google.samples.apps.nowinandroid.core.testing.util.captureMultiDevice
import com.google.samples.apps.nowinandroid.core.ui.NewsFeedUiState
import com.google.samples.apps.nowinandroid.core.ui.NewsFeedUiState.Success
import com.google.samples.apps.nowinandroid.core.ui.UserNewsResourcePreviewParameterProvider
-import com.google.samples.apps.nowinandroid.feature.foryou.OnboardingUiState.Loading
-import com.google.samples.apps.nowinandroid.feature.foryou.OnboardingUiState.NotShown
-import com.google.samples.apps.nowinandroid.feature.foryou.OnboardingUiState.Shown
+import com.google.samples.apps.nowinandroid.feature.foryou.api.OnboardingUiState.Loading
+import com.google.samples.apps.nowinandroid.feature.foryou.api.OnboardingUiState.NotShown
+import com.google.samples.apps.nowinandroid.feature.foryou.api.OnboardingUiState.Shown
import dagger.hilt.android.testing.HiltTestApplication
import org.hamcrest.Matchers
import org.junit.Before
diff --git a/feature/foryou/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt b/feature/foryou/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/ForYouViewModelTest.kt
similarity index 99%
rename from feature/foryou/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt
rename to feature/foryou/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/ForYouViewModelTest.kt
index 812544c0c..b8a4ef86b 100644
--- a/feature/foryou/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt
+++ b/feature/foryou/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/api/ForYouViewModelTest.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.foryou
+package com.google.samples.apps.nowinandroid.feature.foryou.api
import androidx.lifecycle.SavedStateHandle
import com.google.samples.apps.nowinandroid.core.analytics.AnalyticsEvent
diff --git a/feature/search/.gitignore b/feature/foryou/impl/.gitignore
similarity index 100%
rename from feature/search/.gitignore
rename to feature/foryou/impl/.gitignore
diff --git a/feature/foryou/impl/build.gradle.kts b/feature/foryou/impl/build.gradle.kts
new file mode 100644
index 000000000..37f49d304
--- /dev/null
+++ b/feature/foryou/impl/build.gradle.kts
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+plugins {
+ alias(libs.plugins.nowinandroid.android.feature)
+ alias(libs.plugins.nowinandroid.android.library.compose)
+}
+
+android {
+ namespace = "com.google.samples.apps.nowinandroid.feature.foryou.impl"
+}
+
+dependencies { }
\ No newline at end of file
diff --git a/feature/foryou/src/test/screenshots/ForYouScreenLoading_foldable.png b/feature/foryou/src/test/screenshots/ForYouScreenLoading_foldable.png
deleted file mode 100644
index 538c9032c..000000000
Binary files a/feature/foryou/src/test/screenshots/ForYouScreenLoading_foldable.png and /dev/null differ
diff --git a/feature/foryou/src/test/screenshots/ForYouScreenLoading_phone.png b/feature/foryou/src/test/screenshots/ForYouScreenLoading_phone.png
deleted file mode 100644
index afd7dd708..000000000
Binary files a/feature/foryou/src/test/screenshots/ForYouScreenLoading_phone.png and /dev/null differ
diff --git a/feature/foryou/src/test/screenshots/ForYouScreenLoading_tablet.png b/feature/foryou/src/test/screenshots/ForYouScreenLoading_tablet.png
deleted file mode 100644
index 1c197e8f0..000000000
Binary files a/feature/foryou/src/test/screenshots/ForYouScreenLoading_tablet.png and /dev/null differ
diff --git a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_foldable.png b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_foldable.png
deleted file mode 100644
index 3990aee3f..000000000
Binary files a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_foldable.png and /dev/null differ
diff --git a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_phone.png b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_phone.png
deleted file mode 100644
index a86a8232f..000000000
Binary files a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_phone.png and /dev/null differ
diff --git a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_phone_dark.png b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_phone_dark.png
deleted file mode 100644
index d500394ef..000000000
Binary files a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_phone_dark.png and /dev/null differ
diff --git a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_tablet.png b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_tablet.png
deleted file mode 100644
index 3b735462f..000000000
Binary files a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_tablet.png and /dev/null differ
diff --git a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_foldable.png b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_foldable.png
deleted file mode 100644
index bc9c7dbec..000000000
Binary files a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_foldable.png and /dev/null differ
diff --git a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_phone.png b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_phone.png
deleted file mode 100644
index 1498f9b7b..000000000
Binary files a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_phone.png and /dev/null differ
diff --git a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_tablet.png b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_tablet.png
deleted file mode 100644
index 2b16ff76f..000000000
Binary files a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_tablet.png and /dev/null differ
diff --git a/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_foldable.png b/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_foldable.png
deleted file mode 100644
index 7ea92f8a8..000000000
Binary files a/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_foldable.png and /dev/null differ
diff --git a/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_phone.png b/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_phone.png
deleted file mode 100644
index b2faa3a28..000000000
Binary files a/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_phone.png and /dev/null differ
diff --git a/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_phone_dark.png b/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_phone_dark.png
deleted file mode 100644
index 4c30995b2..000000000
Binary files a/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_phone_dark.png and /dev/null differ
diff --git a/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_tablet.png b/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_tablet.png
deleted file mode 100644
index 05f1ba1ed..000000000
Binary files a/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_tablet.png and /dev/null differ
diff --git a/feature/settings/.gitignore b/feature/interests/api/.gitignore
similarity index 100%
rename from feature/settings/.gitignore
rename to feature/interests/api/.gitignore
diff --git a/feature/interests/build.gradle.kts b/feature/interests/api/build.gradle.kts
similarity index 98%
rename from feature/interests/build.gradle.kts
rename to feature/interests/api/build.gradle.kts
index 2b84b135f..a3627fac6 100644
--- a/feature/interests/build.gradle.kts
+++ b/feature/interests/api/build.gradle.kts
@@ -20,7 +20,7 @@ plugins {
alias(libs.plugins.nowinandroid.android.library.jacoco)
}
android {
- namespace = "com.google.samples.apps.nowinandroid.feature.interests"
+ namespace = "com.google.samples.apps.nowinandroid.feature.interests.api"
}
dependencies {
diff --git a/feature/interests/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsScreenTest.kt b/feature/interests/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/interests/api/InterestsScreenTest.kt
similarity index 93%
rename from feature/interests/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsScreenTest.kt
rename to feature/interests/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/interests/api/InterestsScreenTest.kt
index a441f5a9d..2286dadb2 100644
--- a/feature/interests/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsScreenTest.kt
+++ b/feature/interests/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/interests/api/InterestsScreenTest.kt
@@ -25,13 +25,13 @@ import androidx.compose.ui.test.onAllNodesWithContentDescription
import androidx.compose.ui.test.onNodeWithContentDescription
import androidx.compose.ui.test.onNodeWithText
import com.google.samples.apps.nowinandroid.core.testing.data.followableTopicTestData
-import com.google.samples.apps.nowinandroid.feature.interests.InterestsScreen
-import com.google.samples.apps.nowinandroid.feature.interests.InterestsUiState
+import com.google.samples.apps.nowinandroid.feature.interests.api.InterestsScreen
+import com.google.samples.apps.nowinandroid.feature.interests.api.InterestsUiState
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import com.google.samples.apps.nowinandroid.core.ui.R as CoreUiR
-import com.google.samples.apps.nowinandroid.feature.interests.R as InterestsR
+import com.google.samples.apps.nowinandroid.feature.interests.api.R as InterestsR
/**
* UI test for checking the correct behaviour of the Interests screen;
@@ -51,8 +51,8 @@ class InterestsScreenTest {
@Before
fun setup() {
composeTestRule.activity.apply {
- interestsLoading = getString(InterestsR.string.feature_interests_loading)
- interestsEmptyHeader = getString(InterestsR.string.feature_interests_empty_header)
+ interestsLoading = getString(InterestsR.string.feature_interests_api_loading)
+ interestsEmptyHeader = getString(InterestsR.string.feature_interests_api_empty_header)
interestsTopicCardFollowButton =
getString(CoreUiR.string.core_ui_interests_card_follow_button_content_desc)
interestsTopicCardUnfollowButton =
diff --git a/feature/interests/src/main/AndroidManifest.xml b/feature/interests/api/src/main/AndroidManifest.xml
similarity index 100%
rename from feature/interests/src/main/AndroidManifest.xml
rename to feature/interests/api/src/main/AndroidManifest.xml
diff --git a/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/InterestsScreen.kt b/feature/interests/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/api/InterestsScreen.kt
similarity index 96%
rename from feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/InterestsScreen.kt
rename to feature/interests/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/api/InterestsScreen.kt
index 9b18ac89b..8f50ae638 100644
--- a/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/InterestsScreen.kt
+++ b/feature/interests/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/api/InterestsScreen.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.interests
+package com.google.samples.apps.nowinandroid.feature.interests.api
import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Text
@@ -70,7 +70,7 @@ internal fun InterestsScreen(
when (uiState) {
InterestsUiState.Loading ->
NiaLoadingWheel(
- contentDesc = stringResource(id = R.string.feature_interests_loading),
+ contentDesc = stringResource(id = R.string.feature_interests_api_loading),
)
is InterestsUiState.Interests ->
@@ -90,7 +90,7 @@ internal fun InterestsScreen(
@Composable
private fun InterestsEmptyScreen() {
- Text(text = stringResource(id = R.string.feature_interests_empty_header))
+ Text(text = stringResource(id = R.string.feature_interests_api_empty_header))
}
@DevicePreviews
diff --git a/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/InterestsViewModel.kt b/feature/interests/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/api/InterestsViewModel.kt
similarity index 94%
rename from feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/InterestsViewModel.kt
rename to feature/interests/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/api/InterestsViewModel.kt
index 67cc8884f..5c7b37c32 100644
--- a/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/InterestsViewModel.kt
+++ b/feature/interests/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/api/InterestsViewModel.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.interests
+package com.google.samples.apps.nowinandroid.feature.interests.api
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
@@ -24,7 +24,7 @@ import com.google.samples.apps.nowinandroid.core.data.repository.UserDataReposit
import com.google.samples.apps.nowinandroid.core.domain.GetFollowableTopicsUseCase
import com.google.samples.apps.nowinandroid.core.domain.TopicSortField
import com.google.samples.apps.nowinandroid.core.model.data.FollowableTopic
-import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsRoute
+import com.google.samples.apps.nowinandroid.feature.interests.api.navigation.InterestsRoute
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
diff --git a/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/TabContent.kt b/feature/interests/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/api/TabContent.kt
similarity index 98%
rename from feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/TabContent.kt
rename to feature/interests/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/api/TabContent.kt
index 133c2bedd..5685ec6ab 100644
--- a/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/TabContent.kt
+++ b/feature/interests/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/api/TabContent.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.interests
+package com.google.samples.apps.nowinandroid.feature.interests.api
import androidx.compose.foundation.gestures.Orientation
import androidx.compose.foundation.layout.Box
diff --git a/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/navigation/InterestsNavigation.kt b/feature/interests/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/api/navigation/InterestsNavigation.kt
similarity index 93%
rename from feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/navigation/InterestsNavigation.kt
rename to feature/interests/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/api/navigation/InterestsNavigation.kt
index d83e4a9b2..f509ba6b8 100644
--- a/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/navigation/InterestsNavigation.kt
+++ b/feature/interests/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/api/navigation/InterestsNavigation.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.interests.navigation
+package com.google.samples.apps.nowinandroid.feature.interests.api.navigation
import androidx.navigation.NavController
import androidx.navigation.NavOptions
diff --git a/feature/interests/src/main/res/values/strings.xml b/feature/interests/api/src/main/res/values/strings.xml
similarity index 75%
rename from feature/interests/src/main/res/values/strings.xml
rename to feature/interests/api/src/main/res/values/strings.xml
index 8d5322859..c76bd4915 100644
--- a/feature/interests/src/main/res/values/strings.xml
+++ b/feature/interests/api/src/main/res/values/strings.xml
@@ -15,7 +15,7 @@
limitations under the License.
-->
- Interests
- Loading data
- "No available data"
+ Interests
+ Loading data
+ "No available data"
diff --git a/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt b/feature/interests/api/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/api/InterestsViewModelTest.kt
similarity index 99%
rename from feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt
rename to feature/interests/api/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/api/InterestsViewModelTest.kt
index cdf21f325..55a1ded1a 100644
--- a/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt
+++ b/feature/interests/api/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/api/InterestsViewModelTest.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.interests
+package com.google.samples.apps.nowinandroid.interests.api
import androidx.lifecycle.SavedStateHandle
import androidx.navigation.testing.invoke
diff --git a/feature/topic/.gitignore b/feature/interests/impl/.gitignore
similarity index 100%
rename from feature/topic/.gitignore
rename to feature/interests/impl/.gitignore
diff --git a/feature/interests/impl/build.gradle.kts b/feature/interests/impl/build.gradle.kts
new file mode 100644
index 000000000..a83efdc4a
--- /dev/null
+++ b/feature/interests/impl/build.gradle.kts
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+plugins {
+ alias(libs.plugins.nowinandroid.android.feature)
+ alias(libs.plugins.nowinandroid.android.library.compose)
+ alias(libs.plugins.nowinandroid.android.library.jacoco)
+}
+android {
+ namespace = "com.google.samples.apps.nowinandroid.feature.interests.impl"
+}
\ No newline at end of file
diff --git a/feature/search/api/.gitignore b/feature/search/api/.gitignore
new file mode 100644
index 000000000..42afabfd2
--- /dev/null
+++ b/feature/search/api/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/feature/search/build.gradle.kts b/feature/search/api/build.gradle.kts
similarity index 99%
rename from feature/search/build.gradle.kts
rename to feature/search/api/build.gradle.kts
index 5bb659c35..741a87fff 100644
--- a/feature/search/build.gradle.kts
+++ b/feature/search/api/build.gradle.kts
@@ -21,7 +21,7 @@ plugins {
}
android {
- namespace = "com.google.samples.apps.nowinandroid.feature.search"
+ namespace = "com.google.samples.apps.nowinandroid.feature.search.api"
}
dependencies {
diff --git a/feature/search/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreenTest.kt b/feature/search/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchScreenTest.kt
similarity index 99%
rename from feature/search/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreenTest.kt
rename to feature/search/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchScreenTest.kt
index a9e2fa98f..a86de6ab3 100644
--- a/feature/search/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreenTest.kt
+++ b/feature/search/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchScreenTest.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.search
+package com.google.samples.apps.nowinandroid.feature.search.api
import androidx.activity.ComponentActivity
import androidx.compose.ui.test.assertCountEquals
diff --git a/feature/search/src/main/AndroidManifest.xml b/feature/search/api/src/main/AndroidManifest.xml
similarity index 100%
rename from feature/search/src/main/AndroidManifest.xml
rename to feature/search/api/src/main/AndroidManifest.xml
diff --git a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/RecentSearchQueriesUiState.kt b/feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/RecentSearchQueriesUiState.kt
similarity index 93%
rename from feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/RecentSearchQueriesUiState.kt
rename to feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/RecentSearchQueriesUiState.kt
index 8aa5bb3b8..3e5d704a5 100644
--- a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/RecentSearchQueriesUiState.kt
+++ b/feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/RecentSearchQueriesUiState.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.search
+package com.google.samples.apps.nowinandroid.feature.search.api
import com.google.samples.apps.nowinandroid.core.data.model.RecentSearchQuery
diff --git a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchResultUiState.kt b/feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchResultUiState.kt
similarity index 96%
rename from feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchResultUiState.kt
rename to feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchResultUiState.kt
index aaf7dba7d..27b4003bf 100644
--- a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchResultUiState.kt
+++ b/feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchResultUiState.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.search
+package com.google.samples.apps.nowinandroid.feature.search.api
import com.google.samples.apps.nowinandroid.core.model.data.FollowableTopic
import com.google.samples.apps.nowinandroid.core.model.data.UserNewsResource
diff --git a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt b/feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchScreen.kt
similarity index 97%
rename from feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt
rename to feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchScreen.kt
index b617f98a9..28c7c3bfc 100644
--- a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt
+++ b/feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchScreen.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.search
+package com.google.samples.apps.nowinandroid.feature.search.api
import androidx.compose.foundation.clickable
import androidx.compose.foundation.gestures.Orientation
@@ -93,7 +93,7 @@ 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.newsFeed
-import com.google.samples.apps.nowinandroid.feature.search.R as searchR
+import com.google.samples.apps.nowinandroid.feature.search.api.R as searchR
@Composable
internal fun SearchRoute(
@@ -211,7 +211,7 @@ fun EmptySearchResultBody(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.padding(horizontal = 48.dp),
) {
- val message = stringResource(id = searchR.string.feature_search_result_not_found, searchQuery)
+ val message = stringResource(id = searchR.string.feature_search_api_result_not_found, searchQuery)
val start = message.indexOf(searchQuery)
Text(
text = AnnotatedString(
@@ -229,7 +229,7 @@ fun EmptySearchResultBody(
modifier = Modifier.padding(vertical = 24.dp),
)
val tryAnotherSearchString = buildAnnotatedString {
- append(stringResource(id = searchR.string.feature_search_try_another_search))
+ append(stringResource(id = searchR.string.feature_search_api_try_another_search))
append(" ")
withLink(
LinkAnnotation.Clickable(
@@ -245,12 +245,12 @@ fun EmptySearchResultBody(
fontWeight = FontWeight.Bold,
),
) {
- append(stringResource(id = searchR.string.feature_search_interests))
+ append(stringResource(id = searchR.string.feature_search_api_interests))
}
}
append(" ")
- append(stringResource(id = searchR.string.feature_search_to_browse_topics))
+ append(stringResource(id = searchR.string.feature_search_api_to_browse_topics))
}
Text(
text = tryAnotherSearchString,
@@ -273,7 +273,7 @@ private fun SearchNotReadyBody() {
modifier = Modifier.padding(horizontal = 48.dp),
) {
Text(
- text = stringResource(id = searchR.string.feature_search_not_ready),
+ text = stringResource(id = searchR.string.feature_search_api_not_ready),
style = MaterialTheme.typography.bodyLarge,
textAlign = TextAlign.Center,
modifier = Modifier.padding(vertical = 24.dp),
@@ -314,7 +314,7 @@ private fun SearchResultBody(
Text(
text = buildAnnotatedString {
withStyle(style = SpanStyle(fontWeight = FontWeight.Bold)) {
- append(stringResource(id = searchR.string.feature_search_topics))
+ append(stringResource(id = searchR.string.feature_search_api_topics))
}
},
modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp),
@@ -350,7 +350,7 @@ private fun SearchResultBody(
Text(
text = buildAnnotatedString {
withStyle(style = SpanStyle(fontWeight = FontWeight.Bold)) {
- append(stringResource(id = searchR.string.feature_search_updates))
+ append(stringResource(id = searchR.string.feature_search_api_updates))
}
},
modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp),
@@ -402,7 +402,7 @@ private fun RecentSearchesBody(
Text(
text = buildAnnotatedString {
withStyle(style = SpanStyle(fontWeight = FontWeight.Bold)) {
- append(stringResource(id = searchR.string.feature_search_recent_searches))
+ append(stringResource(id = searchR.string.feature_search_api_recent_searches))
}
},
modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp),
@@ -417,7 +417,7 @@ private fun RecentSearchesBody(
Icon(
imageVector = NiaIcons.Close,
contentDescription = stringResource(
- id = searchR.string.feature_search_clear_recent_searches_content_desc,
+ id = searchR.string.feature_search_api_clear_recent_searches_content_desc,
),
tint = MaterialTheme.colorScheme.onSurface,
)
@@ -491,7 +491,7 @@ private fun SearchTextField(
Icon(
imageVector = NiaIcons.Search,
contentDescription = stringResource(
- id = searchR.string.feature_search_title,
+ id = searchR.string.feature_search_api_title,
),
tint = MaterialTheme.colorScheme.onSurface,
)
@@ -506,7 +506,7 @@ private fun SearchTextField(
Icon(
imageVector = NiaIcons.Close,
contentDescription = stringResource(
- id = searchR.string.feature_search_clear_search_text_content_desc,
+ id = searchR.string.feature_search_api_clear_search_text_content_desc,
),
tint = MaterialTheme.colorScheme.onSurface,
)
diff --git a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchUiStatePreviewParameterProvider.kt b/feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchUiStatePreviewParameterProvider.kt
similarity index 87%
rename from feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchUiStatePreviewParameterProvider.kt
rename to feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchUiStatePreviewParameterProvider.kt
index 257d8b68e..cd31ad8ad 100644
--- a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchUiStatePreviewParameterProvider.kt
+++ b/feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchUiStatePreviewParameterProvider.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2023 The Android Open Source Project
+ * Copyright 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,12 +16,13 @@
@file:Suppress("ktlint:standard:max-line-length")
-package com.google.samples.apps.nowinandroid.feature.search
+package com.google.samples.apps.nowinandroid.feature.search.api
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import com.google.samples.apps.nowinandroid.core.model.data.FollowableTopic
import com.google.samples.apps.nowinandroid.core.ui.PreviewParameterData.newsResources
import com.google.samples.apps.nowinandroid.core.ui.PreviewParameterData.topics
+import com.google.samples.apps.nowinandroid.feature.search.api.SearchResultUiState.Success
/**
* This [PreviewParameterProvider](https://developer.android.com/reference/kotlin/androidx/compose/ui/tooling/preview/PreviewParameterProvider)
@@ -29,7 +30,7 @@ import com.google.samples.apps.nowinandroid.core.ui.PreviewParameterData.topics
*/
class SearchUiStatePreviewParameterProvider : PreviewParameterProvider {
override val values: Sequence = sequenceOf(
- SearchResultUiState.Success(
+ Success(
topics = topics.mapIndexed { i, topic ->
FollowableTopic(topic = topic, isFollowed = i % 2 == 0)
},
diff --git a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModel.kt b/feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchViewModel.kt
similarity index 99%
rename from feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModel.kt
rename to feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchViewModel.kt
index 36947880e..ed1ea1171 100644
--- a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModel.kt
+++ b/feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchViewModel.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.search
+package com.google.samples.apps.nowinandroid.feature.search.api
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
diff --git a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/navigation/SearchNavigation.kt b/feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/navigation/SearchNavigation.kt
similarity index 86%
rename from feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/navigation/SearchNavigation.kt
rename to feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/navigation/SearchNavigation.kt
index 3b16e5f71..b45956b29 100644
--- a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/navigation/SearchNavigation.kt
+++ b/feature/search/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/navigation/SearchNavigation.kt
@@ -14,13 +14,13 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.search.navigation
+package com.google.samples.apps.nowinandroid.feature.search.api.navigation
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
-import com.google.samples.apps.nowinandroid.feature.search.SearchRoute
+import com.google.samples.apps.nowinandroid.feature.search.api.SearchRoute
import kotlinx.serialization.Serializable
@Serializable data object SearchRoute
@@ -36,7 +36,7 @@ fun NavGraphBuilder.searchScreen(
// TODO: Handle back stack for each top-level destination. At the moment each top-level
// destination may have own search screen's back stack.
composable {
- SearchRoute(
+ com.google.samples.apps.nowinandroid.feature.search.api.SearchRoute(
onBackClick = onBackClick,
onInterestsClick = onInterestsClick,
onTopicClick = onTopicClick,
diff --git a/feature/search/api/src/main/res/values/strings.xml b/feature/search/api/src/main/res/values/strings.xml
new file mode 100644
index 000000000..d2d218493
--- /dev/null
+++ b/feature/search/api/src/main/res/values/strings.xml
@@ -0,0 +1,29 @@
+
+
+
+ Search
+ Clear search text
+ Sorry, there is no content found for your search \"%1$s\"
+ Sorry, we are still processing the search index. Please come back later
+ Try another search or explorer
+ Interests
+ to browse topics
+ Topics
+ Updates
+ Recent searches
+ Clear searches
+
diff --git a/feature/search/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt b/feature/search/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchViewModelTest.kt
similarity index 93%
rename from feature/search/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt
rename to feature/search/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchViewModelTest.kt
index 1b866cec2..7b719b1cc 100644
--- a/feature/search/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt
+++ b/feature/search/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/api/SearchViewModelTest.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2023 The Android Open Source Project
+ * Copyright 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.search
+package com.google.samples.apps.nowinandroid.feature.search.api
import androidx.lifecycle.SavedStateHandle
import com.google.samples.apps.nowinandroid.core.analytics.NoOpAnalyticsHelper
@@ -27,10 +27,10 @@ import com.google.samples.apps.nowinandroid.core.testing.repository.TestSearchCo
import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository
import com.google.samples.apps.nowinandroid.core.testing.repository.emptyUserData
import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule
-import com.google.samples.apps.nowinandroid.feature.search.RecentSearchQueriesUiState.Success
-import com.google.samples.apps.nowinandroid.feature.search.SearchResultUiState.EmptyQuery
-import com.google.samples.apps.nowinandroid.feature.search.SearchResultUiState.Loading
-import com.google.samples.apps.nowinandroid.feature.search.SearchResultUiState.SearchNotReady
+import com.google.samples.apps.nowinandroid.feature.search.api.RecentSearchQueriesUiState.Success
+import com.google.samples.apps.nowinandroid.feature.search.api.SearchResultUiState.EmptyQuery
+import com.google.samples.apps.nowinandroid.feature.search.api.SearchResultUiState.Loading
+import com.google.samples.apps.nowinandroid.feature.search.api.SearchResultUiState.SearchNotReady
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
diff --git a/feature/search/impl/.gitignore b/feature/search/impl/.gitignore
new file mode 100644
index 000000000..42afabfd2
--- /dev/null
+++ b/feature/search/impl/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/feature/search/impl/build.gradle.kts b/feature/search/impl/build.gradle.kts
new file mode 100644
index 000000000..abb0feacd
--- /dev/null
+++ b/feature/search/impl/build.gradle.kts
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+plugins {
+ alias(libs.plugins.nowinandroid.android.feature)
+ alias(libs.plugins.nowinandroid.android.library.compose)
+ alias(libs.plugins.nowinandroid.android.library.jacoco)
+}
+
+android {
+ namespace = "com.google.samples.apps.nowinandroid.feature.search.impl"
+}
\ No newline at end of file
diff --git a/feature/search/src/main/res/values/strings.xml b/feature/search/src/main/res/values/strings.xml
deleted file mode 100644
index e11576747..000000000
--- a/feature/search/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
- Search
- Clear search text
- Sorry, there is no content found for your search \"%1$s\"
- Sorry, we are still processing the search index. Please come back later
- Try another search or explorer
- Interests
- to browse topics
- Topics
- Updates
- Recent searches
- Clear searches
-
diff --git a/feature/settings/api/.gitignore b/feature/settings/api/.gitignore
new file mode 100644
index 000000000..42afabfd2
--- /dev/null
+++ b/feature/settings/api/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/feature/settings/build.gradle.kts b/feature/settings/api/build.gradle.kts
similarity index 98%
rename from feature/settings/build.gradle.kts
rename to feature/settings/api/build.gradle.kts
index 15d65204d..d29e024b2 100644
--- a/feature/settings/build.gradle.kts
+++ b/feature/settings/api/build.gradle.kts
@@ -21,7 +21,7 @@ plugins {
}
android {
- namespace = "com.google.samples.apps.nowinandroid.feature.settings"
+ namespace = "com.google.samples.apps.nowinandroid.feature.settings.api"
}
dependencies {
diff --git a/feature/settings/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialogTest.kt b/feature/settings/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsDialogTest.kt
similarity index 96%
rename from feature/settings/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialogTest.kt
rename to feature/settings/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsDialogTest.kt
index 790b5964d..c92894ee0 100644
--- a/feature/settings/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialogTest.kt
+++ b/feature/settings/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsDialogTest.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.settings
+package com.google.samples.apps.nowinandroid.feature.settings.api
import androidx.activity.ComponentActivity
import androidx.compose.ui.test.assertIsSelected
@@ -23,8 +23,8 @@ import androidx.compose.ui.test.onNodeWithText
import com.google.samples.apps.nowinandroid.core.model.data.DarkThemeConfig.DARK
import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand.ANDROID
import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand.DEFAULT
-import com.google.samples.apps.nowinandroid.feature.settings.SettingsUiState.Loading
-import com.google.samples.apps.nowinandroid.feature.settings.SettingsUiState.Success
+import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsUiState.Loading
+import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsUiState.Success
import org.junit.Rule
import org.junit.Test
diff --git a/feature/settings/api/src/main/AndroidManifest.xml b/feature/settings/api/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..00b4c35bd
--- /dev/null
+++ b/feature/settings/api/src/main/AndroidManifest.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
diff --git a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialog.kt b/feature/settings/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsDialog.kt
similarity index 97%
rename from feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialog.kt
rename to feature/settings/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsDialog.kt
index ad7f30f43..0d544598e 100644
--- a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialog.kt
+++ b/feature/settings/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsDialog.kt
@@ -16,7 +16,7 @@
@file:Suppress("ktlint:standard:max-line-length")
-package com.google.samples.apps.nowinandroid.feature.settings
+package com.google.samples.apps.nowinandroid.feature.settings.api
import android.content.Intent
import androidx.compose.animation.AnimatedVisibility
@@ -66,9 +66,9 @@ import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand
import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand.ANDROID
import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand.DEFAULT
import com.google.samples.apps.nowinandroid.core.ui.TrackScreenViewEvent
-import com.google.samples.apps.nowinandroid.feature.settings.R.string
-import com.google.samples.apps.nowinandroid.feature.settings.SettingsUiState.Loading
-import com.google.samples.apps.nowinandroid.feature.settings.SettingsUiState.Success
+import com.google.samples.apps.nowinandroid.feature.settings.api.R.string
+import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsUiState.Loading
+import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsUiState.Success
@Composable
fun SettingsDialog(
diff --git a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt b/feature/settings/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsViewModel.kt
similarity index 92%
rename from feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt
rename to feature/settings/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsViewModel.kt
index 123c84d1c..f34c72f0c 100644
--- a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt
+++ b/feature/settings/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsViewModel.kt
@@ -14,15 +14,15 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.settings
+package com.google.samples.apps.nowinandroid.feature.settings.api
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.google.samples.apps.nowinandroid.core.data.repository.UserDataRepository
import com.google.samples.apps.nowinandroid.core.model.data.DarkThemeConfig
import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand
-import com.google.samples.apps.nowinandroid.feature.settings.SettingsUiState.Loading
-import com.google.samples.apps.nowinandroid.feature.settings.SettingsUiState.Success
+import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsUiState.Loading
+import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsUiState.Success
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.SharingStarted.Companion.WhileSubscribed
import kotlinx.coroutines.flow.StateFlow
diff --git a/feature/settings/src/main/res/values/strings.xml b/feature/settings/api/src/main/res/values/strings.xml
similarity index 100%
rename from feature/settings/src/main/res/values/strings.xml
rename to feature/settings/api/src/main/res/values/strings.xml
diff --git a/feature/settings/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModelTest.kt b/feature/settings/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsViewModelTest.kt
similarity index 90%
rename from feature/settings/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModelTest.kt
rename to feature/settings/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsViewModelTest.kt
index f977612a1..31b73df5b 100644
--- a/feature/settings/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModelTest.kt
+++ b/feature/settings/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/api/SettingsViewModelTest.kt
@@ -14,14 +14,14 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.settings
+package com.google.samples.apps.nowinandroid.feature.settings.api
import com.google.samples.apps.nowinandroid.core.model.data.DarkThemeConfig.DARK
import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand.ANDROID
import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository
import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule
-import com.google.samples.apps.nowinandroid.feature.settings.SettingsUiState.Loading
-import com.google.samples.apps.nowinandroid.feature.settings.SettingsUiState.Success
+import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsUiState.Loading
+import com.google.samples.apps.nowinandroid.feature.settings.api.SettingsUiState.Success
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.UnconfinedTestDispatcher
diff --git a/feature/settings/src/main/AndroidManifest.xml b/feature/settings/src/main/AndroidManifest.xml
deleted file mode 100644
index 1fd9557d1..000000000
--- a/feature/settings/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/feature/topic/api/.gitignore b/feature/topic/api/.gitignore
new file mode 100644
index 000000000..42afabfd2
--- /dev/null
+++ b/feature/topic/api/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/feature/topic/build.gradle.kts b/feature/topic/api/build.gradle.kts
similarity index 99%
rename from feature/topic/build.gradle.kts
rename to feature/topic/api/build.gradle.kts
index bd8b59ec8..00678fa35 100644
--- a/feature/topic/build.gradle.kts
+++ b/feature/topic/api/build.gradle.kts
@@ -21,7 +21,7 @@ plugins {
}
android {
- namespace = "com.google.samples.apps.nowinandroid.feature.topic"
+ namespace = "com.google.samples.apps.nowinandroid.feature.topic.api"
}
dependencies {
diff --git a/feature/topic/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicScreenTest.kt b/feature/topic/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/TopicScreenTest.kt
similarity index 97%
rename from feature/topic/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicScreenTest.kt
rename to feature/topic/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/TopicScreenTest.kt
index 2b87baf9e..5c80f67c3 100644
--- a/feature/topic/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicScreenTest.kt
+++ b/feature/topic/api/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/TopicScreenTest.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.topic
+package com.google.samples.apps.nowinandroid.feature.topic.api
import androidx.activity.ComponentActivity
import androidx.compose.ui.test.hasScrollToNodeAction
@@ -45,7 +45,7 @@ class TopicScreenTest {
@Before
fun setup() {
composeTestRule.activity.apply {
- topicLoading = getString(R.string.feature_topic_loading)
+ topicLoading = getString(R.string.feature_topic_api_loading)
}
}
diff --git a/feature/topic/src/main/AndroidManifest.xml b/feature/topic/api/src/main/AndroidManifest.xml
similarity index 100%
rename from feature/topic/src/main/AndroidManifest.xml
rename to feature/topic/api/src/main/AndroidManifest.xml
diff --git a/feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicDetailPlaceholder.kt b/feature/topic/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/TopicDetailPlaceholder.kt
similarity index 95%
rename from feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicDetailPlaceholder.kt
rename to feature/topic/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/TopicDetailPlaceholder.kt
index 627fb8fb3..2519fa78a 100644
--- a/feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicDetailPlaceholder.kt
+++ b/feature/topic/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/TopicDetailPlaceholder.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.topic
+package com.google.samples.apps.nowinandroid.feature.topic.api
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@@ -50,12 +50,12 @@ fun TopicDetailPlaceholder(modifier: Modifier = Modifier) {
),
) {
Icon(
- painter = painterResource(id = R.drawable.feature_topic_ic_topic_placeholder),
+ painter = painterResource(id = R.drawable.feature_topic_api_ic_topic_placeholder),
contentDescription = null,
tint = MaterialTheme.colorScheme.primary,
)
Text(
- text = stringResource(id = R.string.feature_topic_select_an_interest),
+ text = stringResource(id = R.string.feature_topic_api_select_an_interest),
style = MaterialTheme.typography.titleLarge,
)
}
diff --git a/feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt b/feature/topic/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/TopicScreen.kt
similarity index 98%
rename from feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt
rename to feature/topic/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/TopicScreen.kt
index 8ef0d786d..4f2d490c9 100644
--- a/feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt
+++ b/feature/topic/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/TopicScreen.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.topic
+package com.google.samples.apps.nowinandroid.feature.topic.api
import androidx.annotation.VisibleForTesting
import androidx.compose.foundation.gestures.Orientation
@@ -68,7 +68,7 @@ import com.google.samples.apps.nowinandroid.core.ui.TrackScreenViewEvent
import com.google.samples.apps.nowinandroid.core.ui.TrackScrollJank
import com.google.samples.apps.nowinandroid.core.ui.UserNewsResourcePreviewParameterProvider
import com.google.samples.apps.nowinandroid.core.ui.userNewsResourceCardItems
-import com.google.samples.apps.nowinandroid.feature.topic.R.string
+import com.google.samples.apps.nowinandroid.feature.topic.api.R.string
@Composable
fun TopicScreen(
@@ -124,7 +124,7 @@ internal fun TopicScreen(
TopicUiState.Loading -> item {
NiaLoadingWheel(
modifier = modifier,
- contentDesc = stringResource(id = string.feature_topic_loading),
+ contentDesc = stringResource(id = string.feature_topic_api_loading),
)
}
diff --git a/feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModel.kt b/feature/topic/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/TopicViewModel.kt
similarity index 98%
rename from feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModel.kt
rename to feature/topic/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/TopicViewModel.kt
index 8865da463..4a8b107a6 100644
--- a/feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModel.kt
+++ b/feature/topic/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/TopicViewModel.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.topic
+package com.google.samples.apps.nowinandroid.feature.topic.api
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
diff --git a/feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/navigation/TopicNavigation.kt b/feature/topic/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/navigation/TopicNavigation.kt
similarity index 88%
rename from feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/navigation/TopicNavigation.kt
rename to feature/topic/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/navigation/TopicNavigation.kt
index 69059c81d..315389908 100644
--- a/feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/navigation/TopicNavigation.kt
+++ b/feature/topic/api/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/navigation/TopicNavigation.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.topic.navigation
+package com.google.samples.apps.nowinandroid.feature.topic.api.navigation
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavController
@@ -22,8 +22,8 @@ import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptionsBuilder
import androidx.navigation.compose.composable
import androidx.navigation.toRoute
-import com.google.samples.apps.nowinandroid.feature.topic.TopicScreen
-import com.google.samples.apps.nowinandroid.feature.topic.TopicViewModel
+import com.google.samples.apps.nowinandroid.feature.topic.api.TopicScreen
+import com.google.samples.apps.nowinandroid.feature.topic.api.TopicViewModel
import kotlinx.serialization.Serializable
@Serializable data class TopicRoute(val id: String)
diff --git a/feature/topic/src/main/res/drawable/feature_topic_ic_topic_placeholder.xml b/feature/topic/api/src/main/res/drawable/feature_topic_api_ic_topic_placeholder.xml
similarity index 75%
rename from feature/topic/src/main/res/drawable/feature_topic_ic_topic_placeholder.xml
rename to feature/topic/api/src/main/res/drawable/feature_topic_api_ic_topic_placeholder.xml
index 0518401da..49975a008 100644
--- a/feature/topic/src/main/res/drawable/feature_topic_ic_topic_placeholder.xml
+++ b/feature/topic/api/src/main/res/drawable/feature_topic_api_ic_topic_placeholder.xml
@@ -1,19 +1,19 @@
+ ~ Copyright 2024 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ https://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
-
+
\ No newline at end of file
diff --git a/feature/topic/src/main/res/values/strings.xml b/feature/topic/api/src/main/res/values/strings.xml
similarity index 82%
rename from feature/topic/src/main/res/values/strings.xml
rename to feature/topic/api/src/main/res/values/strings.xml
index fe4a6dc29..25f8a7126 100644
--- a/feature/topic/src/main/res/values/strings.xml
+++ b/feature/topic/api/src/main/res/values/strings.xml
@@ -15,6 +15,6 @@
limitations under the License.
-->
- Loading topic
- Select an Interest
+ Loading topic
+ Select an Interest
diff --git a/feature/topic/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt b/feature/topic/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/TopicViewModelTest.kt
similarity index 99%
rename from feature/topic/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt
rename to feature/topic/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/TopicViewModelTest.kt
index 58242110d..152e582d6 100644
--- a/feature/topic/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt
+++ b/feature/topic/api/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/api/TopicViewModelTest.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.google.samples.apps.nowinandroid.feature.topic
+package com.google.samples.apps.nowinandroid.feature.topic.api
import com.google.samples.apps.nowinandroid.core.data.repository.CompositeUserNewsResourceRepository
import com.google.samples.apps.nowinandroid.core.model.data.FollowableTopic
diff --git a/feature/topic/impl/.gitignore b/feature/topic/impl/.gitignore
new file mode 100644
index 000000000..42afabfd2
--- /dev/null
+++ b/feature/topic/impl/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/feature/topic/impl/build.gradle.kts b/feature/topic/impl/build.gradle.kts
new file mode 100644
index 000000000..528ec4e4a
--- /dev/null
+++ b/feature/topic/impl/build.gradle.kts
@@ -0,0 +1,25 @@
+/*
+* Copyright 2022 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* https://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+plugins {
+ alias(libs.plugins.nowinandroid.android.feature)
+ alias(libs.plugins.nowinandroid.android.library.compose)
+ alias(libs.plugins.nowinandroid.android.library.jacoco)
+}
+
+android {
+ namespace = "com.google.samples.apps.nowinandroid.feature.topic.impl"
+}
\ No newline at end of file
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 2b8c6e45c..1d19c11c8 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -65,12 +65,17 @@ include(":core:screenshot-testing")
include(":core:testing")
include(":core:ui")
-include(":feature:foryou")
-include(":feature:interests")
-include(":feature:bookmarks")
-include(":feature:topic")
-include(":feature:search")
-include(":feature:settings")
+include(":feature:foryou:api")
+include(":feature:foryou:impl")
+include(":feature:interests:api")
+include(":feature:interests:impl")
+include(":feature:bookmarks:api")
+include(":feature:bookmarks:impl")
+include(":feature:topic:api")
+include(":feature:topic:impl")
+include(":feature:search:api")
+include(":feature:search:impl")
+include(":feature:settings:api")
include(":lint")
include(":sync:work")
include(":sync:sync-test")