Skip to content

[Explore Feed] Community and For You modules setting#6581

Merged
dbrant merged 10 commits into
explore-feed-upgrade-designfrom
community-modules-setting
May 14, 2026
Merged

[Explore Feed] Community and For You modules setting#6581
dbrant merged 10 commits into
explore-feed-upgrade-designfrom
community-modules-setting

Conversation

@Williamrai
Copy link
Copy Markdown
Collaborator

What does this do?

  • adds a common screen for toggle style settings screen
  • adds parameters for CommunityModules and ForYouModules
  • adds community module and for you module settings screen

Phabricator:
https://phabricator.wikimedia.org/T419766
https://phabricator.wikimedia.org/T419762

@Williamrai Williamrai requested review from cooltey and dbrant as code owners May 11, 2026 15:49
@Williamrai Williamrai changed the title Community and For You modules setting [Explore Feed] Community and For You modules setting May 11, 2026
@Williamrai Williamrai added WIP Work in progress and removed Ready for Review labels May 11, 2026
- adds proper naming
- ui/code fixes
@Williamrai Williamrai added Ready for Review and removed WIP Work in progress labels May 11, 2026
Comment thread app/src/main/java/org/wikipedia/compose/components/Settings.kt
Comment thread app/src/main/java/org/wikipedia/compose/components/Settings.kt
Comment thread app/src/main/java/org/wikipedia/compose/components/Settings.kt Outdated
Comment thread app/src/main/java/org/wikipedia/compose/components/Settings.kt Outdated
Comment thread app/src/main/java/org/wikipedia/settings/homefeed/ForYouModulesScreen.kt Outdated
Comment thread app/src/main/java/org/wikipedia/settings/homefeed/CommunityModulesScreen.kt Outdated
cooltey

This comment was marked as resolved.

…o community-modules-setting

# Conflicts:
#	app/src/main/java/org/wikipedia/feed/HomeViewModel.kt
#	app/src/main/java/org/wikipedia/settings/homefeed/CommunityModulesScreen.kt
#	app/src/main/java/org/wikipedia/settings/homefeed/ForYouModulesScreen.kt
@Williamrai Williamrai requested a review from cooltey May 13, 2026 18:12
@dbrant dbrant merged commit 772acfe into explore-feed-upgrade-design May 14, 2026
1 check passed
@dbrant dbrant deleted the community-modules-setting branch May 14, 2026 18:11
dbrant added a commit that referenced this pull request May 21, 2026
* Feature branch: Explore Feed Redesign

* Add strings back

* New Explore feed onboarding nav (#6456)

* - adds navigation arch

* - simplify navigation

* Existing user new Explore feed announcement (#6447)

* - adds ExploreFeedUpdatePromptActivity
- adds strings for ExploreFeedUpdatePromptActivity
- adds preference for controlling ExploreFeedUpdatePromptActivity access
- adds icon resources

* - open explore feed update prompt from feed fragment
- code fixes

* - code fixes

* NewExploreFeed: Onboarding: Intro Screens and Context Setting (#6449)

* Explore Feed: Onboarding: Intro Screens and Context Setting

* Integrate with the initialOnboardingActivity

* Almost

* Optimize

* Code review comments

* Update asset, function and handle navigation bar correctly

* Fix test

* NewExploreFeed: the Feed building screen (#6460)

* NewExploreFeed: the Feed building screen

* Update asset and ready for design signoff

* NewExploreFeed: Languages pick screen (#6461)

* NewExploreFeed: Languages pick screen

* Callbacks

* Finishing up

* Language pick

* Add language selection to initialOnboarding screen

* Fix

* Update content description

* Framework for Home fragment in Compose. (#6458)

* Allow edge-to-edge for MainActivity, enabling full-bleed compositions.

* Remove redundant name.

* Initial exploration of HomeFragment.

* Yes.

* Remember snap fling state.

* Yep.

* Bunch of hacks for applying non-default theme colors to NavBar.

* Imports.

* Explicitly set LightSystemUiVisibility.

* Framework for Home fragment in Compose.

* Properly account for status bar inset.

* Refactor a bit.

* Further solidify.

* Break out ViewModel.

* Review comments.

* Remove annotation.

* Apply different themes when switching tabs, and fill out some more.

* OK...

* Wire up.

* Alright...

* Alright!

* Follow-up: add strings to strings.xml and adjust the order of functions (#6481)

* NewExploreFeed: rename "Explore" to "Home" (#6479)

* NewExploreFeed: rename "Explore" to "Home"

* update for strings that may not be used later

* add qq strings

* Code review comments

* Fix merge issue

* Fix reference

* NewExploreFeed: Top Read Module (#6484)

* Community Picks: Top Read Module

* Better paddings

* wire to home

* Clickable area:

* click behavior

* Adding trending up/down icons

* Update token

* Finalized

* Pull to refresh

* show localized name in the description

* Remove language text

* Properly wire up refresh box.

* Lint.

* Remove unused varaible and enum class

* Add text color for the list item title

* Home feed: Picture of the Day module. (#6485)

* Home feed: Picture of the Day module.

* Make image clickable.

* Wire up downloading image.

* Solidify.

* Properly wire up refresh box.

* Factor out module header.

* Whoops.

* Fine, make modifier be the first parameter.

* Add missing wiring.

* Make icon buttons be 48dp.

* Use proper contentDescription.

* Whoops.

---------

Co-authored-by: Cooltey Feng <cfeng@wikimedia.org>

* Home feed: Featured Article module. (#6488)

* Home feed: Picture of the Day module.

* Make image clickable.

* Wire up downloading image.

* Solidify.

* Properly wire up refresh box.

* Factor out module header.

* Whoops.

* Fine, make modifier be the first parameter.

* Flesh out featured article.

* Add missing wiring.

* Deduplicate.

---------

Co-authored-by: Cooltey Feng <cfeng@wikimedia.org>

* Update icon buttons and content descriptions

* NewExploreFeed: design tweak for onboarding screens (#6499)

* NewExploreFeed: design tweak for onboarding screens

* Fixed thumb height and resolve jumpling

* - center aligned title for ExploreFeedUpdatePromptScreen (#6504)

* Explore Feed interest (#6459)

* - adds PersonalizationScreen.kt
- adds interest onboarding related screens
- adds string resources

* - adds raw state for PersonalizationScreen to derive interest ui states
- adds state models
- adds viewModel and interest placeholder screen

* - adds click event on category and adds comments

* - adds personalization screen as activity
- code fixes

* - adds navigation

* - adds more UI for interest selection and business logic
- code fixes

* - adds shimmer effect

* - adds onboarding topics data and message api call

* - adds bottom selection bar
- moves view to its own composable functions
- adds string resource
- code fixes

* - dose not replace selected articles

* - adds proper api call to getArticlesByTopic
- adds topics
- code fixes

* - updates interest screen ui to be fully scrollable

* - adds interest entity, dao, and viewmodel logic
- code fixes

* - converts selectedTopics to list of onboarding for readability and access

* - adds preview

* - adds namespace to Interest entity
- adds deleteAllByType query
- adds viewModelFactory to PersonalizationViewModel.kt
- code fixes and cleanups

* - rename and moves re-usable interest selection components to compose/components

* fix lint

* - code fixes

* - renames articleTopics to queryTopicId

* - splits Interest.kt into ArticleInterest.kt and TopicInterest.kt
- writes DAO for article and topic interest
- update PersonalizationViewModel.kt and PersonalizationRepository.kt
- updates SelectionBottomBar to use count of both article and topics
- code fixes

* - maps one to many relationship between article and topic interest
- adds job in PersonalizationViewModel.kt
- code fixes

* - adds code to restore persisted interest for returning user
- update article and topic interest dao
- code fixes

* - adds showError
- code fixes

* - code fixes
- updates db entities and adds unit test

* - adds new db structure json file

* - fix migration

* - fix db unit test

* - code/ui fixes
- renames article and topic interest table

* - moves personalization to feed package, separate interest into its own package

* - rename repository to interestSelectionRepository

* - only show ExploreFeedUpdatePromptActivity for existing users

---------

Co-authored-by: Cooltey Feng <cfeng@wikimedia.org>

* Make sure the language screen is scrollable

* NewExploreFeed: In the news module (#6503)

* NewExploreFeed: In the news module

* Add to the feed

* Fix import

* Finish the implementation

* - db fixes (#6508)

* Update news design

* Verbiage.

* NewExploreFeed: Feed Layout & Framework (#6509)

* NewExploreFeed: Feed Layout & Framework

* Language Code box

* Wire up language picker to home feed.

* Minor adjustment

* Better clickable

* Fix lint

* Update module order

* show text based on the selected language

* Add preference for selected language

* Untangle viewModel from HomeScreen composable.

---------

Co-authored-by: Dmitry Brant <me@dmitrybrant.com>

* Fix other previews.

* Remove italic (pictured) parenthetical.

* Limit line count in featured image description and author.

* Tweaks to chip alignment and padding.

* Reorder topics.

* Home Feed: On This Day module. (#6518)

* Very basic scaffolding.

* Do it.

* Add dark overlay over images in Featured Article and News.

* Also bump opacity of text box to 92%.

* [Explore Feed] Preference Selection  (#6502)

* - adds PersonalizationScreen.kt
- adds interest onboarding related screens
- adds string resources

* - adds raw state for PersonalizationScreen to derive interest ui states
- adds state models
- adds viewModel and interest placeholder screen

* - adds click event on category and adds comments

* - adds personalization screen as activity
- code fixes

* - adds navigation

* - adds more UI for interest selection and business logic
- code fixes

* - adds shimmer effect

* - adds onboarding topics data and message api call

* - adds bottom selection bar
- moves view to its own composable functions
- adds string resource
- code fixes

* - dose not replace selected articles

* - adds proper api call to getArticlesByTopic
- adds topics
- code fixes

* - updates interest screen ui to be fully scrollable

* - adds interest entity, dao, and viewmodel logic
- code fixes

* - converts selectedTopics to list of onboarding for readability and access

* - adds preview

* - adds namespace to Interest entity
- adds deleteAllByType query
- adds viewModelFactory to PersonalizationViewModel.kt
- code fixes and cleanups

* - rename and moves re-usable interest selection components to compose/components

* fix lint

* - code fixes

* - renames articleTopics to queryTopicId

* - splits Interest.kt into ArticleInterest.kt and TopicInterest.kt
- writes DAO for article and topic interest
- update PersonalizationViewModel.kt and PersonalizationRepository.kt
- updates SelectionBottomBar to use count of both article and topics
- code fixes

* - maps one to many relationship between article and topic interest
- adds job in PersonalizationViewModel.kt
- code fixes

* - adds code to restore persisted interest for returning user
- update article and topic interest dao
- code fixes

* - adds showError
- code fixes

* - code fixes
- updates db entities and adds unit test

* - adds new db structure json file

* - fix migration

* - fix db unit test

* - code/ui fixes
- renames article and topic interest table

* - adds feed preference state, structure and base UI
- adds string resource
- adds autoSize parameter to HtmlText

* - feed screen architecture refinement

* - moves personalization to feed package, separate interest into its own package

* - moves feedPreference to its own package
- adds FeedPreferenceRepository and FeedPreferenceState

* - rename repository to interestSelectionRepository

* - adds DTO class ArticleWithTopic to query results from both entities using getArticlesWithTopic function
- adds loadFeedPreferenceScreen
- adds dev settings for selecting feed preference type
- code/ui fixes

* - lint fixes

* - adds empty state for personalized content
- removes db query to get articleWithTopic

* - adds API call for getting preview for getInterests
- code fixes

* - api call fixes

* - adds cache based preview for personalized content instead of api call
- cache is only applied for topics
- code fixes

* - renames "feed" to "home"
- code fixes

* - string fix

* - adds proper properties for displaying variant titles

* - adds language code to get proper string

---------

Co-authored-by: Cooltey Feng <cfeng@wikimedia.org>

* Rename FeedPreference to HomePreference

* Introduce alternate presentation when no image.

* Introduce alternate presentation when no image.

* Update spacings.

* Put picture of the day before News.

* Randomize colors with consistent seed.

* NewExploreFeed: Overflow menus (#6527)

* NewExploreFeed: Overflow menus

* No box

* Adding hide module menu to the header

* keep UI actions outside the view model.

* Wire for OTD

* Fix merge

* Better menu key instead of plain if statment

* Add module keys for hiding functionality

* Revert "Add module keys for hiding functionality"

This reverts commit 7a4aa11.

* Add padding to the onboarding buttons and extend delay to 1.7 seconds

* 2 seconds

* Refactor to reuse Card model classes.

* Make individual cards hideable!

* Refactor topics logic to use string resources.

* Untangle topics.

* Further untangle and simplify.

* Untangle even further, and simplify greatly.

* Don't show YiR dialog in the app onboarding

* Make use of fadeable images.

* Home Feed: Framework for For You cards. (#6546)

* Getting there.

* Home Feed: Framework for For You cards.

* Nail down design without lead image.

* Nail it down.

* Adjust top gradient.

* Use correct icon for hiding card.

* Untangle it!

* Right.

* Get all topics agnostically of language.

* Make hidden cards into a circular list.

* Correctly use msgKey from topic.

* Make card impressions instrumentable.

* Further factor out common logic.

* Also instrument Community cards.

* Refactor and improve impression detection.

* Adapt.

* Use fadeable image, and experiment with random search.

* Review.

---------

Co-authored-by: Cooltey Feng <cfeng@wikimedia.org>

* Max 5 interests from topics.

* Refactor to use common card pattern.

* Wire up Interests based on articles.

* Randomize at dao level.

* Wire up personalizing interests.

* NewExploreFeed: Tabs icon (#6542)

* NewExploreFeed: Tabs icon

* Update tab with the feed

* Create a toolbar and finalize

* Truly aligned to the center

* Update min font size to `5`.

* Use data class instead of pair

* Fix error

* Fix the merge error

* Refine API usage for Continue Reading.

* Design tweaks.

* Make on-this-day subitems dynamically sized to viewport.

* NewExploreFeed: Because you read (#6557)

* NewExploreFeed: Because you read

* Simplify because you read

* Reduce API calls

* send maxage manually

* show localized footer text

* Change if to when

* Simplify a bit.

* More cleanup.

* Add instrument to HomeFragment.

* Add instrumentation to UpdatePromptActivity.

* Add instrumentation to PersonalizationActivity.

* Add instrumentation to initial onboarding.

* Wire up card impression events.

* NewExploreFeed: Add "Hide modules" functionality (#6559)

* NewExploreFeed: Add "Hide modules" functionality

* format adjusted

* Fix error

* - adds data store (SettingsRepository) for hiding modules
- separates out all modules enum to community and for you modules
- removes hiddenModules preference
- code fixes

* Some code updates

* Lint errors fix

---------

Co-authored-by: williamrai <williamrai13@gmail.com>

* NewExploreFeed: Add Share and Save to the overflow menu in For you tab (#6568)

* Fix: show the correct tab after selection the tab preference (#6573)

* Fix: show the correct tab after selection the tab preference

* Make sure select the tab when finishing the onboarding

* Exploratory tweaks of API usage.

* [Explore Feed] top level settings screen (#6565)

* - adds top level home feed settings
- adds navigation arch for home feed settings
- adds sub screen for home feed settings
- adds string resource

* - adds settings row and settings section
- completes the top level settings screen for home feed settings

* - adds correct design tokens
- rename files

* - rename WhatsDrivingFeedModulesScreen to FeedConfigurationScreen

---------

Co-authored-by: Cooltey Feng <cfeng@wikimedia.org>

* Explorations of improved topic query.

* Update sort order and topic score.

* Notification bell (#6553)

* - adds Notification Bell component

* - Drive animation from unreadCount instead of external trigger
- adds a ripple `indication` with a `MutableInteractionSource` for proper touch feedback
- code fixes

* - code format

* - adds _unreadCount for listening to notification count from broadcast receiver
-

* - calls refresh when logged out to hide the notification bell
- code fixes

* - merge fixes

* - lint fixes

* - code fixes

* - reverts the update code for notification bell when user logs out

* - merge conflict fixes
- adds code to remove notification bell user logs out

---------

Co-authored-by: Cooltey Feng <cfeng@wikimedia.org>

* - skips reading challenge onboarding dialog when in PersonalizationActivity (#6582)

* follow up

* Add contentPaddings for overflow menu items

* Update the order of the Community tab modules

* Update copy.

* Card order.

* Don't show "load more" at the bottom of For You.

* Tweak gradient.

* Refresh For You after updating interests.

* Towards serializing cards and modules.

* Persist current day's state of For You modules.

* Readjust strings.

* Greatly improve efficiency of fetching random items.

* Skip cache logic for design signoff temporarily

* Put back cache logic.

* Use device language for overflow menu

* [Explore Feed] Community and For You modules setting (#6581)

* - adds community module settings

* - adds for you module settings

* - creates a common toggle style setting screen called ToggleListScreen
- code fixes

* - adds link support to description in settings row
- adds proper naming
- ui/code fixes

* - code fixes

* - code fixes

* - string fixes

---------

Co-authored-by: Cooltey Feng <cfeng@wikimedia.org>

* Make the home setting screen scrollable

* Add confirmation dialog when disabling all modules.

* Right.

* NewExploreFeed: Show swipe onboarding to new "Home" feed users (#6596)

* Add strings for swipe-to-explore prompt in the new explore feed

* Add preference

* Finalized

* Simplified

* Home feed: Consistent proper spacing after DayHeader. (#6597)

* [Explore Feed] Empty state (#6591)

* - adds community module settings

* - adds for you module settings

* - creates a common toggle style setting screen called ToggleListScreen
- code fixes

* - adds link support to description in settings row
- adds proper naming
- ui/code fixes

* - code fixes

* - code fixes

* - string fixes

* - adds empty state

* - adds qq string

* - adds start route to HomeFeedSettingsActivity so that user can navigate directly to "For you" or "Community" tab

* - code fixes and adds missing string resource

* - adds proper top padding to empty state in For You screen

* - fix for you dialog confirmation

* - code fixes

* - code fixes

* Update default text alignment for title to `start`.

* Home Feed: instrumentation. (#6595)

* Home Feed: instrumentation.

* Moar instrumentation.

* Moar instrumentation.

* Instrument page overflow menu.

* Improve instrumentation of personalization.

* Instrument settings.

* Review fixes.

* Review comments.

* - adds missing padding and change the verticalAlignment to Top for Settings Row

* Fix triggering of setting navtab colors upon resumption.

* - fixes community modules settings order and user correct string

* Clear cached daily modules earlier (when selecting interests).

* [Explore Feed] Announcements should not interrupt Home feed onboarding (#6598)

* - adds AppAnnouncements for handling announcement activities
- blocks announcements while onboarding-related activities are on screen
- requires initial onboarding to be complete before any announcement fires
- requires ExploreFeedUpdatePrompt to be completed before announcements fire
  for existing users

* - adds announcement logic back to base activity

* - code fixes

* Fix: refresh the feed if the selected language is not in the list (#6604)

* Home feed: Clear "For you" cache upon toggling any interest. (#6610)

* [Explore Feed] Empty State "For You" screen (#6601)

* - adds code to handle the empty state when the user has not selected any interests or has no reading history
- removes home preference from customization flow when adding new interset

* - adds new design for "For you" empty state
- adds ForYouEmptyState
- adds related string for empty state

* - updates string

* - code fixes

* - strings update

* - string fixes

* - string fixes

* - adds "interest only" instead of "intro page only" for customizing interests
- hides skip and page indicator when there is only one page in interest selection onboarding flow
- code/ui fixes

* - split selectTab behavior into two separate functions (selectTab and reloadCurrentTab)

* - handles no data view for Community Feed
- code fixes

* - proper naming for empty view

---------

Co-authored-by: Cooltey Feng <cfeng@wikimedia.org>

* A touch of cleanup of naming.

* [NewExploreFeed] Fix: use the proper wikiSite for the interests selection screen (#6613)

* Home feed: instrumentation for Empty states. (#6614)

* Home feed: instrumentation for Empty states.

* Set subtype only if card is not empty.

* [Explore Feed] whats driving your feed setting screen (#6607)

* - implements Feed Configuration screen
- empties Prefs.homeForYouModulesToday when user selects new interest from the Settings flow in order to fetch new content in the HomeFragment
- code/ui fixes
- adds new strings

* - adds flow queries to show dynamic subtitles in Feed Configuration based on user data
-

* - code fixes

* Wrap the content with Box

* - trigger for you reload via activity result instead of onResume

* - allow user to navigate back to setting screen

* - use proper file name

---------

Co-authored-by: Cooltey Feng <cfeng@wikimedia.org>

* Instrument Driving-your-feed screen.

* [NewExploreFeed] Apply pull-to-refresh and a snackbar message (#6616)

* [Explore Feed] Fix localized topic and primary language display (#6619)

* - Shows the correct topic string based on the selected language
- displays the correct primary language in the Home tab bar.

* - code fixes

* - code fixes

* - code fixes

* Combine into or.

* - removes the code that automatically refreshes the “For You” content when interests are changed in Settings (#6618)

* - code fixes

* Fix extra qq strings.

---------

Co-authored-by: William Rai <48931640+Williamrai@users.noreply.github.com>
Co-authored-by: Dmitry Brant <dbrant@wikimedia.org>
Co-authored-by: Dmitry Brant <me@dmitrybrant.com>
Co-authored-by: williamrai <williamrai13@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

3 participants