Skip to content

Comments

feat(llc): video moderation#1178

Open
Brazol wants to merge 1 commit intochore/open-api-regen-02-26from
feat/video-moderation
Open

feat(llc): video moderation#1178
Brazol wants to merge 1 commit intochore/open-api-regen-02-26from
feat/video-moderation

Conversation

@Brazol
Copy link
Contributor

@Brazol Brazol commented Feb 20, 2026

Summary by CodeRabbit

  • New Features

    • Added video moderation support with blur and warning event handling
    • Introduced individual and raw recording types with full configuration control
    • Added full-frame video blur effect processor
    • Extended recording configuration options in call settings
    • Added moderation callbacks and customizable behavior configuration
  • Chores

    • Updated OpenAPI model version
    • Renamed push preferences model and extended with feeds preferences
    • Added new call permission types for recording modes

@Brazol Brazol requested a review from a team as a code owner February 20, 2026 14:11
@Brazol Brazol changed the base branch from main to chore/open-api-regen-02-26 February 20, 2026 14:11
@coderabbitai
Copy link

coderabbitai bot commented Feb 20, 2026

Caution

Review failed

Failed to post review comments

📝 Walkthrough

Walkthrough

This pull request introduces video moderation support with blur and warning events, adds individual and raw recording types alongside composite recording, implements full-frame blur filtering for iOS and Android, and updates the OpenAPI coordinator API to version 219.11.0 with corresponding model changes.

Changes

Cohort / File(s) Summary
OpenAPI Version & Coordinator API
packages/stream_video/lib/globals.dart, packages/stream_video/lib/open_api/video/coordinator/api.dart, packages/stream_video/lib/open_api/video/coordinator/api_client.dart
Updated openapiModelsVersion from 202.0.0 to 219.11.0; added part declarations for new moderation and recording models; extended deserialization logic to handle new event and settings types including CallModerationBlurEvent, CallModerationWarningEvent, and recording settings responses.
Moderation Event Models
packages/stream_video/lib/open_api/video/coordinator/model/call_moderation_blur_event.dart, packages/stream_video/lib/open_api/video/coordinator/model/call_moderation_warning_event.dart
Added auto-generated Dart models for call moderation events with JSON serialization, equality comparisons, and list/map helper utilities.
Recording Type Models
packages/stream_video/lib/open_api/video/coordinator/model/individual_recording_*.dart, packages/stream_video/lib/open_api/video/coordinator/model/raw_recording_*.dart
Introduced new models for individual and raw recording settings (request/response variants) with enums for recording modes (available, disabled, autoOn) and JSON handling.
Recording Event Enhancements
packages/stream_video/lib/open_api/video/coordinator/model/call_recording*.dart
Extended recording-related events (Started, Stopped, Failed, Ready) with recordingType field and corresponding enum types; added transformer utilities.
Call & Settings Models
packages/stream_video/lib/open_api/video/coordinator/model/call_response.dart, packages/stream_video/lib/open_api/video/coordinator/model/call_settings_*.dart, packages/stream_video/lib/open_api/video/coordinator/model/go_live_request.dart, packages/stream_video/lib/open_api/video/coordinator/model/stop_live_request.dart
Added routingNumber field to CallResponse; extended CallSettings with individual/raw recording fields; added new recording flags to GoLiveRequest and StopLiveRequest.
Push Preferences Rename & Extension
packages/stream_video/lib/open_api/video/coordinator/model/push_preferences_response.dart, packages/stream_video/lib/open_api/video/coordinator/model/feeds_preferences_response.dart
Renamed PushPreferences to PushPreferencesResponse and added feedsLevel/feedsPreferences fields; introduced new FeedsPreferencesResponse model with comment/reaction/follow preferences.
Recording API Methods
packages/stream_video/lib/open_api/video/coordinator/api/productvideo_api.dart
Added recordingType parameter to startRecording and stopRecording methods; updated endpoint paths to use recordings/{recording_type} pattern; modified content-type handling.
Coordinator Client Interfaces
packages/stream_video/lib/src/coordinator/coordinator_client.dart, packages/stream_video/lib/src/coordinator/retry/coordinator_client_retry.dart, packages/stream_video/lib/src/coordinator/open_api/coordinator_client_open_api.dart
Extended signatures for startRecording, stopRecording, goLive, stopLive, and updateCall with recording type and continuation parameters; propagated new settings through delegation chains.
Call & State Management
packages/stream_video/lib/src/call/call.dart, packages/stream_video/lib/src/call_state.dart, packages/stream_video/lib/src/call/state/mixins/state_coordinator_mixin.dart
Added moderation event handlers and timer management; integrated individual/raw recording parameters into goLive/startRecording/stopRecording; added isVideoModerated flag to CallState; introduced moderation blur state transitions.
Moderation Configuration & Events
packages/stream_video/lib/src/models/moderation_blur_config.dart, packages/stream_video/lib/src/call/call_events.dart, packages/stream_video/lib/src/coordinator/models/coordinator_events.dart
Introduced VideoModerationConfig with presets (disabled, mute, blur) and event handlers; added moderation warning/blur event classes; extended recording events with recordingType field.
Recording Models & Permissions
packages/stream_video/lib/src/models/call_settings.dart, packages/stream_video/lib/src/models/call_preferences.dart, packages/stream_video/lib/src/models/call_permission.dart, packages/stream_video/lib/src/call/permissions/permissions_manager.dart
Added StreamIndividualRecordingSettings and StreamRawRecordingSettings classes with mode enums; introduced RecordingType enum; added videoModerationConfig to CallPreferences; extended CallPermission with individual/raw recording permissions; added type-specific permission routing in PermissionsManager.
OpenAPI Event Mapping
packages/stream_video/lib/src/coordinator/open_api/event/event_type.dart, packages/stream_video/lib/src/coordinator/open_api/event/open_api_event.dart, packages/stream_video/lib/src/coordinator/open_api/open_api_mapper_extensions.dart, packages/stream_video/lib/src/coordinator/open_api/open_api_extensions.dart
Added callModerationBlur and callModerationWarning event types; extended OpenApiEvent to parse and store moderation events; added mapper logic for moderation events and recording type conversions; integrated new recording settings into CallSettings.
Capability Models
packages/stream_video/lib/src/models/own_capability.dart, packages/stream_video/lib/src/models/own_user_response.dart
Added startIndividualRecordCall, startRawRecordCall, stopIndividualRecordCall, stopRawRecordCall capabilities; updated PushPreferences reference to PushPreferencesResponse.
Android Video Filters
packages/stream_video_filters/android/src/main/kotlin/io/getstream/video/flutter/stream_video_filters/StreamVideoFiltersPlugin.kt, packages/stream_video_filters/android/src/main/kotlin/io/getstream/video/flutter/stream_video_filters/factories/FullFrameBlurFactory.kt
Registered FullFrameBlurFactory method handler; implemented FullFrameBlurFilter using Toolkit.blur with 50-pixel radius.
iOS Video Filters
packages/stream_video_filters/ios/stream_video_filters/Sources/stream_video_filters/StreamVideoFiltersPlugin.swift, packages/stream_video_filters/ios/stream_video_filters/Sources/stream_video_filters/FullFrameBlurVideoFrameProcessor.swift
Added registerFullFrameBlurEffectProcessor method handler; implemented FullFrameBlurVideoFrameProcessor with CIGaussianBlur filter (radius 50) for iOS 15+.
Video Filters Dart API
packages/stream_video_filters/lib/stream_video_filters.dart, packages/stream_video_filters/lib/stream_video_filters_method_channel.dart, packages/stream_video_filters/lib/stream_video_filters_platform_interface.dart, packages/stream_video_filters/lib/video_effects_manager.dart
Added registerFullFrameBlurEffectProcessor to platform interface; integrated full-frame blur registration in VideoEffectsManager; wired moderation blur config to blur effect application.
Retry & Error Handling
packages/stream_video/lib/src/retry/retry_manager.dart
Added _isRetryable helper to classify non-retryable 4xx errors; refined retry loop termination logic for API exceptions.
Models Export & Tests
packages/stream_video/lib/src/models/models.dart, packages/stream_video/test/src/call/call_coordinator_events_test.dart
Added moderation_blur_config export; updated recording event constructors in tests to include recordingType field.
Documentation
packages/stream_video/CHANGELOG.md
Added Upcoming section documenting video moderation support via VideoModerationConfig in CallPreferences with UI cookbook reference.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~55 minutes

Poem

🐰 Blur and record, the video flows,
Three types of tapes now the call knows,
Moderation bells ring soft and clear,
Full-frame filters bring peace near,
State and streams dance well aligned,
Recording types beautifully refined! 📹✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning The pull request description is completely missing; no content was provided by the author, failing to meet the required template structure with Goal, Implementation details, Testing, and Checklist sections. Add a comprehensive pull request description following the provided template, including Goal, Implementation details, Testing explanation, and completion of contributor checklist items.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat(llc): video moderation' is clear and specific, directly referencing the main feature being added (video moderation) with proper conventional commit format.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/video-moderation

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.

@codecov
Copy link

codecov bot commented Feb 20, 2026

Codecov Report

❌ Patch coverage is 8.00000% with 69 lines in your changes missing coverage. Please review.
✅ Project coverage is 6.38%. Comparing base (7f44a4a) to head (6ec001c).

Files with missing lines Patch % Lines
packages/stream_video/lib/src/call/call.dart 9.75% 37 Missing ⚠️
...ages/stream_video/lib/src/retry/retry_manager.dart 0.00% 12 Missing ⚠️
...m_video/lib/src/models/moderation_blur_config.dart 9.09% 10 Missing ⚠️
...src/call/state/mixins/state_coordinator_mixin.dart 0.00% 8 Missing ⚠️
packages/stream_video/lib/src/call_state.dart 33.33% 2 Missing ⚠️
Additional details and impacted files
@@                    Coverage Diff                     @@
##           chore/open-api-regen-02-26   #1178   +/-   ##
==========================================================
  Coverage                        6.38%   6.38%           
==========================================================
  Files                             609     610    +1     
  Lines                           42965   43039   +74     
==========================================================
+ Hits                             2743    2749    +6     
- Misses                          40222   40290   +68     

☔ 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.

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.

1 participant