Skip to content

Integration branch for ably_pubsub_device_flutter v2 package - #606

Open
ttypic wants to merge 2 commits into
mainfrom
integration/v2
Open

ttypic wants to merge 2 commits into
mainfrom
integration/v2

Conversation

@ttypic

@ttypic ttypic commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Integration branch contains packages split, renaming and deletion of deprecated methods

The SDK now offers a realtime interface only. `Rest`, `RestChannel`,
`RestChannels`, `RestPresence`, `RestAuth` and the `Rest*` option and
param types are gone, along with their platform methods, codec types
and Android/iOS handlers. `Push` and `PushChannel` now require a
`realtime` client, and `Message`/`PresenceMessage.fromEncoded` take
`RealtimeChannelOptions`. UPDATING.md documents the migration.

Two pieces of pre-existing drift had to be fixed to regenerate the
platform constants:

- The codegen templates used `_` as a lambda parameter, which is a
  wildcard in current Dart, so `bin/codegen.dart` no longer ran.
- The generated constants had been hand-edited with entries missing
  from the codegen context (`connectionRecoveryKey`, the
  `ConnectionStateChange` connection id/key, and three Java-only
  `ClientOptions` timeout keys); these are now in the context so
  regeneration reproduces them on all three platforms.

Tests: the rest unit and integration tests are deleted; the shared
`Channels` test moves to `RealtimeChannels`, the plugin test covers
client creation over `Realtime`, and the realtime auth tests bootstrap
their tokens from a non-auto-connecting `Realtime` client.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 21, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 181 files, which is 81 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 16a393f7-318e-49cf-b504-cad3e48ed2e1

📥 Commits

Reviewing files that changed from the base of the PR and between 1537db2 and ea51456.

