Skip to content

feat(feed): remove new feed from home dropdown#4542

Merged
NotThatKindOfDrLiz merged 10 commits into
mainfrom
feat/home-dropdown-followed-lists
May 19, 2026
Merged

feat(feed): remove new feed from home dropdown#4542
NotThatKindOfDrLiz merged 10 commits into
mainfrom
feat/home-dropdown-followed-lists

Conversation

@rabble
Copy link
Copy Markdown
Member

@rabble rabble commented May 19, 2026

Closes #4543

Summary

  • Replace the Home feed menu with For You, Following, and followed curated lists.
  • Add typed home feed sources so selected lists persist and load their ordered videos.
  • Add the Figma Following empty state and wire subscribed lists into the home feed bridge.

Verification

  • flutter analyze
  • flutter test test/blocs/video_feed/video_feed_bloc_test.dart test/screens/feed/feed_mode_switch_test.dart test/screens/feed/video_feed_page_test.dart test/providers/curated_list_repository_bridge_test.dart
  • flutter test --no-pub test/l10n/arb_consistency_test.dart --plain-name "all locales define the same message keys as app_en.arb"
  • python3 /Users/rabble/.codex/skills/divine-mobile-l10n-pr-check/scripts/check_divine_mobile_l10n.py
  • git diff --check
  • pre-push hook: analyzer, generated files, changed-file tests

@github-actions

This comment has been minimized.

@rabble rabble force-pushed the feat/home-dropdown-followed-lists branch from c3ea059 to 22489a7 Compare May 19, 2026 01:55
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@rabble rabble changed the title feat(feed): add followed list home dropdown feat(feed): remove new feed from home dropdown May 19, 2026
Copy link
Copy Markdown
Member

@NotThatKindOfDrLiz NotThatKindOfDrLiz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requesting changes before approval. The feature direction is fine, but this PR still needs one behavior fix and two debt cleanups to meet the bar: handle live invalidation of a selected subscribed list, remove the unrelated optimization skip tag, and remove the now-stale subscribed-list video-refs scaffolding/API if there is no remaining production caller.

return;
}

if (!state.isSubscribedListSelected) {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This does not handle the live case where the currently selected subscribed list disappears. Startup restore already falls back when a saved list:<id> no longer exists, but this path just reloads state.source unconditionally. If the user is on a list source and unsubscribes from that list, Home stays pinned to a stale VideoFeedSource.subscribedList, reloads empty data, and keeps the old label. Please mirror the startup fallback here: detect that the selected list is gone, switch to a valid source, and rewrite the persisted selection.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 0decd8f: live path in _onCuratedListsChanged now detects when the selected subscribed list is gone from the new set and falls back to VideoFeedSource.forYou() (matching the _restoreSource fallback), updates SharedPreferences so the change survives restart, and reloads. Added a blocTest covering the unsubscribe transition.

@@ -65,6 +65,9 @@ void main() {
when(
() => mockCuratedListRepository.getSubscribedListVideoRefs(),
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This stub looks stale now that plain Following explicitly passes videoRefs: const {} and the production path no longer calls getSubscribedListVideoRefs(). If there is no remaining production caller after this PR, please remove the orphaned repository API and the leftover test scaffolding for it instead of carrying dead transitional surface area forward.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 0decd8f: grep confirmed zero production callers of getSubscribedListVideoRefs in mobile/lib. Deleted the method from CuratedListRepository, its dedicated test group in curated_list_repository_test.dart, and the stale stub from the bloc test setUp. Note: the videoRefs: param on VideosRepository.getHomeFeedVideos is now also dead surface (only called with const {}) — happy to remove it in a follow-up if you want, but it wasn't named here so I left it.

// ABOUTME: Widget tests for KeyManagementScreen public key and export capability UI
// ABOUTME: Verifies public key copy plus Keycast local-vs-remote signing states

@Tags(['skip_very_good_optimization'])
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This tag addition is unrelated to the Home dropdown change and should be removed from this PR. I verified the optimized suite passes without it, so it is not load-bearing and it adds avoidable test debt.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 0decd8f: removed the @Tags(['skip_very_good_optimization']) line; key_management_screen_test.dart passes locally without it.

rabble added a commit that referenced this pull request May 19, 2026
Addresses three review threads on PR #4542:

1. video_feed_bloc: when curated lists change and the currently selected
   subscribed list is no longer in the subscribed set, fall back to
   forYou (mirroring the startup _restoreSource fallback) instead of
   reloading a now-stale list source. Persist the new mode to prefs
   so the fallback survives restart. Adds a blocTest covering the
   transition.

2. curated_list_repository: remove getSubscribedListVideoRefs() and its
   tests; the bloc no longer composes following with subscribed-list
   refs, so the API is dead production surface. Also strips the stale
   stub from the bloc test setUp.

3. key_management_screen_test: remove the unrelated
   skip_very_good_optimization tag.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@rabble rabble force-pushed the feat/home-dropdown-followed-lists branch from dbd0ed8 to 0decd8f Compare May 19, 2026 09:15
@rabble
Copy link
Copy Markdown
Member Author

rabble commented May 19, 2026

@NotThatKindOfDrLiz all three threads addressed in 0decd8f. Ready for another look.

@github-actions

This comment has been minimized.

rabble and others added 10 commits May 19, 2026 11:06
Addresses three review threads on PR #4542:

1. video_feed_bloc: when curated lists change and the currently selected
   subscribed list is no longer in the subscribed set, fall back to
   forYou (mirroring the startup _restoreSource fallback) instead of
   reloading a now-stale list source. Persist the new mode to prefs
   so the fallback survives restart. Adds a blocTest covering the
   transition.

2. curated_list_repository: remove getSubscribedListVideoRefs() and its
   tests; the bloc no longer composes following with subscribed-list
   refs, so the API is dead production surface. Also strips the stale
   stub from the bloc test setUp.

3. key_management_screen_test: remove the unrelated
   skip_very_good_optimization tag.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@NotThatKindOfDrLiz NotThatKindOfDrLiz force-pushed the feat/home-dropdown-followed-lists branch from 0decd8f to 64cda5f Compare May 19, 2026 16:11
@NotThatKindOfDrLiz
Copy link
Copy Markdown
Member

Took over this PR branch and pushed 64cda5f5e after rebasing onto current origin/main.

Cleanup in this pass:

  • removed the redundant videoRefs: const {} callsite and its lint suppression in VideoFeedBloc
  • removed the new empty-state localization debt instead of whitelisting it
  • switched the Following empty state back to existing localized copy and existing CTA text so every locale stays clean
  • regenerated l10n outputs and updated tests to match

Local verification on the rebased branch:

  • flutter analyze --no-pub lib test/blocs/video_feed test/screens/feed test/l10n
  • flutter test test/blocs/video_feed/video_feed_bloc_test.dart test/screens/feed/feed_mode_switch_test.dart test/screens/feed/video_feed_page_test.dart test/providers/curated_list_repository_bridge_test.dart test/l10n/arb_consistency_test.dart
  • pre-push repo checks also passed locally before push

Watching GitHub checks now and will fix anything that comes back red before approving.

@github-actions
Copy link
Copy Markdown

Mobile PR Preview

Preview refreshed for 64cda5f

Last refresh: 64cda5f at 2026-05-19 16:16:33 UTC (preview run)

Property Value
Preview URL https://a1428eac.openvine-app.pages.dev
Pages project openvine-app
Preview branch pr-4542
PR branch feat/home-dropdown-followed-lists
Commit 64cda5f

Copy link
Copy Markdown
Member

@NotThatKindOfDrLiz NotThatKindOfDrLiz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Final pass on 64cda5f: rebased onto current main, removed the redundant following-feed lint suppression, removed the new empty-state localization debt instead of whitelisting it, and kept the branch green through local verification plus full GitHub checks. Ready to merge.

@NotThatKindOfDrLiz NotThatKindOfDrLiz merged commit ce73bdd into main May 19, 2026
11 checks passed
@NotThatKindOfDrLiz NotThatKindOfDrLiz deleted the feat/home-dropdown-followed-lists branch May 19, 2026 16:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(feed): add followed list home dropdown

2 participants