Skip to content

Conversation

@fulleni
Copy link
Member

@fulleni fulleni commented Nov 30, 2025

Status

READY

Description

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

…teness

- Expand the architectural overview to include the AppReview model.
- Refine the descriptions of the workflow steps for better understanding.
- Add details on user interactions and state changes following prompt responses.
- Improve terminology consistency throughout the documentation.
- Introduce new enum for user response to initial app review prompt
- Include positive and negative options
- Add json_annotation for enum serialization
…entiment

- Create a new NegativeFeedback class to represent a single instance of negative feedback
- Add necessary imports and annotations for JSON serialization
- Implement Equatable for value comparison
- Include properties for timestamp and optional reason for dissatisfaction
- Provide factory constructor for JSON deserialization
- Add method for JSON serialization
- Create new file with app review fixtures
- Generate diverse scenarios for app review data
- Include positive, negative with/without reasons, and multi-stage reviews
- Support multiple languages (English and Arabic)
…dback

- Updated enum name from InitialAppReviewAnswer to InitialAppReviewFeedback
- Updated documentation comment to reflect new enum name
- Create new test file for InitialAppReviewFeedback enum
- Add tests to verify enum string names
- Implement tests for creating enum values from string names
- Update class name from InitialAppReviewAnswer to InitialAppReviewFeedback
- Update related variable names in AppReview class
- Improve code readability and consistency
…odel

- Implement unit tests for AppReview constructors
- Verify serialization and deserialization with fromJson/toJson
- Test copyWith functionality for creating updated instances
- Ensure proper implementation of Equatable for equality checks
- Validate props list for AppReview instances
- Create comprehensive tests for NegativeFeedback model
- Cover constructor, fromJson/toJson, and Equatable behavior
- Ensure proper instantiation with and without reason
- Verify round trip serialization/deserialization
- Test equality for instances with same and different properties
…eview funnel

- Expand architectural explanation in AppReview model documentation
- Introduce detailed description of the two-layer review funnel strategy
- Clarify constraints imposed by native in-app review APIs
- Emphasize the importance of strategically choosing the optimal moment for review requests
…e review request

- Replace storeReviewRequestedAt (DateTime?) with wasStoreReviewRequested (bool)
- Update documentation to reflect new implementation
- Adjust.copyWith method to use new boolean flag
- Remove unnecessary import of json_helpers package
- Clarify that 'storeReviewRequestedAt' is set to 'true' when a positive feedback is given
- Improve documentation readability and accuracy
- Replace `storeReviewRequestedAt` with `wasStoreReviewRequested`
- Simplifies the model by removing timestamp information
- Aligns with recent changes in the app review model
- Replace checks for `storeReviewRequestedAt` with `wasStoreReviewRequested`
- Update test assertions to use more specific boolean checks
- Improve test readability and accuracy regarding store review request status
- Change import path from 'core/src/utils/nullable_date_time_converter.dart' to 'core/src/utils/utils.dart'
- Add `enabled` master switch to control entire app review funnel
- Implement `isNegativeFeedbackFollowUpEnabled` to toggle follow-up prompt after negative feedback
- Update `initialPromptCooldownDays` description to clarify cooldown after negative feedback
- Modify model to include new parameters and update existing ones
- Adjust test cases to cover new functionality
…ting

- Add 'enabled' field to control the entire reporting system
- Update constructor, props list, and copyWith method to include new field
- Add documentation for the new 'enabled' field
- Add 'enabled' field to CommunityConfig class
- Update props list to include 'enabled'
- Modify copyWith method to support 'enabled' field
- Change initialPromptCooldownDays from 14 to 3 in ReportingConfig
- Enable community and reporting features by setting enabled to true
- Add unit tests for CommunityConfig model
- Verify instantiation, equality, JSON serialization/deserialization
- Test copyWith method functionality
- Add test for default 'enabled' value
- Include 'enabled' field in copyWith test
- Verify updated 'enabled' value after copyWith
@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 robust and strategic system for managing in-app review feedback. It implements a two-layer funnel designed to capture user sentiment privately before prompting for public store reviews, thereby maximizing positive public feedback while gathering valuable constructive criticism. The changes include new data models for tracking user review journeys and negative feedback, enhanced configuration options, and comprehensive fixture data for testing various user scenarios.

Highlights

  • New App Review Feedback Enum: Introduced InitialAppReviewFeedback enum to categorize user sentiment as either 'positive' or 'negative' in the initial app review prompt.
  • Comprehensive App Review Model: Added a new AppReview model to track the entire user journey through the in-app review funnel, including initial feedback, whether a store review was requested, and a historical log of negative feedback.
  • Negative Feedback Tracking: Created a NegativeFeedback model to store individual instances of negative feedback, capturing the timestamp and an optional reason provided by the user.
  • Enhanced App Review Configuration: Updated AppReviewConfig with new fields: enabled (a master switch for the review funnel) and isNegativeFeedbackFollowUpEnabled (to control follow-up prompts for negative feedback). The documentation for the two-layer review funnel has also been significantly expanded.
  • Fixture Data for App Reviews: New fixture data (app_reviews.dart) has been added to generate diverse AppReview scenarios, facilitating testing and development for positive, negative, multi-stage, and persistent negative feedback cases.
  • Import Refactoring: Simplified import statements in comment.dart and reaction.dart by consolidating them to use package:core/core.dart.
  • Dedicated Test Coverage: New test files have been added for the InitialAppReviewFeedback enum, AppReview model, and NegativeFeedback model, along with updates to AppReviewConfig tests, ensuring robust validation of the new features.
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 introduces new models and configurations for an app review feature, including AppReview and NegativeFeedback models, an enum for feedback types, and expanded configuration options. The documentation is thorough and clearly explains the new architecture. I've identified a couple of areas for improvement: one in the fixture generation logic to enhance data variety, and a more significant issue concerning an inconsistency in the auto-generated JSON serialization code that could lead to unpredictable behavior and warrants investigation. Overall, this is a well-executed feature addition.

- Update app reviews fixture to use a different negative feedback reason for each review
- Enhances test data variability and realism
- Replace direct DateTime parsing with dateTimeFromJson helper function
- Replace direct DateTime serialization with dateTimeToJson helper function
- Improve code readability and maintainability by using helper functions
@fulleni fulleni merged commit a3f1629 into main Nov 30, 2025
0 of 2 checks passed
@fulleni fulleni deleted the feat/app-review-required-data branch November 30, 2025 11:50
@github-project-automation github-project-automation bot moved this from Backlog to Done in Flutter News App Project Nov 30, 2025
@fulleni fulleni self-assigned this Nov 30, 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