⛔ Files ignored due to path filters (6)
  • android/src/main/java/io/ably/flutter/plugin/generated/PlatformConstants.java is excluded by !**/generated/**
  • example/ios/Podfile.lock is excluded by !**/*.lock
  • example/pubspec.lock is excluded by !**/*.lock
  • lib/src/generated/platform_constants.dart is excluded by !**/generated/**
  • test_integration/ios/Podfile.lock is excluded by !**/*.lock
  • test_integration/pubspec.lock is excluded by !**/*.lock
📒 Files selected for processing (181)
  • .claude/skills/release/SKILL.md
  • .github/workflows/flutter_integration.yaml
  • .github/workflows/ios_unit_tests.yml
  • API_REF_INTRO_BLURB.md
  • PushNotifications.md
  • README.md
  • UPDATING.md
  • analysis_options.yaml
  • android/settings.gradle
  • android/src/main/java/io/ably/flutter/plugin/AblyInstanceStore.java
  • android/src/main/java/io/ably/flutter/plugin/AblyMessageCodec.java
  • android/src/main/java/io/ably/flutter/plugin/AblyMethodCallHandler.java
  • android/src/main/java/io/ably/flutter/plugin/AuthMethodHandler.java
  • android/src/main/java/io/ably/flutter/plugin/types/PlatformClientOptions.java
  • bin/codegen_context.dart
  • bin/templates/platformconstants.dart.dart
  • bin/templates/platformconstants.h.dart
  • bin/templates/platformconstants.java.dart
  • bin/templates/platformconstants.m.dart
  • example/ios/Runner.xcodeproj/project.pbxproj
  • example/lib/app_provisioning.dart
  • example/lib/main.dart
  • example/lib/nested_realtime_events.dart
  • example/lib/push_notifications/push_notification_handlers.dart
  • example/lib/push_notifications/push_notification_message_examples.dart
  • example/lib/push_notifications/push_notification_service.dart
  • example/lib/ui/ably_service.dart
  • example/lib/ui/paginated_result_viewer.dart
  • example/lib/ui/push_notifications/push_notifications_activation_sliver.dart
  • example/lib/ui/push_notifications/push_notifications_device_information.dart
  • example/lib/ui/push_notifications/push_notifications_ios_permissions_sliver.dart
  • example/lib/ui/push_notifications/push_notifications_received_sliver.dart
  • example/lib/ui/push_notifications/push_notifications_subscriptions_sliver.dart
  • example/lib/ui/realtime_presence_sliver.dart
  • example/lib/ui/realtime_sliver.dart
  • example/lib/ui/rest_sliver.dart
  • example/lib/ui/system_details_sliver.dart
  • example/lib/ui/utilities.dart
  • example/pubspec.yaml
  • ios/Classes/AblyFlutter.m
  • ios/Classes/AblyInstanceStore.h
  • ios/Classes/AblyInstanceStore.m
  • ios/Classes/codec/AblyFlutterReader.m
  • ios/Classes/codec/AblyFlutterWriter.m
  • ios/Classes/codec/AblyPlatformConstants.h
  • ios/Classes/codec/AblyPlatformConstants.m
  • ios/Classes/codec/CryptoCodec.swift
  • ios/Classes/handlers/AuthHandlers.swift
  • ios/Classes/handlers/PushHandlers.swift
  • ios/ably_pubsub_device_flutter.podspec
  • lib/ably_pubsub_device_flutter.dart
  • lib/src/authentication/src/auth.dart
  • lib/src/authentication/src/auth_options.dart
  • lib/src/authentication/src/client_options.dart
  • lib/src/authentication/src/token_params.dart
  • lib/src/authentication/src/token_request.dart
  • lib/src/common/src/channels.dart
  • lib/src/common/src/http_paginated_response.dart
  • lib/src/crypto/src/cipher_params.dart
  • lib/src/crypto/src/crypto.dart
  • lib/src/error/src/ably_exception.dart
  • lib/src/logging/src/log_handler.dart
  • lib/src/logging/src/log_level.dart
  • lib/src/message/src/delta_extras.dart
  • lib/src/message/src/message.dart
  • lib/src/message/src/message_extras.dart
  • lib/src/message/src/presence_message.dart
  • lib/src/platform/platform.dart
  • lib/src/platform/platform_internal.dart
  • lib/src/platform/src/ably_message.dart
  • lib/src/platform/src/background_android_isolate_platform.dart
  • lib/src/platform/src/cipher_params_internal.dart
  • lib/src/platform/src/codec.dart
  • lib/src/platform/src/info.dart
  • lib/src/platform/src/method_call_handler.dart
  • lib/src/platform/src/paginated_result.dart
  • lib/src/platform/src/platform.dart
  • lib/src/platform/src/platform_object.dart
  • lib/src/platform/src/push_activation_events_internal.dart
  • lib/src/platform/src/push_notification_events_internal.dart
  • lib/src/platform/src/realtime/connection.dart
  • lib/src/platform/src/realtime/presence.dart
  • lib/src/platform/src/realtime/realtime.dart
  • lib/src/platform/src/realtime/realtime_channel.dart
  • lib/src/platform/src/realtime/realtime_channels.dart
  • lib/src/platform/src/rest/rest.dart
  • lib/src/platform/src/rest/rest_channel.dart
  • lib/src/platform/src/rest/rest_channels.dart
  • lib/src/platform/src/rest/rest_presence.dart
  • lib/src/platform/src/streams_channel.dart
  • lib/src/push_notifications/src/admin/push_admin.dart
  • lib/src/push_notifications/src/admin/push_device_registrations.dart
  • lib/src/push_notifications/src/device_details.dart
  • lib/src/push_notifications/src/device_push_details.dart
  • lib/src/push_notifications/src/device_push_state.dart
  • lib/src/push_notifications/src/device_registration_params.dart
  • lib/src/push_notifications/src/ios_notification_settings.dart
  • lib/src/push_notifications/src/local_device.dart
  • lib/src/push_notifications/src/notification.dart
  • lib/src/push_notifications/src/push.dart
  • lib/src/push_notifications/src/push_activation_events.dart
  • lib/src/push_notifications/src/push_channel.dart
  • lib/src/push_notifications/src/push_channel_params.dart
  • lib/src/push_notifications/src/push_channel_subscription_params.dart
  • lib/src/push_notifications/src/push_channel_subscriptions.dart
  • lib/src/push_notifications/src/push_notification_events.dart
  • lib/src/push_notifications/src/remote_message.dart
  • lib/src/realtime/src/channel_event.dart
  • lib/src/realtime/src/channel_mode.dart
  • lib/src/realtime/src/channel_state.dart
  • lib/src/realtime/src/channel_state_event.dart
  • lib/src/realtime/src/connection_event.dart
  • lib/src/realtime/src/connection_state.dart
  • lib/src/realtime/src/connection_state_change.dart
  • lib/src/realtime/src/realtime_auth.dart
  • lib/src/realtime/src/realtime_channel_options.dart
  • lib/src/realtime/src/realtime_history_params.dart
  • lib/src/realtime/src/realtime_presence_params.dart
  • lib/src/rest/rest.dart
  • lib/src/rest/src/rest_auth.dart
  • lib/src/rest/src/rest_channel_options.dart
  • lib/src/rest/src/rest_history_params.dart
  • lib/src/rest/src/rest_presence_params.dart
  • lib/src/stats/src/stats.dart
  • lib/src/stats/src/stats_connection_types.dart
  • lib/src/stats/src/stats_message_traffic.dart
  • lib/src/stats/src/stats_message_types.dart
  • pubspec.yaml
  • test/ably_pubsub_device_flutter_plugin_test.dart
  • test/mock_method_call_manager.dart
  • test/models/client_options.dart
  • test/models/message_test.dart
  • test/models/presence_message_test.dart
  • test/platform/info_test.dart
  • test/realtime/channel_test.dart
  • test/realtime/channels_test.dart
  • test/rest/channel_test.dart
  • test/stable_id_generator_test.dart
  • test_integration/lib/app_provisioning.dart
  • test_integration/lib/config/test_factory.dart
  • test_integration/lib/config/test_names.dart
  • test_integration/lib/test/basic_test.dart
  • test_integration/lib/test/crypto/crypto_ensure_supported_key_length_test.dart
  • test_integration/lib/test/crypto/crypto_generate_random_key_test.dart
  • test_integration/lib/test/crypto/crypto_get_default_params.dart
  • test_integration/lib/test/realtime/realtime_auth_client_id_test.dart
  • test_integration/lib/test/realtime/realtime_auth_url_test.dart
  • test_integration/lib/test/realtime/realtime_authorize_test.dart
  • test_integration/lib/test/realtime/realtime_encrypted_publish_test.dart
  • test_integration/lib/test/realtime/realtime_events_test.dart
  • test_integration/lib/test/realtime/realtime_history_test.dart
  • test_integration/lib/test/realtime/realtime_history_with_auth_callback_test.dart
  • test_integration/lib/test/realtime/realtime_presence_enter_update_leave.dart
  • test_integration/lib/test/realtime/realtime_presence_get.dart
  • test_integration/lib/test/realtime/realtime_presence_history_test.dart
  • test_integration/lib/test/realtime/realtime_presence_subscribe.dart
  • test_integration/lib/test/realtime/realtime_publish_test.dart
  • test_integration/lib/test/realtime/realtime_publish_with_auth_callback_test.dart
  • test_integration/lib/test/realtime/realtime_subscribe.dart
  • test_integration/lib/test/realtime/realtime_time_test.dart
  • test_integration/lib/test/rest/rest_auth_client_id_test.dart
  • test_integration/lib/test/rest/rest_authorize_test.dart
  • test_integration/lib/test/rest/rest_capability_test.dart
  • test_integration/lib/test/rest/rest_create_token_request_test.dart
  • test_integration/lib/test/rest/rest_encrypted_publish_test.dart
  • test_integration/lib/test/rest/rest_history_test.dart
  • test_integration/lib/test/rest/rest_history_with_auth_callback_test.dart
  • test_integration/lib/test/rest/rest_presence_get_test.dart
  • test_integration/lib/test/rest/rest_presence_history_test.dart
  • test_integration/lib/test/rest/rest_publish_test.dart
  • test_integration/lib/test/rest/rest_publish_with_auth_callback_test.dart
  • test_integration/lib/test/rest/rest_request_token_test.dart
  • test_integration/lib/test/rest/rest_time_test.dart
  • test_integration/lib/test_dispatcher.dart
  • test_integration/lib/utils/encoders.dart
  • test_integration/lib/utils/realtime.dart
  • test_integration/lib/utils/rest.dart
  • test_integration/pubspec.yaml
  • test_integration/test_driver/test_implementation/crypto_tests.dart
  • test_integration/test_driver/test_implementation/rest_tests.dart
  • test_integration/test_driver/tests_config.dart

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


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.

Following the rename of this SDK to Ably Pub/Sub, rename the published
Dart package from `ably_flutter` to `ably_pubsub_device_flutter`, so the
package name matches the product.

The rename reaches further than `pubspec.yaml` because several names are
derived from the package name:

 - The library entry point moves to `lib/ably_pubsub_device_flutter.dart`,
   and every `package:ably_flutter/…` import follows. Import blocks are
   re-sorted where the new name changes their alphabetical order.

 - Flutter resolves a plugin's podspec by package name, so the podspec is
   renamed too. That in turn renames the Swift module, so the ObjC sources
   now import `<ably_pubsub_device_flutter/…-Swift.h>`, and the iOS CI job
   builds the `ably_pubsub_device_flutter-Unit-Tests` scheme CocoaPods
   generates from it.

 - `android/settings.gradle` names the Gradle project, and the example's
   Xcode project names the framework it embeds.

Both `Podfile.lock`s are regenerated with `pod install` so their spec
checksums are real, and the three `pubspec.lock`s with `flutter pub get`.

Method channel names and the `io.ably.ably_flutter.PUSH_*` broadcast
actions keep their current values, as wire identifiers shared with the
platform side. The example, integration test and test harness packages
keep their own names.

`UPDATING.md` gains a migration note covering the dependency, the import
path and the iOS module.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

This branch was successfully deployed

2 active deployments
staging/pull/606/features — ea51456f Deployed Sep 21, 2026 by github-actions[bot]
staging/pull/606/dartdoc — ea51456f Deployed Sep 21, 2026 by github-actions[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant