Skip to content

Conversation

@renefloor
Copy link
Collaborator

@renefloor renefloor commented Dec 11, 2025

Submit a pull request

Closes FLU-

Closes #

CLA

  • I have signed the Stream CLA (required).
  • The code changes follow best practices
  • Code changes are tested (add some information if not applicable)

Description of the pull request

In the tutorial we check for an activity on the explore feed if we are already following that feed. It's not easily possible without this property.

Summary by CodeRabbit

  • New Features

    • Track the current user's follow relationships within feed data to surface follow context.
  • Bug Fixes

    • Feed updates now merge user-specific fields (capabilities, membership, follows) instead of overwriting them; feed list updates preserve sort order on upsert.
  • Tests

    • Added tests ensuring user-specific feed fields are preserved during feed updates.
  • Documentation

    • Added docs for the new user-follow field and merge behavior.

✏️ Tip: You can customize this high-level summary in your review settings.

@renefloor renefloor requested a review from a team as a code owner December 11, 2025 14:17
@coderabbitai
Copy link

coderabbitai bot commented Dec 11, 2025

Walkthrough

Adds an optional ownFollows field to FeedData, updates mapping and merge behavior to preserve per-user "own*" fields during feed updates, adjusts state update logic to use merge/upsert, and adds tests and changelog entry to cover the behavior.

Changes

Cohort / File(s) Summary
Model field addition
packages/stream_feeds/lib/src/models/feed_data.dart, packages/stream_feeds/lib/src/models/feed_data.freezed.dart
Adds final List<FollowData>? ownFollows;, imports follow_data.dart, populates it in FeedResponseMapper.toModel, and updates the generated freezed file (equality, hashCode, toString, copyWith). Adds FeedDataMutations.updateWith to merge and preserve own fields.
State management
packages/stream_feeds/lib/src/state/feed_state.dart, packages/stream_feeds/lib/src/state/feed_list_state.dart
Changes feed update handling from full-replace to merge semantics: onFeedUpdated uses updateWith; feed list updates use sortedUpsert with update callback to preserve sort and merge fields.
Activity model merge
packages/stream_feeds/lib/src/models/activity_data.dart
Adjusts ActivityDataMutations.updateWith to conditionally merge currentFeed with currentFeed.updateWith(...) when present, preserving existing feed context when update omits it.
Tests & test helpers
packages/stream_feeds/test/state/feed_test.dart, packages/stream_feeds_test/lib/src/helpers/test_data.dart
Adds test verifying FeedUpdatedEvent preserves existing own fields when update omits them. Extends createDefaultFeedResponse with ownCapabilities, ownMembership, and ownFollows params.
Changelog
packages/stream_feeds/CHANGELOG.md
Documents addition of ownFollows field to FeedData.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Review FeedDataMutations.updateWith for correct preservation/priority of fields (ownCapabilities, ownMembership, ownFollows).
  • Verify FeedResponseMapper.toModel mapping for ownFollows and null-safety.
  • Confirm sortedUpsert usage in feed_list_state.dart preserves sorting and correctly invokes update callback.
  • Check ActivityDataMutations.updateWith merging logic for currentFeed.
  • Ensure tests in feed_test.dart and helper changes correctly exercise the new behavior.

Possibly related PRs

Suggested reviewers

  • Brazol

Poem

🐰 I hopped into FeedData's glade,
added friends that I have made.
Merges keep my private thread,
no replacements stealing head.
Hooray — ownFollows safely stayed!

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Description check ❓ Inconclusive The PR description explains the motivation (tutorial use case checking if already following) but lacks specific details about implementation and testing information. Add implementation details explaining the structure of ownFollows, how it integrates with existing code, and clarify what testing was performed to validate the changes.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main feature addition: adding ownFollows property to feed data.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/own-follows-on-feed

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between a1debc8 and ce3390e.

