Skip to content

Conversation

@fulleni
Copy link
Member

@fulleni fulleni commented Nov 22, 2025

Status

READY

Description

This pull request introduces a significant refactoring to the push notification service, primarily focusing on improving its performance and maintainability. The core change involves transitioning from a sequential processing model for creating in-app notifications and sending push notifications to a highly parallelized approach. This restructuring aims to expedite the delivery of notifications to multiple users and enhance the clarity of the underlying code logic.

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

- Reorganized the notification sending process to create all InAppNotification documents in parallel before sending
- Reduced nested code level by checking userDeviceTokens at the beginning of the loop
- Renamed variables for clarity and created a new map for userDeviceTokens for sending
- Improved code readability and structure without changing functionality
- Ensure that the `client` is not null before calling `sendBulkNotifications`
- This change improves the robustness of the push notification service
@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 introduces a significant refactoring to the push notification service, primarily focusing on improving its performance and maintainability. The core change involves transitioning from a sequential processing model for creating in-app notifications and sending push notifications to a highly parallelized approach. This restructuring aims to expedite the delivery of notifications to multiple users and enhance the clarity of the underlying code logic.

Highlights

  • Improved Efficiency: The process of creating InAppNotification documents and dispatching push notifications has been parallelized using Future.wait, significantly reducing the overall processing time for multiple notifications.
  • Enhanced Readability: The notification processing logic has been refactored into distinct phases: first, collecting all necessary data, then creating database records in parallel, and finally, sending notifications in parallel. This separation of concerns makes the code flow clearer and easier to understand.
  • Optimized Resource Usage: By batching database write operations and network calls for notification dispatch, the service can make more efficient use of system resources and reduce latency.
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 effectively refactors the push notification sending logic for better efficiency and readability. By batching the database creation and notification sending operations using Future.wait, the new implementation avoids sequential await calls within a loop, which is a significant performance improvement. The code is also structured more clearly into distinct steps: data preparation, bulk creation, and bulk dispatch.

I've added a few suggestions to further simplify the code by removing a redundant map.

It's also worth noting the change in error handling: a failure in creating a single notification will now cause the entire batch to fail, which is a shift from the previous per-user error handling. This is generally a reasonable trade-off for batch operations.

- Add equatable as a direct dependency in pubspec.yaml
- Update equatable version in pubspec.lock
- Set equatable dependency type to "direct main" in pubspec.lock
```
@fulleni fulleni merged commit 4e18a88 into main Nov 22, 2025
1 check failed
@fulleni fulleni deleted the perf/parallelize-in-app-notification-creation branch November 22, 2025 08:33
@github-project-automation github-project-automation bot moved this from Backlog to Done in Flutter News App Project Nov 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants