Skip to content

Conversation

@fulleni
Copy link
Member

@fulleni fulleni commented Oct 15, 2025

Status

READY

Description

This pull request significantly enhances the user experience for managing saved content filters. It introduces a new, dedicated 'Saved Filters' page under the user's account settings, allowing for intuitive reordering of filters via drag-and-drop, as well as options to rename and delete them. This refactoring centralizes filter management, making it more accessible and powerful for users to customize their content discovery shortcuts.

Type of Change

  • ✨ New feature (non-breaking change which adds functionality)
  • 🛠️ Bug fix (non-breaking change which fixes an issue)
  • ❌ Breaking change (fix or feature that would cause existing functionality to change)
  • 🧹 Code refactor
  • ✅ Build configuration change
  • 📝 Documentation
  • 🗑️ Chore

- Add new SavedFiltersReordered event to handle when user reorders saved filters in the UI
- Include complete list of reordered filters in event properties
- Add SavedFiltersReordered event handling to AppBloc
- Implement reordering logic by updating the list of saved filters
- Reuse existing AppUserContentPreferencesChanged event for persistence
- Add logging for event handling and potential issues
- Refactors the ManageSavedFiltersPage to use a ReorderableListView, enabling users to drag and drop their saved filters to change their order.

- Replaces ListView.separated with ReorderableListView.builder.
Implements the onReorder callback to update the list order and dispatch the SavedFiltersReordered event to the AppBloc.

-Adds a ReorderableDragStartListener with a drag handle icon as the leading widget for each ListTile.
Replaces the "Rename" and "Delete" IconButtons with a PopupMenuButton in the trailing widget for a cleaner UI.
Removes the IconButton from the HeadlinesFilterPage's AppBar. This action is part of the strategic relocation of the "Manage Saved Filters" feature to the AccountPage, creating a single, dedicated location for this functionality.
Adds a new "Saved Filters" ListTile to the AccountPage. This serves as the new, centralized entry point for users to access the page where they can manage (reorder, rename, delete) their saved headline filters.
Removes the deprecated manageSavedFilters and manageSavedFiltersName constants. Adds new accountSavedFilters and accountSavedFiltersName constants to reflect the feature's new location under the account page.
- Rename `ManageSavedFiltersPage` to `SavedFiltersPage`
- Move file from `lib/headlines-feed/view/` to `lib/account/view/`
- Update routing configuration to reflect new location
- Adjust documentation comments to reflect naming change
- Replace hardcoded 'Saved Filters' text with l10n.accountSavedFiltersTile
- Update routing to use Routes.accountSavedFiltersName constant
- Remove outdated comments
- Replace temporary localization keys with final ones for empty state and menu options
- Reorder imports to follow best practices
- Replace placeholder localization key with the correct one for the saved filters page title
- Ensure consistent and accurate localization across the application
- Add Arabic translations for new strings related to saved filters
- Include translations for account page, saved filters management page, and empty state messages
- Add Arabic translations for popup menu options in saved filter items
- Move saved filters management to the account page
- Add reordering capability for saved filters
- Update CHANGELOG.md to reflect the changes
…ement

- Enhance saved filters description to include reordering capability
- Add new feature for saved filters management including rename, delete, and reorder options
- Improve consistency in describing user advantages across different sections
- Replace Icons.filter_list_alt with Icons.filter_alt_outlined
- Adjust icon appearance for better visual consistency
- Add comment to explain the purpose of disabling default drag handles
- Set buildDefaultDragHandles to false in ReorderableListView.builder
@fulleni fulleni linked an issue Oct 15, 2025 that may be closed by this pull request
@gemini-code-assist
Copy link

Summary of Changes

Hello @fulleni, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the user experience for managing saved content filters. It introduces a new, dedicated 'Saved Filters' page under the user's account settings, allowing for intuitive reordering of filters via drag-and-drop, as well as options to rename and delete them. This refactoring centralizes filter management, making it more accessible and powerful for users to customize their content discovery shortcuts.

Highlights

  • New Feature: Saved Filters Reordering: Introduced the ability for users to reorder their saved filters, providing a fully customized workflow for content discovery.
  • Centralized Saved Filter Management: Relocated the management of saved filters (rename, delete, reorder) to a dedicated page within the account settings, improving user experience and organization.
  • UI/UX Implementation: A new SavedFiltersPage was created using ReorderableListView to enable drag-and-drop reordering, along with PopupMenuButton for renaming and deleting filters.
  • State Management Integration: Integrated the new reordering functionality with the AppBloc by introducing a SavedFiltersReordered event to persist the updated filter order.
  • Code Refactoring and Cleanup: Removed the old manage_saved_filters_page.dart and its associated routing, streamlining the codebase and consolidating filter management logic.
  • Documentation and Localization Updates: Updated CHANGELOG.md and README.md to reflect the new reordering capability and added new localization keys for the saved filters management page across supported languages.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request successfully refactors the saved filters management by moving it to the account page and introducing a new reordering capability. The implementation is solid, using ReorderableListView for the UI and new BLoC events to handle state changes. I've identified a critical issue with route nesting that needs to be addressed, and a medium-severity issue related to BuildContext usage in an async context that could lead to potential runtime errors. Overall, a great enhancement to the app's personalization features.

- Move the saved filters route definition outside of the nested routes list
- Simplify the builder function syntax using a fat arrow
@fulleni fulleni merged commit 102818d into main Oct 15, 2025
0 of 2 checks passed
@fulleni fulleni deleted the feat/saved-filters-reordering branch October 15, 2025 17:41
@fulleni fulleni added this to the Foundation Edition milestone Nov 1, 2025
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: saved filters reordering

2 participants