📒 Files selected for processing (2)
  • packages/stream_feeds/lib/src/models/activity_data.dart (1 hunks)
  • packages/stream_feeds/test/state/feed_test.dart (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • packages/stream_feeds/lib/src/models/activity_data.dart
  • packages/stream_feeds/test/state/feed_test.dart
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: stream_feeds
  • GitHub Check: build

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@renefloor renefloor marked this pull request as draft December 11, 2025 14:18
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
packages/stream_feeds/lib/src/models/feed_data.dart (1)

19-39: Constructor update is consistent; consider nullability semantics

Adding this.ownFollows, to the constructor keeps custom as the last parameter and fits the existing ordering of non-custom fields. One thing to double‑check is whether ownFollows should be:

  • nullable (List<FollowData>?) as now, reflecting “field may be absent”, or
  • non‑nullable with a default const [] if the API guarantees presence and callers should never see null.

If consumers will almost always treat missing as “no follows”, a non‑nullable empty list can simplify usage.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 20723b8 and e875ed9.

📒 Files selected for processing (1)
  • packages/stream_feeds/lib/src/models/feed_data.dart (4 hunks)
🧰 Additional context used
📓 Path-based instructions (4)
**/*.dart

📄 CodeRabbit inference engine (.cursor/rules/cursor-rules-location.mdc)

**/*.dart: Use the barrel_files package with @includeInBarrelFile annotations for public API management in Dart projects; keep implementation details in lib/src/ without annotations
Mark only classes, functions, and enums intended for external package usage with @includeInBarrelFile; keep repository classes, mappers, and internal state objects in lib/src/ without annotations

**/*.dart: Use @freezed mixed mode for data classes in Dart
Return Result<T> from all repository methods in Dart
Apply early return patterns consistently in Dart code
Use pattern matching with switch expressions in Dart
Mark public APIs with @includeInBarrelFile annotation in Dart
Follow enhanced enum vs sealed class guidelines in Dart
Use const constructors where possible in Dart
Implement proper disposal patterns in Dart StateNotifiers and providers
Ensure pure Dart compatibility across VM, Flutter, and Web environments
Plan for StateNotifier reactive patterns when implementing state management in Dart

**/*.dart: Use @freezed for all data classes with required id fields and const constructors
Implement StateNotifier-based reactive state management with automatic change notifications
Apply Result pattern for all async operations with explicit error handling
Use early return patterns for clean control flow in Dart code
Create extension functions for data mapping using .toModel() pattern instead of mapper classes
Mark public APIs with @includeInBarrelFile annotation for barrel file export management
Implement proper resource management with disposal and cleanup patterns in Dart code
Use constructor injection for all dependencies in Dart classes

**/*.dart: All data models should use @freezed with Dart's mixed mode syntax and include @OverRide annotations on fields
Mark classes for public export using @includeInBarrelFile annotation
Use extension functions with .toModel() convention for data mapping instead of dedicated mapper classes
All repository methods must return Result...

Files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
packages/stream_feeds/lib/src/models/**/*.dart

📄 CodeRabbit inference engine (AGENTS.md)

packages/stream_feeds/lib/src/models/**/*.dart: Use @freezed for all data classes in the Stream Feeds SDK
Follow Freezed 3.0 mixed mode syntax with @override annotations for fields
All models should have an id field when representing entities
Place custom data fields last in constructors and class definitions
Model naming convention: Use *Data suffix for model classes (e.g., ActivityData, FeedData)
Query naming convention: Use *Query suffix for query classes (e.g., ActivitiesQuery, FeedsQuery)
Request naming convention: Use *Request suffix for request classes (e.g., FeedAddActivityRequest)

Files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
packages/stream_feeds/lib/src/**/*.dart

📄 CodeRabbit inference engine (AGENTS.md)

Use // for internal/private code documentation

Files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
packages/stream_feeds/lib/**/*.dart

📄 CodeRabbit inference engine (AGENTS.md)

Apply Dart analyzer configuration from analysis_options.yaml for code quality

Files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
🧠 Learnings (14)
📓 Common learnings
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Follow Effective Dart documentation guidelines for all public APIs
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Stream Feeds API integration should be implemented according to the Activity Streams specification with structured actor, verb, object, and target fields
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Follow Effective Dart documentation guidelines for all public APIs

Applied to files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/models/**/*.dart : Follow Freezed 3.0 mixed mode syntax with `override` annotations for fields

Applied to files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/models/**/*.dart : Place custom data fields last in constructors and class definitions

Applied to files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/models/**/*.dart : Model naming convention: Use `*Data` suffix for model classes (e.g., `ActivityData`, `FeedData`)

Applied to files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
📚 Learning: 2025-12-05T14:37:17.519Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Stream Feeds API integration should be implemented according to the Activity Streams specification with structured actor, verb, object, and target fields

Applied to files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/models/**/*.dart : Use `freezed` for all data classes in the Stream Feeds SDK

Applied to files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Keep public API minimal - most code should be in `lib/src/` internal directory

Applied to files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Use `///` for public API documentation in exported classes and methods

Applied to files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Export public API classes from main library entry point `lib/stream_feeds.dart`

Applied to files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/models/**/*.dart : All models should have an `id` field when representing entities

Applied to files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/generated/**/*.dart : Never manually edit generated files (`*.freezed.dart`, `*.g.dart`, `src/generated/`)

Applied to files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
📚 Learning: 2025-12-05T14:37:37.953Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-sdk.mdc:0-0
Timestamp: 2025-12-05T14:37:37.953Z
Learning: Applies to **/*.dart : Use immutable freezed models for all data classes with required id fields

Applied to files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
📚 Learning: 2025-12-05T14:37:05.876Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/project-overview.mdc:0-0
Timestamp: 2025-12-05T14:37:05.876Z
Learning: Applies to **/*.dart : Use freezed for all data classes with required id fields and const constructors

Applied to files:

  • packages/stream_feeds/lib/src/models/feed_data.dart
🪛 GitHub Actions: legacy_version_analyze
packages/stream_feeds/lib/src/models/feed_data.dart

[warning] 99-99: The field doesn't override an inherited getter or setter. Try updating this class to match the superclass, or removing the override annotation. - override_on_non_overriding_member

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: stream_feeds
  • GitHub Check: build
🔇 Additional comments (3)
packages/stream_feeds/lib/src/models/feed_data.dart (3)

3-7: Import of follow_data.dart is appropriate

The new follow_data.dart import cleanly supports the added FollowData field and keeps model dependencies localized alongside other *Data models. Looks consistent with existing import structure.


125-145: Mapping ownFollows from API to model looks correct

The new mapping

ownFollows: ownFollows?.map((f) => f.toModel()).toList(),

is consistent with existing patterns in this mapper (e.g. list cloning for filterTags) and correctly transforms the API follow objects into FollowData instances while preserving null vs. empty‑list semantics.


93-100: [rewritten comment]
[classification tag]

@codecov
Copy link

codecov bot commented Dec 11, 2025

Codecov Report

❌ Patch coverage is 93.75000% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 60.05%. Comparing base (3bc9565) to head (ce3390e).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
...ges/stream_feeds/lib/src/models/activity_data.dart 66.66% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #69      +/-   ##
==========================================
+ Coverage   59.50%   60.05%   +0.55%     
==========================================
  Files         121      121              
  Lines        3778     3790      +12     
==========================================
+ Hits         2248     2276      +28     
+ Misses       1530     1514      -16     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@xsahil03x xsahil03x changed the title Add ownFollows on feed data feat(llc): add ownFollows on feed data Dec 11, 2025
@xsahil03x xsahil03x marked this pull request as ready for review December 11, 2025 15:20
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
packages/stream_feeds/test/state/feed_test.dart (1)

2105-2181: Good coverage, but make the “preserved own fields” assertions more robust + align with “test via public APIs” guidance.

  • Robustness: originalCapabilities/originalFollows are captured by reference (Line 2145-2147). If anything mutates/reuses the same instance, this can give false confidence. Prefer snapshotting (e.g., final originalFollows = List.of(initialFeed.ownFollows);) or asserting on explicit values/ids.
  • Guidance: this test asserts via tester.feedState (Line 2139, 2169), which appears to be internal state. If there’s a public-facing way to observe the updated FeedData, prefer that. Based on learnings, tests under packages/stream_feeds/test/** should go through public APIs only.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between f2e05b8 and a1debc8.

📒 Files selected for processing (2)
  • packages/stream_feeds/test/state/feed_test.dart (1 hunks)
  • packages/stream_feeds_test/lib/src/helpers/test_data.dart (2 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.dart

📄 CodeRabbit inference engine (.cursor/rules/cursor-rules-location.mdc)

**/*.dart: Use the barrel_files package with @includeInBarrelFile annotations for public API management in Dart projects; keep implementation details in lib/src/ without annotations
Mark only classes, functions, and enums intended for external package usage with @includeInBarrelFile; keep repository classes, mappers, and internal state objects in lib/src/ without annotations

**/*.dart: Use @freezed mixed mode for data classes in Dart
Return Result<T> from all repository methods in Dart
Apply early return patterns consistently in Dart code
Use pattern matching with switch expressions in Dart
Mark public APIs with @includeInBarrelFile annotation in Dart
Follow enhanced enum vs sealed class guidelines in Dart
Use const constructors where possible in Dart
Implement proper disposal patterns in Dart StateNotifiers and providers
Ensure pure Dart compatibility across VM, Flutter, and Web environments
Plan for StateNotifier reactive patterns when implementing state management in Dart

**/*.dart: Use @freezed for all data classes with required id fields and const constructors
Implement StateNotifier-based reactive state management with automatic change notifications
Apply Result pattern for all async operations with explicit error handling
Use early return patterns for clean control flow in Dart code
Create extension functions for data mapping using .toModel() pattern instead of mapper classes
Mark public APIs with @includeInBarrelFile annotation for barrel file export management
Implement proper resource management with disposal and cleanup patterns in Dart code
Use constructor injection for all dependencies in Dart classes

**/*.dart: All data models should use @freezed with Dart's mixed mode syntax and include @OverRide annotations on fields
Mark classes for public export using @includeInBarrelFile annotation
Use extension functions with .toModel() convention for data mapping instead of dedicated mapper classes
All repository methods must return Result...

Files:

  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/stream_feeds/test/state/feed_test.dart
packages/stream_feeds/test/**/*.dart

📄 CodeRabbit inference engine (AGENTS.md)

packages/stream_feeds/test/**/*.dart: Test through public APIs only, not internal StateNotifier implementations
Use HTTP interceptors instead of mocking repositories in tests
Mirror the lib/ structure in test/ directory organization

Files:

  • packages/stream_feeds/test/state/feed_test.dart
🧠 Learnings (11)
📓 Common learnings
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/models/**/*.dart : Follow Freezed 3.0 mixed mode syntax with `override` annotations for fields
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Stream Feeds API integration should be implemented according to the Activity Streams specification with structured actor, verb, object, and target fields
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Follow Effective Dart documentation guidelines for all public APIs
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Follow Effective Dart documentation guidelines for all public APIs

Applied to files:

  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/stream_feeds/test/state/feed_test.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Include examples for complex APIs in documentation

Applied to files:

  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/stream_feeds/test/state/feed_test.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Keep public API minimal - most code should be in `lib/src/` internal directory

Applied to files:

  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/stream_feeds/test/state/feed_test.dart
📚 Learning: 2025-12-05T14:37:17.519Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Stream Feeds API integration should be implemented according to the Activity Streams specification with structured actor, verb, object, and target fields

Applied to files:

  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/stream_feeds/test/state/feed_test.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/models/**/*.dart : Follow Freezed 3.0 mixed mode syntax with `override` annotations for fields

Applied to files:

  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/stream_feeds/test/state/feed_test.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Use `///` for public API documentation in exported classes and methods

Applied to files:

  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/stream_feeds/test/state/feed_test.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Export public API classes from main library entry point `lib/stream_feeds.dart`

Applied to files:

  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/stream_feeds/test/state/feed_test.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/test/**/*.dart : Test through public APIs only, not internal StateNotifier implementations

Applied to files:

  • packages/stream_feeds/test/state/feed_test.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/test/**/*.dart : Mirror the `lib/` structure in `test/` directory organization

Applied to files:

  • packages/stream_feeds/test/state/feed_test.dart
📚 Learning: 2025-12-05T14:37:17.519Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Implement WebSocket event handlers for real-time Stream Feeds updates including activity events, reaction events, follow events, and member events

Applied to files:

  • packages/stream_feeds/test/state/feed_test.dart
🔇 Additional comments (1)
packages/stream_feeds_test/lib/src/helpers/test_data.dart (1)

207-234: LGTM: optional own args added cleanly and wired through to FeedResponse.*
This keeps existing call sites working while enabling the new FeedUpdatedEvent test setup.

@xsahil03x xsahil03x enabled auto-merge (squash) December 12, 2025 14:33
@xsahil03x xsahil03x merged commit 3999d71 into main Dec 12, 2025
11 checks passed
@xsahil03x xsahil03x deleted the feature/own-follows-on-feed branch December 12, 2025 14:41
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.

3 participants