diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index cbd06e3636..e3bec2e0fc 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -243,7 +243,7 @@ class HomeFragment : Fragment() { if (requireContext().settings().pocketRecommendations) { lifecycleScope.async(IO) { val stories = components.core.pocketStoriesService.getStories() - homeFragmentStore.dispatch(HomeFragmentAction.PocketArticlesChange(stories)) + homeFragmentStore.dispatch(HomeFragmentAction.PocketStoriesChange(stories)) } } diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragmentStore.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragmentStore.kt index 6c17055965..bd4cf1a370 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragmentStore.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragmentStore.kt @@ -63,7 +63,7 @@ data class HomeFragmentState( val recentTabs: List = emptyList(), val recentBookmarks: List = emptyList(), val historyMetadata: List = emptyList(), - val pocketArticles: List = emptyList() + val pocketStories: List = emptyList() ) : State sealed class HomeFragmentAction : Action { @@ -89,7 +89,7 @@ sealed class HomeFragmentAction : Action { data class RecentTabsChange(val recentTabs: List) : HomeFragmentAction() data class RecentBookmarksChange(val recentBookmarks: List) : HomeFragmentAction() data class HistoryMetadataChange(val historyMetadata: List) : HomeFragmentAction() - data class PocketArticlesChange(val pocketArticles: List) : HomeFragmentAction() + data class PocketStoriesChange(val pocketStories: List) : HomeFragmentAction() object RemoveCollectionsPlaceholder : HomeFragmentAction() object RemoveSetDefaultBrowserCard : HomeFragmentAction() } @@ -132,6 +132,6 @@ private fun homeFragmentStateReducer( is HomeFragmentAction.RecentTabsChange -> state.copy(recentTabs = action.recentTabs) is HomeFragmentAction.RecentBookmarksChange -> state.copy(recentBookmarks = action.recentBookmarks) is HomeFragmentAction.HistoryMetadataChange -> state.copy(historyMetadata = action.historyMetadata) - is HomeFragmentAction.PocketArticlesChange -> state.copy(pocketArticles = action.pocketArticles) + is HomeFragmentAction.PocketStoriesChange -> state.copy(pocketStories = action.pocketStories) } } diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt index bc684ab469..588f42b32b 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt @@ -41,7 +41,7 @@ internal fun normalModeAdapterItems( showSetAsDefaultBrowserCard: Boolean, recentTabs: List, historyMetadata: List, - pocketArticles: List + pocketStories: List ): List { val items = mutableListOf() var shouldShowCustomizeHome = false @@ -81,7 +81,7 @@ internal fun normalModeAdapterItems( showCollections(collections, expandedCollections, items) } - if (context.settings().pocketRecommendations && pocketArticles.isNotEmpty()) { + if (context.settings().pocketRecommendations && pocketStories.isNotEmpty()) { shouldShowCustomizeHome = true items.add(AdapterItem.PocketStoriesItem) } @@ -161,7 +161,7 @@ private fun HomeFragmentState.toAdapterList(context: Context): List showSetAsDefaultBrowserCard, recentTabs, historyMetadata, - pocketArticles + pocketStories ) is Mode.Private -> privateModeAdapterItems() is Mode.Onboarding -> onboardingAdapterItems(mode.state) diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/pocket/PocketStoriesComposables.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/pocket/PocketStoriesComposables.kt index e8fd759e92..243e685312 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/pocket/PocketStoriesComposables.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/pocket/PocketStoriesComposables.kt @@ -238,12 +238,15 @@ fun PocketRecommendations( * Displays [content] in an expandable card. */ @Composable -fun ExpandableCard(content: @Composable (() -> Unit)) { +fun ExpandableCard( + modifier: Modifier = Modifier, + content: @Composable (() -> Unit) +) { var isExpanded by remember { mutableStateOf(true) } val chevronRotationState by animateFloatAsState(targetValue = if (isExpanded) 0f else 180f) Card( - modifier = Modifier.fillMaxWidth(), + modifier = modifier, shape = RoundedCornerShape(4.dp), onClick = { isExpanded = !isExpanded } ) { diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/pocket/PocketStoriesViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/pocket/PocketStoriesViewHolder.kt index 1888d285eb..db0f96f8aa 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/pocket/PocketStoriesViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/pocket/PocketStoriesViewHolder.kt @@ -5,9 +5,13 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders.pocket import android.view.View +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ViewCompositionStrategy +import androidx.compose.ui.unit.dp import androidx.recyclerview.widget.RecyclerView import mozilla.components.concept.fetch.Client import mozilla.components.lib.state.ext.observeAsComposableState @@ -49,10 +53,14 @@ fun PocketStories( client: Client ) { val stories = store - .observeAsComposableState { state -> state.pocketArticles }.value + .observeAsComposableState { state -> state.pocketStories }.value ?.take(STORIES_TO_SHOW_COUNT) - ExpandableCard { + ExpandableCard( + Modifier + .fillMaxWidth() + .padding(top = 40.dp) + ) { PocketRecommendations { PocketStories( stories ?: emptyList(),