From 8b5798c853e3996c4748fdc2aa3d588ad9b17be5 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Tue, 9 Jun 2026 18:48:32 +0200 Subject: [PATCH 1/6] feat(ui): integrate StreamSnackbar into composer hold-to-record MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `StreamChatMessageInput`'s `onLongPressCancel` now surfaces the hold-to-record hint via `StreamSnackbarMessenger.maybeOf(context).show( snackbar, replace: true)`. `onLongPressStart` clears any in-flight hint via `removeCurrent()` so the most recent gesture wins. - `StreamMessageComposer` wraps its output in `StreamSnackbarPopup` at the factory-dispatch level, giving every composer variant (including custom builders via `chatComponentBuilder`) a stable snackbar surface anchored above the composer. - `StreamChat` wraps its child in `StreamSnackbarScope` so any subtree without a nearer `StreamSnackbarPopup` falls back to an app-wide surface. - Deprecate `StreamAudioRecorderController.showInfo` and `RecordStateIdle.message` — the composer no longer reads either; external consumers should fire snackbars directly. - Re-export the snackbar API (`StreamSnackbar`, `StreamSnackbarMessenger`, `StreamSnackbarPopup`, `StreamSnackbarPopupPlacement`, `StreamSnackbarScope`, etc.) from `stream_chat_flutter.dart`. - Pin `stream_core_flutter` to the PR #118 commit until release. Tests: 6 widget tests in `message_input_test.dart` covering the gesture wiring, dedupe via `replace`, clear-on-hold, and the global-scope fallback. One golden test for the composer + snackbar geometry. --- docs/docs_screenshots/pubspec.yaml | 6 +- melos.yaml | 7 +- packages/stream_chat_flutter/CHANGELOG.md | 11 + .../audio_recorder_controller.dart | 1 + .../audio_recorder/audio_recorder_state.dart | 6 +- .../stream_chat_message_input.dart | 44 ++-- .../stream_message_composer.dart | 6 +- .../lib/src/stream_chat.dart | 2 +- .../lib/stream_chat_flutter.dart | 14 ++ packages/stream_chat_flutter/pubspec.yaml | 6 +- .../src/message_input/message_input_test.dart | 213 +++++++++++++++++- 11 files changed, 278 insertions(+), 38 deletions(-) diff --git a/docs/docs_screenshots/pubspec.yaml b/docs/docs_screenshots/pubspec.yaml index d05ee5e5ca..2d81b70520 100644 --- a/docs/docs_screenshots/pubspec.yaml +++ b/docs/docs_screenshots/pubspec.yaml @@ -19,7 +19,11 @@ dependencies: sdk: flutter record: ^6.2.0 stream_chat_flutter: ^10.0.1 - stream_core_flutter: ^0.3.0 + stream_core_flutter: + git: + url: https://github.com/GetStream/stream-core-flutter + ref: 5353033ea55b88e8f651c604389f0b7b0a839ebe + path: packages/stream_core_flutter dev_dependencies: alchemist: ^0.14.0 diff --git a/melos.yaml b/melos.yaml index d0d8f64afd..b164f74d4f 100644 --- a/melos.yaml +++ b/melos.yaml @@ -98,7 +98,12 @@ command: stream_chat_persistence: ^10.0.1 streaming_shared_preferences: ^2.0.0 svg_icon_widget: ^0.0.1 - stream_core_flutter: ^0.3.0 + # Pinned to PR #118 (feat: add StreamSnackbar) until released. + stream_core_flutter: + git: + url: https://github.com/GetStream/stream-core-flutter + ref: 5353033ea55b88e8f651c604389f0b7b0a839ebe + path: packages/stream_core_flutter synchronized: ^3.4.0 thumblr: ^0.0.4 url_launcher: ^6.3.2 diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index 224960c385..62496e7111 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -1,3 +1,14 @@ +## Upcoming + +✅ Added + +- `StreamMessageComposer` now surfaces the hold-to-record hint through `StreamSnackbar` anchored above the composer, and `StreamChat` provides an app-wide `StreamSnackbarScope` fallback. + +⚠️ Deprecated + +- `StreamAudioRecorderController.showInfo` is now deprecated. Show your own snackbar via `StreamSnackbarMessenger.of(context).show(StreamSnackbar(...))` instead. +- `RecordStateIdle.message` is now deprecated; the composer no longer reads it. + ## 10.0.1 🐞 Fixed diff --git a/packages/stream_chat_flutter/lib/src/message_input/audio_recorder/audio_recorder_controller.dart b/packages/stream_chat_flutter/lib/src/message_input/audio_recorder/audio_recorder_controller.dart index ba5fec625f..909a84449d 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/audio_recorder/audio_recorder_controller.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/audio_recorder/audio_recorder_controller.dart @@ -174,6 +174,7 @@ class StreamAudioRecorderController extends ValueNotifier { /// Shows an info message to the user for the given [duration]. /// /// This is useful for showing messages like "Hold to record" or "Recording". + @Deprecated('Use StreamSnackbar via StreamSnackbarMessenger instead.') void showInfo( String message, { Duration duration = const Duration(seconds: 3), diff --git a/packages/stream_chat_flutter/lib/src/message_input/audio_recorder/audio_recorder_state.dart b/packages/stream_chat_flutter/lib/src/message_input/audio_recorder/audio_recorder_state.dart index 96bb1f00cc..1d496f59ac 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/audio_recorder/audio_recorder_state.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/audio_recorder/audio_recorder_state.dart @@ -9,17 +9,13 @@ sealed class AudioRecorderState { /// {@template recordStateIdle} /// The audio recorder is currently idle and not recording any audio track. -/// -/// Optionally, provide a [message] to display when the recorder is idle. -/// -/// For example, when the user has not long pressed the record button long -/// enough to start recording. /// {@endtemplate} final class RecordStateIdle extends AudioRecorderState { /// {@macro recordStateIdle} const RecordStateIdle({this.message}) : super._(); /// The optional message to display when the recorder is idle. + @Deprecated('Use StreamSnackbar via StreamSnackbarMessenger instead.') final String? message; } diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_chat_message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_chat_message_input.dart index d0015a6179..af6525c535 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_chat_message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_chat_message_input.dart @@ -149,30 +149,18 @@ class _StreamChatMessageInputState extends State { const targetAlignment = AlignmentDirectional.topEnd; const followerAlignment = AlignmentDirectional.bottomEnd; - final idleMessage = state is RecordStateIdle ? state.message : null; - final showIdleTooltip = idleMessage != null && idleMessage.isNotEmpty; - return PortalTarget( - visible: showIdleTooltip, anchor: Aligned( - target: Alignment.topCenter, - follower: Alignment.bottomCenter, - offset: Offset(0, -streamSpacing.md), + target: targetAlignment.resolve(textDirection), + follower: followerAlignment.resolve(textDirection), + offset: Offset(-streamSpacing.md, -streamSpacing.md).directional(textDirection), ), - portalFollower: showIdleTooltip ? HoldToRecordInfoTooltip(message: idleMessage) : const SizedBox.shrink(), - child: PortalTarget( - anchor: Aligned( - target: targetAlignment.resolve(textDirection), - follower: followerAlignment.resolve(textDirection), - offset: Offset(-streamSpacing.md, -streamSpacing.md).directional(textDirection), - ), - visible: state is RecordStateRecording, - portalFollower: SwipeToLockButton(isLocked: state is RecordStateRecordingLocked), - child: _StreamChatMessageInputContent( - widget: widget, - inputController: _controller, - audioRecorderState: state, - ), + visible: state is RecordStateRecording, + portalFollower: SwipeToLockButton(isLocked: state is RecordStateRecordingLocked), + child: _StreamChatMessageInputContent( + widget: widget, + inputController: _controller, + audioRecorderState: state, ), ); }, @@ -268,6 +256,10 @@ class _StreamChatMessageInputContent extends StatelessWidget { // Return if the recording is already started. if (audioRecorderController.isRecording) return; + // Clear any in-flight hold-to-record hint — the user is now + // holding correctly so the hint is stale. + StreamSnackbarMessenger.maybeOf(context)?.removeCurrent(); + await widget.feedback.onRecordStart(context); return audioRecorderController.startRecord(); }, @@ -294,14 +286,16 @@ class _StreamChatMessageInputContent extends StatelessWidget { // Return if the recording is already started. if (audioRecorderController.isRecording) return; - // Capture the label before the async gap to avoid using a potentially - // unmounted BuildContext after awaiting. + // Capture the label and messenger before the async gap to avoid + // using a potentially unmounted BuildContext after awaiting. final holdLabel = context.translations.holdToRecordLabel; + final snackbarMessenger = StreamSnackbarMessenger.maybeOf(context); // Notify the parent that the recorder is canceled before it starts. await widget.feedback.onRecordStartCancel(context); - // Show a message to the user to hold to record. - audioRecorderController.showInfo(holdLabel); + // Snap-replace the current hint so rapid taps always show the + // freshest one without queueing duplicates or animating exits. + snackbarMessenger?.show(StreamSnackbar(message: Text(holdLabel)), replace: true); }, onLongPressMoveUpdate: (details) async { // Return if the recording not yet started or already locked. diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_message_composer.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_message_composer.dart index 8a14a72e1e..0bcd4a68f9 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_message_composer.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_message_composer.dart @@ -95,7 +95,7 @@ class StreamMessageComposer extends StatelessWidget { TextCapitalization textCapitalization = TextCapitalization.sentences, bool autofocus = false, bool autoCorrect = true, - }) : props = MessageComposerProps( + }) : props = .new( onMessageSent: onMessageSent, preMessageSending: preMessageSending, messageComposerController: messageComposerController, @@ -147,8 +147,8 @@ class StreamMessageComposer extends StatelessWidget { @override Widget build(BuildContext context) { final builder = context.chatComponentBuilder(); - if (builder != null) return builder(context, props); - return DefaultStreamMessageComposer(props: props); + final composer = builder?.call(context, props) ?? DefaultStreamMessageComposer(props: props); + return StreamSnackbarPopup(child: composer); } } diff --git a/packages/stream_chat_flutter/lib/src/stream_chat.dart b/packages/stream_chat_flutter/lib/src/stream_chat.dart index 62b9d5bbc4..032fa10513 100644 --- a/packages/stream_chat_flutter/lib/src/stream_chat.dart +++ b/packages/stream_chat_flutter/lib/src/stream_chat.dart @@ -199,7 +199,7 @@ class StreamChatState extends State { onBackgroundEventReceived: widget.onBackgroundEventReceived, backgroundKeepAlive: widget.backgroundKeepAlive, connectivityStream: widget.connectivityStream, - child: widget.child ?? const Empty(), + child: StreamSnackbarScope(child: widget.child ?? const Empty()), ); final theme = widget.themeData ?? StreamChatThemeData(); diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index 2e1154ffe0..a434f1a6e5 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -98,6 +98,20 @@ export 'package:stream_core_flutter/stream_core_flutter.dart' StreamSheetTheme, StreamSheetThemeData, StreamSheetTransition, + StreamSnackbar, + StreamSnackbarAction, + StreamSnackbarClosedReason, + StreamSnackbarController, + StreamSnackbarHost, + StreamSnackbarMessenger, + StreamSnackbarPopup, + StreamSnackbarPopupPlacement, + StreamSnackbarProps, + StreamSnackbarScope, + StreamSnackbarStyle, + StreamSnackbarTheme, + StreamSnackbarThemeData, + StreamSnackbarVariant, StreamSwitch, StreamStepper, StreamStepperProps, diff --git a/packages/stream_chat_flutter/pubspec.yaml b/packages/stream_chat_flutter/pubspec.yaml index 555b1c430a..9a9b14e18d 100644 --- a/packages/stream_chat_flutter/pubspec.yaml +++ b/packages/stream_chat_flutter/pubspec.yaml @@ -57,7 +57,11 @@ dependencies: share_plus: ">=12.0.2 <14.0.0" shimmer: ^3.0.0 stream_chat_flutter_core: ^10.0.1 - stream_core_flutter: ^0.3.0 + stream_core_flutter: + git: + url: https://github.com/GetStream/stream-core-flutter + ref: 5353033ea55b88e8f651c604389f0b7b0a839ebe + path: packages/stream_core_flutter svg_icon_widget: ^0.0.1 synchronized: ^3.4.0 theme_extensions_builder_annotation: ^7.1.0 diff --git a/packages/stream_chat_flutter/test/src/message_input/message_input_test.dart b/packages/stream_chat_flutter/test/src/message_input/message_input_test.dart index 1b39237008..28ef67bc4d 100644 --- a/packages/stream_chat_flutter/test/src/message_input/message_input_test.dart +++ b/packages/stream_chat_flutter/test/src/message_input/message_input_test.dart @@ -2,17 +2,22 @@ import 'dart:async'; +import 'package:alchemist/alchemist.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; +import 'package:path_provider_platform_interface/path_provider_platform_interface.dart'; import 'package:record/record.dart'; import 'package:stream_chat_flutter/src/message_input/dm_checkbox_list_tile.dart'; +import 'package:stream_chat_flutter/src/message_input/stream_chat_message_input.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import '../fakes.dart'; import '../mocks.dart'; +class _MockAudioRecorder extends Mock implements AudioRecorder {} + /// TODO: remove skip once we have a proper message input test. void main() { final originalRecordPlatform = RecordPlatform.instance; @@ -1037,9 +1042,214 @@ void main() { ); }); }); + + group('StreamChatMessageInput hold-to-record snackbar', () { + late _MockAudioRecorder mockRecorder; + late StreamAudioRecorderController audioRecorderController; + + setUpAll(() => registerFallbackValue(Duration.zero)); + + setUp(() { + PathProviderPlatform.instance = FakePathProviderPlatform(); + mockRecorder = _MockAudioRecorder(); + // The production AudioRecorder spins up a 100ms periodic amplitude + // timer; mocking with an empty stream keeps the test binding free + // of pending timers. + when(() => mockRecorder.onAmplitudeChanged(any())).thenAnswer((_) => const Stream.empty()); + when(() => mockRecorder.dispose()).thenAnswer((_) async {}); + + audioRecorderController = StreamAudioRecorderController.raw( + recorder: mockRecorder, + config: const RecordConfig(numChannels: 1), + ); + }); + + tearDown(() => audioRecorderController.dispose()); + + testWidgets( + 'long-press cancel on mic shows the hold-to-record snackbar', + (WidgetTester tester) async { + await tester.pumpWidget( + buildWidget( + StreamChatMessageInput( + onSendPressed: () {}, + audioRecorderController: audioRecorderController, + ), + ), + ); + await tester.pumpAndSettle(); + + const holdLabel = 'Hold to record. Release to save.'; + expect(find.text(holdLabel), findsNothing); + + await _cancelMicLongPress(tester); + + expect(find.text(holdLabel), findsOneWidget); + expect(find.byType(StreamSnackbar), findsOneWidget); + }, + ); + + testWidgets( + 'invokes onRecordStartCancel feedback before showing the snackbar', + (WidgetTester tester) async { + final feedback = _RecordingFeedbackSpy(); + + await tester.pumpWidget( + buildWidget( + StreamChatMessageInput( + onSendPressed: () {}, + audioRecorderController: audioRecorderController, + feedback: feedback, + ), + ), + ); + await tester.pumpAndSettle(); + + await _cancelMicLongPress(tester); + + expect(feedback.cancelCount, 1); + expect(find.text('Hold to record. Release to save.'), findsOneWidget); + }, + ); + + testWidgets( + 'rapid cancels do not enqueue duplicate snackbars', + (WidgetTester tester) async { + await tester.pumpWidget( + buildWidget( + StreamChatMessageInput( + onSendPressed: () {}, + audioRecorderController: audioRecorderController, + ), + ), + ); + await tester.pumpAndSettle(); + + await _cancelMicLongPress(tester); + await _cancelMicLongPress(tester); + await _cancelMicLongPress(tester); + + expect(find.byType(StreamSnackbar), findsOneWidget); + }, + ); + + testWidgets( + 'starting a hold clears the in-flight hold-to-record snackbar', + (WidgetTester tester) async { + // Deny permission so startRecord short-circuits before starting the + // duration timer. + when(() => mockRecorder.hasPermission(request: false)).thenAnswer((_) async => false); + when(() => mockRecorder.hasPermission(request: true)).thenAnswer((_) async => false); + + await tester.pumpWidget( + buildWidget( + StreamChatMessageInput( + onSendPressed: () {}, + audioRecorderController: audioRecorderController, + ), + ), + ); + await tester.pumpAndSettle(); + + await _cancelMicLongPress(tester); + expect(find.byType(StreamSnackbar), findsOneWidget); + + final mic = find.byKey(const ValueKey('microphone_key')); + final gestureDetector = tester.widget(mic); + gestureDetector.onLongPress!(); + await tester.pumpAndSettle(); + + expect(find.byType(StreamSnackbar), findsNothing); + }, + ); + + testWidgets( + 'composer subtree resolves a StreamSnackbarMessenger via context', + (WidgetTester tester) async { + await tester.pumpWidget( + buildWidget( + StreamChatMessageInput( + onSendPressed: () {}, + audioRecorderController: audioRecorderController, + ), + ), + ); + await tester.pumpAndSettle(); + + final micContext = tester.element(find.byKey(const ValueKey('microphone_key'))); + expect(StreamSnackbarMessenger.maybeOf(micContext), isNotNull); + }, + ); + }); + + group('StreamChat global snackbar scope', () { + testWidgets( + 'descendants without a nearer popup find a fallback messenger', + (WidgetTester tester) async { + StreamSnackbarMessenger? captured; + + await tester.pumpWidget( + buildWidget( + Builder( + builder: (context) { + captured = StreamSnackbarMessenger.maybeOf(context); + return const SizedBox.shrink(); + }, + ), + ), + ); + await tester.pumpAndSettle(); + + expect(captured, isNotNull); + }, + ); + }); + + goldenTest( + 'composer hold-to-record snackbar', + fileName: 'composer_hold_to_record_snackbar', + constraints: const BoxConstraints.tightFor(width: 400, height: 240), + pumpBeforeTest: (tester) async { + await tester.pumpAndSettle(); + final mic = find.byKey(const ValueKey('microphone_key')); + final gd = tester.widget(mic); + gd.onLongPressCancel!(); + await tester.pumpAndSettle(); + }, + builder: () => buildWidget( + Column( + children: [ + const Expanded(child: SizedBox()), + StreamMessageComposer(), + ], + ), + ), + ); +} + +Future _cancelMicLongPress(WidgetTester tester) async { + final mic = find.byKey(const ValueKey('microphone_key')); + expect(mic, findsOneWidget); + // Invoking the callback directly avoids depending on gesture-arena + // timing — onLongPressCancel needs a sibling tap to race the long press, + // which is brittle to reproduce in widget tests. + final gestureDetector = tester.widget(mic); + gestureDetector.onLongPressCancel!(); + await tester.pumpAndSettle(); +} + +class _RecordingFeedbackSpy extends AudioRecorderFeedback { + _RecordingFeedbackSpy() : super(); + + int cancelCount = 0; + + @override + Future onRecordStartCancel(BuildContext context) async { + cancelCount++; + } } -MaterialApp buildWidget(StreamMessageComposer input) { +MaterialApp buildWidget(Widget input) { final client = MockClient(); final clientState = MockClientState(); final channel = MockChannel(); @@ -1094,6 +1304,7 @@ MaterialApp buildWidget(StreamMessageComposer input) { return MaterialApp( home: StreamChat( client: client, + connectivityStream: Stream.value([ConnectivityResult.mobile]), child: StreamChannel( channel: channel, child: Scaffold(body: input), From 00ad05dddd1982024bc56e03b9d7907c152e9727 Mon Sep 17 00:00:00 2001 From: xsahil03x <25670178+xsahil03x@users.noreply.github.com> Date: Tue, 9 Jun 2026 16:57:26 +0000 Subject: [PATCH 2/6] chore: Update Goldens --- .../goldens/macos/localization_support.png | Bin 158750 -> 158833 bytes .../macos/voice_recording_idle_tooltip.png | Bin 10351 -> 6656 bytes .../ci/composer_hold_to_record_snackbar.png | Bin 0 -> 5435 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 packages/stream_chat_flutter/test/src/message_input/goldens/ci/composer_hold_to_record_snackbar.png diff --git a/docs/docs_screenshots/test/localization/goldens/macos/localization_support.png b/docs/docs_screenshots/test/localization/goldens/macos/localization_support.png index 42ede493df669d86311f83c9a133acaa910cfac0..7450f2fe64297b3e689feb9d49bf3f6e50ed45ab 100644 GIT binary patch delta 54813 zcmXtfWmMDu|280vvUIW4gsUUn4U6WbH^PZSvIYYUy@85#| zx%_ZNdo5+H$$i>?m4JwpsOd#~<;KNkXa6JQLTyWgo){rC6?ok8Yv!GQ)?rb3d3l-r z=;-*U81daBvF}IU!4=nas~k4|`T6Wd%i*Xypf6`aW-#R5fQp3+_ABjK3kbH;GUS~W- z+aI+(BfP&>;60lfjg&DtJ$kAHR=qa;o;2=-XpR$sL2KZ|hE?51+o|^Ns!q*d9u8X= zE}}NUsbCN1>MIwAz-(4G-FDjHSW5E8I@N?NTXE^8JGKqfU7OtLX>x3I7%r4LgNW_b zx0MlgK`Z4PuSt~l*gj#=XX6tnXYFNw9uCl6dg&q#R+qRwnKyGE!0}Fj=Eld*eUevH zM{l-NTb#_jFN`@8Y(6>ZKeT2X+}eCga#xuWr5syQ-TZ{{LR7c$GJZ(SXyF<%7_quf$&}mYMk_YiBb~)OVfNUNq{1B+TI;+OhK^X4icvqSg!M z$Qnnh5U@jZDjTsBaMR_#^IF(gx4{cEMSYv9Z+_(&kAd9zL-(3<@1x#76Gwe}3QoQ2 z{EzOdh^&XUVe{=p`~TkL4)h#lal6#TH{TozcghzG)ygd_(f?jH)aAbV(RR z%60oWm)~}My8qI=#nD+V{Dtec^>IoRsUr@v-bHHfPurRHF4x|VSOibdC+x%CkjWfe zAh*-E_UbP8+lJ)RH)tdpO8MuuuD{iQ7{T)O7b&)VpX+{?&DiQ;{hW*CUf%b2S-4FU zKWn!iNP05-El0_2iYzAtNi1nVqj#yb6z--?p5ELWX-+Aqv;cXJp()!A|J+0;XctpF zKaYI8(`0&gZs)7#K-yahiI$1XSAP3$IpBT`mU0`n=GvXP<>jiZ5r016tVVJ830$Xf z^~auY$2VWaHrYO!vMm}&NrY9$;p5>j1DV&}TiWNfwX^EXI|#E5d>%P!6ul_eP4?4n zR*2(RVd0l74IqF7Z}sHh_l5z9!E4DlZWFMsqZvxe@vcU@(AkdgGPoG_xS(Q&+`lWl z#*KlZ@^3P1`@X;NTvo@-g7|?`y>XK#Ify?@4JFW@`&z3c;XMdL!nXm44TPG;jjAkTg~_w?<@jmzA zK)CCpTGYSWp*)sDZYIp-z7@2n9#RMEmTgr?FrTjV7yUK{neSotZ*Ez$D7dOg`V9oH zE;`&?kCHZB!Y(uZdG1EF&e2m6e%}({zliL7`f>uF;SVWUp-!6U93vgtS~G^L3rs%T z?-~p}M`8C@7sbg=Fos!ECpf61fTnAI0~8*sVr0TjHS>yGw(UWyFrLuBw&wWWLH}UZ z$?X0`M>6TvhxB0-l=GXj!?Wdi6LN>{`(8qe#}N(rfa6cM>7fHfmkKM8e`?&-=$<~1 zEy4hzdb2AbkLs?r$yqR`1OjvE>Qw*Vl3CZY2-634NWj_AGn7lQySw-P`0g6Fz#HR} z$L`?_$!l58PQBll*(Zh-Xh1#k}qZjY4O0l7pvMl9B7z zuKyjB&|Onj%~2S4&tUiCswPA%N;LO;!s$!L{S^JUvAbt>9!D7R>5Jj`d?EMuVpr}e z{}%S0*%vHqV}upPkT-g-h6Wf&aOT_YaE=kKF18rA6DPKWBD6MSNAbHxDsz^Os4;W! zSkAE_Q%X4KRKaDsjplH_3NPCyOnP3u2MC#hUXa*4H;Pfn0hv%1hLPVJll&?vYY=!mo5@506c^i-2T#4e{pEn!JCSJb<&SF zX~5upvrgH?y7zM6;87c@&jp&EQ!56`pvUQAit-89ws1Qn_-x4!fy#A!s~^7C+Au)KW0cTI&H+wbre1HqB+b+>`;q# zC`2uM$H!`=%*e631b-E#XDZGupj^owOi+|J&A-tQnBa!b!$p_=S(DuT14+x@KNAt^ zN^KXw5S^7c%iqNVn|D-VEO61kjmv$5c@a#Ivc`Z;<|7e`CEKT9p1h2;-2nQ65QmVK zV2KRQLto$;ykqP|>E%DGkBV~H`A=c0^Y+U=9~Zn|#`TnG?x+pV2aHjkdv7HWw$T1W zfWmWCz+!$$)rE>ugIJ4qxqJOIsK5T}s1p?^o9?|mXx`W%>_*u-1;4(($?fm+4p2Dv zaER)7(Mmt>SNZ7!#lMjq}(jFssVJ-gl zc2?hV73C1-=z1#99i3c#GrM@ZJTLw-ZRK3A#6*|VOWnA%FmrzP~%S zUkNfB!s}Fc?*>?yfNq;h1Z})Ow;!r{_wIzyWnFGx6qQ+s-;pU?x%-%U^)M;L`rEgU z*GZOPAJ)%1tiF;NR%U)Dn9MJ4AQyD3XZ$M@Ys2S(=zF!Uxh%#xpkECsYvq(CmPN z8N_O!-=rzzsRs*1wyA#b!+#gco1j_pK5^mVmje29iPnF>ZhUQ)JM_?f0sDA&Prl^b ze)NHRV0YCQRCDkd0QJ6RcqaJQeI zl7~ziVpPAjQ!=80q{9wDwWX6S(N+J7Rotr(!i-y=JI5B(NhooJ3C&-eCwVyNoWyyC z28hbtdM}QE#{_g|-mazP=HXkcEABb#03SQI@~6tn{hJZX{#QfYOy-Td630R5cSQ)^ zyX)%yzUka>hX9Fdzmtr~KvT0}s|_|>0YvG{y2~xt;}wb-YOrpL=oOFN)L4vzJiQET%bYs{7Q)BrHK#mXjEEC% z+RB{1H)ZN`D^y@*Qf@3TR2ItNJ}!aG9xGo?qLy zXppT(c<#SVc()Pa$F&oY9_$2%a7Uwk(8`-fm^(QU#QW@T94C}>(Jp#(KOBgZv zN!?lD;k9h5Gy^gd(53~S79{Eak3c|~)1)TGpLYPR>*(iU0v=q#Bt%2E;TRqUw-kP8 zon3J&%ifIL*XxfPgW%$XV`F1fA`$TJb%B=sGOX6y;>U;luan)79{)Sw z>$_T5kGef&ZZWde1?%FZyBP@0xcYu!%)LC+U(0W-OcnTF;ZZ zhWB1~wVa$eOwuepWp(4DeDt|mH9w^4MzwEVi9S1e!b0g8Z=8Q~M&WQNNTw>>k}#2a zHl!_>rlt(;uB+CDs_1ef$p^=VjEt}|=biCOMgMPu83L^p3aPU1bAHIJtY|BLYH7}u zs=4TS;n0?MqxS|T+5j4N{1x#AFiI`T+5OVWaJ@*aJ-tE7O;cR#TzeHm7kYQ&(ecfl zDVt;OIF$N$RAiZ;gd0!B!&afleq@~};q1|0zXdh-k6g`Q0z4g9Y_@o`TNT;mCw4F& z_n*EHx?ctGhD~qzjIU>kA!8yaiA7; zn@8~&f^L3QC)deEhNi9Rj8`GsN`E84W$`0W{(NHU^pV)X^PIGwQ=qz;+8VpD(SQ4m zhU~TkhFjsiRo5bI)N7`XntCSA3}(EdW$y+{Wf+x;M+M_qSgQ7UFS2PBG$XQT%MTah zq%tbo>xa!S-@U28u_$!{BJ7k&Scn|3mCca?HDd7Sfu;gDd0(;WFL)Y)Rg3sRDBa|J zR4}Q|V>gg;mRI#~`!PGo(WfU9;VxO&q1NQ3TV0&uW;)-ol9zJzO}MyF)WlRl=zLc{ zmm#!vYu3&GJ%w^xe?XE`h(xn;mR%8g@IiED1Se>YOt*8wt>_-O8y(6h?`au+;kFfT zTG?#aQRYapUnXvstS4krazUUf?p>aqseVOf(d8<~QnOv=(;|Vd4)wqEvhzagRaZa? z4U_l)9iI7CsTw=xHYIvz-K4TXo|K0lX`h%R>6sK1+Wf14Xd?d8;q~#>OjG9e#$5bc zYCb*Uea?@!4phK5zS=ER96=okkQFz7<&V)98L3fhr%)O@505jbw(_iLV=x=~5#GTU zT{Ar^-w$4m1!9FAc(?iex+hZ%2THd?B(;h*EJWDo!I+v`VupL$e40bxPBltO-Uclw zI70`D6(#JfIl63j=CdE*Hp9j0x|WPJIa>Ais3K(7P!^b!jJ`epLQhYK(;1_SE=pV= zE`)U%T`)awKoPtRGu>vIE{kQqG(2fX1a@LLQx_Fr6*E&v-g@A$*Hv6AFOq#e@yB>D zFEZG0-M*O9@^tD#E#`#&`Hh2)*6SgyaTZye%b@0aFTKZW_c!UEZKo1jF2j~si*w=~ zMaz#%S9~D-=c7nbI_RWl?k#;W*O3UZFZAkStnD+17~6}a?}tS897wQap86b$EnCE*}4Se=$5G&?Z)C^tOak zTV_#s^lnQR%eA?zp+*1PZ;zLvTL800lOPSYWC^ucAqWFOQ39j%8`z8;j+wsNMW}X_ zywqBt1 zdVMfS3n@eu0b*(W@(a+#9wGWc2VXR%@C`!wVXPoOO zO1XkL;?~u>Z*}zYesaIESY*rTW_RHFH#si_JsEIqm?+M3nv*pd%BIbdoP?*&-%`XW&QG+wdcc zqoS(H+&qBqECCNac(*^S(UTPgx&9rmb`;)yHH&v*JdS&E_|qR-j3#WY8$Qrz`(!_&`Fv{&A5LzagZA9g^w zJeflz-#y&j)HlW|ElkOY_d8kbwa_2i2RAf;nrY&=lN(jlDu3JhiceM^2d2!0m~}A; z9>deZu7c$TY(&_5I|CKgJO^d(hW67%(>=aSM@$CXg3^tazV%~W(ofdE^hN%l4&p#I zX)eQ#xw%emNJ9$;$DZ1KMQ{i*58~Z!$cf~IUz8Y0kX*c17DiYmkAjy41Y&sSqkMqP z#~4auRE4~hvy1!hwlWI`uJ?_*bg*{X$*J6ul!mv#)C4dBTg6DgdN!Huwy7u**5;f` zrd4cAf4=Z@m;@W$P7W?z9gkihpvFg8m{>Q zLp@g_R-NUfE%)6b>&COebQX)I;`hK@$JR~K7~T<~;YzNeKl}58=$49zkO$n9$oUb` zc$I3FG`y(rCy6djqJ7ROHvEZKSCoz~zo$gV!J6p{{i@gx&C7LO5j*Gln# znXL5QWBsgGO@3RTrAEf7^mG;fNCoAtwg7MS6=*2Y5vdZ9&&|26KG?Y2kv{^AJez9E z?V@E6LJIpFZ6p8*Aa~_ozzX*eWR_R)FPu*r5i*d@@1~9bop8?d@9f|D@EJ*3DoqQ<{@=EOR2BC3ho-4=so;PCY%5 zy25;MqE9HPlQl^^4Ryluddf|=Mowg7X-Vd~Fu?-R=t$KnB31-f)MblkQG z4|OAa50o5hN{Ne7jkP^@n;$bzVV!vHLM=cwQyeLF6Yr?@#^!Flkf#^U)v7PK#M8}W zK9XdP@mU$XFWh_`GMK55dj7uMahBq2j+`Q1*cqgbU7J>4hWZNCJPlfgDg@MVQY#_N z0O$TvQ1S7?uq5hLu0dbdAb8&Z(tlsUx`%|#-qF2RP_FFZU3d78JXaW8A~s(kUc^nJ zbF}q?91@T&bw|Oad)CUr&MIFlFNW$StudPOCotY8c+6I-E)DbkP;Y4EsQirRG-`_% zz2a)3VXx!0-yD-NZ;|2?YNTyE=9dE*^K7ltl#FYx22iQuA!0HMHdYkJXNlzYDn(a@XGqSM?gN^cOBC)$=Zf0z!Xiy1rV)FcJ++MYTc}M09_@9oQ2SkHqg{Q^E=qn+)z%GWgCK zjb;Od3}*1#u=ruXo;|EnI7Xyc&rH+1-`yPSu@_5Cp%>0P0un`HemiTGIk z^REdN5R=c)^!FVr{1a1m0A=qM=1zVJh@|WH$Fl(3r}V@+vjQDY_Ll|5(|4^ESD<-} z;OuahH^nV1$_wgyVnI!!5;Ug;9Rw=>c5Bhmq%nTx4U4iLtq}Y{2`kXRtz{Bq3pVY% zck>Xz{h&oR_F}Zo4M#+Ss~Yins?ZL!F?T~}1M@#|TQ_DXG@p`NOa(_`rcB%}w$pwnfb(HuI($ zpk~gStk9i)_Wwy*q;ma*k0wJ!@^tmQZrdSOOwx6c2y&BHH#*c0i!p%&=EEb3DY+)Q z)fYqg!-_4PPR=;QZd^n$m_LN9U}V0MH^^bARt;Z36|ze^iIeL2EiLt~EOq5=p>W98 z$XJceHwSJ!3pLMZ%ZrT-I-m2)UY2!_Hgb zauE#>Gw!665GoI`oQ(s6DW?tkSDPuP69bT|&b)2Dj9CBtEhg&qbu*{c_=n|bf7+dR zeU?qp&UjMnaGXJsUj~|jmoG}jd@JH>4-CS^(1Ie|U9YHfK97B3>RhRP&sOJX(N{q0 z_zZY*G^SzR@uDi^vo#S(%CXkHghfNrtjt<>)oiuL?K*QhM~49e@F@++1-k(Rx9MVd z+?a(K-DHYzriPReZUho0G_{M;o>iF`lOFNvrZ|%r1&_*Rb>_p;bSUA>ikugWLc_>Z-`uGiVV&Q z7$CzuG~_R#EWj(!QkIC4T|5<*{_pZtc7CV*u8O7Ax4h(6UUBc6e{^F-l~w9TH!+jV z*xk396|IK7awW&M_~*LC%Pju#n|khQDQ@Y%g4&{Mb%t%R!W2RZcN*h7-67aedfG&; z^T%CUK=NOzPypTrye<)x@~B2f!KHonGs4`@!?&ADXBe=vjSgeoK|_sjbydi>r(`(@ z@VC8DPCUPLMW>QpCPL#|D1Wp#+&A@%Pdrm1uqrw-h$MAY6N$eTzTx#8S#s{1bwQo-fhS$?ubN3oRGZ0!NET@3 zQ1&8fAk=`^N}!Z|zxpPd=EZ1>rQ852=*YFd0|s&%t*|fO4P^fJHSLI5;cv&fMz7^9 zri=m}bm(57+^6TWF^$D*@!(I^NYzYeIY;nXR2sk>^oBnOlVh*%TvHIkj>VL)WUjn4 zprv2F8EUNNd{Uj*`7|blVZdGP`L5T@icnCp(2EyAWN#f9yMiYnZuqq$A<$@D4kj-S zWVM@hXCR38-?^+WheI?{=@ko=%R*W9g6@zv&RuVqjyY3h%I7p#Q7QFUZaGzPMhPid z8Mg*3r!bK6df=UhAX={;O4jEIQpZdbju__Os9INd{Q8}lQ8`Vc3nJ1+14*gi#`*Sk zBfd#pcdbbfHd)3kzgpAt6c@=$I65%mJT@ZY&8yztiHEKhNqqQ%K3CZ-F5N;x31c~D zGLU!MF$F0sBs5iT0(noh;?aG&rcw3=6>KQA4-4l?5DFH8~aYcr17>>IQ2fJ_1O+~If*qIV%I0rsHNttd+d z@RU8sP<0p??AsLZg|8C zrD`HfC3cc-F6>?mVL1_swpas(TrEDQd20cC*JK|qCX*V<2Kqfe@RuGc{baY5BDw!8 zxZlRXbJLh2W_xmg_)ANu$~kvd%4rvKd$(n{_GsxA%}USy@)E*7YgJ=5j?LT{t=B4V zza1yT?wiYyfGCU4a;HD;9YfG3WvL>Ad?)LriRWBV#$?{67pGmd;MAq}ii?LrL22)W z9W=+@Jm8nYpE2a(aqb)_QbO2EK4m0%l8yVv(XqW|Fo2-~rtskx*o#4g9@?RPU$Eqo zb)av*cowAy&fT$YWkm~Xux;V8-X)$Xj<>GEC7lLl57Ie&J)ALQ{~UbydxGs9LQZBv zNAXgKyQapH;&9zbBKBNz=`QjNCrAoKWa1TVwM*($b+u8o><5!pM;VpBCEV6FjE=@i ztpp=IVZm*NK%r7ynLmw}gv&wSq)l8PB&6|eS(6dQ+qp0tbTwOs9W_J|8e1V`UZ7f# zb*s@Q#O)9oGEdypXNC0bVTfo}xEe1!b6&d1zC>a9RJTK-m*V`rKOq^Gg)8Q$8h`XJ zAFbaQ!RCzOahn^j5aL;4B#ejaE65o*^~2S~)4l;9_=WDBtH<@Sq6_NuS#%*mO4;%? zS<9CmGe0(t5-F^ZzA35H+ls1mqtH=d;|RH^PVa}hW#jFxKXKi5CgEA4 z66Fp=?qF1F=X}wD75jd4ij2IDj5X-d^m3%&XB4B@kUB>IHY+PA2rdPz@xW5{8VmtI}je@%P>)-i_Ej6`am|lHS4iz z>t7dvYggyAHvDmocjV=!d#^3A{uIUwN2Z2^uhRs~+igxN^SeSDyt_;L+n@7Pfmer} zKxrfEjwmYq+9%pftCjQmDN$p!Kqq{h4dgxiIg!&=T<_!g(>2V`m=_L#%v(&6^1=nm zZ#K!!({J%_9qK{T+u}-RYoVK+75Jwh*WEvaxaedp!^|2Y`(f>EztfUDRiI!~Y7vPt znE5P|nKW9jPQSJ5Rn)3qF}%`rQGfxk=DZjAHAQ3iuVs+4316QEVT$EqP-BPKcL!@$;crpE;1LmXs-wW&_>R$Kc>j@!m4>XQG zLNt1VTK^_AOf6`T*F~P(NAK0K$!8V3^ls$33w*kuY}WM#ngpw#kyo+2@vU0`{~vwmZ_}M{lx@snpC_`6`qxKcvZ`5$r*c7UP-9A${*JxeX=pBN zwB>_%yYEtFMGEsy3Ms3oRYjR0AdIE)El^>{rG%1e=8D+Cf8duOg?AxrRZS|AzpEG9=!Pk2>%_&&{NY#}k9{ckYW`Vq0%j;UXuORKwyae~4 zyttZJmpMVO*|>M0ZvG`PP`4t2`PojT zbqE{X2;;{^TAS0~_b)&*Z+YjZP}z!Q60;Z6q646n;zf013vRGrQr86vN!c#4zg#85 zFTC9HO8qyQ-jqLBjNh@s1-_A2@|Vk(C$VpI$o*6w&2-C&7IxMWafTG}S*WH@fqL<8 zYX^$V>x4wZ$_W(PSa2^XfXAYD6IMjHL?9R+dN8ppzlJpJ;wuKfC)Z}rsC8V3 zT{_Zd2AAucf9Y|!@*Y^?LbzlXDT^>t^!;uo*D0{T5n?__N$1D{3Winf^GW5FsiKRB z7(t_0F~V4XMz233sPt|@yjw-4Uz!3CtUDee@6_AG*_w+-Y=Ub|!Nx)GGL!7mA32YXcgNi9KuO>s#<2JxV8#c3+SO-j zNNK}|9v{Sm@ox?=IuxOl$TujcUpt#E7R5l5}ABzs?a` z;cH&L9L*srgulgjshcTiiUmhf%6YWQbh70zN^mu<9jIlg;ES5vxzfKEc-Cfywwl$rvOBwVrH8eW*zp1;h%JI1d2cd3`z&(RLvCvz$$V|QQYcJ=3yBu)G zi0cpJ^PJb{{#ii}{=QQnfxXewkxAixbm0$l0Mi=nQ`jJK)mIlbzrEiDppX;15nwzT z@?7>SP-C&e0msDHql7VUGi%z4?o>qjXnoaPX5VMF<3g3zzqknAm7h4y-whl}2~Fqt zidOX^f%In%znfE9qpNQ-r3@cO8DEv4tDMps;1?{#mP;C8d=QnYgQGEH5+#?NqO{fV z0m#t)laCAj;y=E?gMW-pw`B;mv^+SYj>a?}_i3cge)BzI+j@PJYoS*&&QJf~=V`#! z&|9V#$8A);F%X+7+A=zMUZjbbgudKI>Ndz}@s4ZUu#5lLoYs@R$p1%6D|Qivht#mi zqFux~cKc{>Z6&FVLp#sNKTW;OU+mkc^nf5!M*~8o+t^m}nv;a6($A}0Y*C!Uj zs55>Rli-R1CfF=Aa8{9>aqpky%Wp_4N%6Y-sDZDvT5~G)DF#fng_K>+%EC7AtO`N4 zE#9q;*kIFJ1c<#OAmHf@rb>m~A(e;|cB<&DFf+x>!l<}*$sz$?II+GLG942K^p@ZS z(auzF{PQirIj!08X9th9mdFf($R9@}IF7Hu>I@2<`SMce$#p4Ao-Um!MYqv7+c*AN zT@fMDtF7sjp>83b?P zQrC0si#LUk8Ke`eCQPe04*pvK0c`}g6HiM+AAALvb}wI-deczv8>L++E5+lXea645 zDs6EH`o#XptbLAgu#aOU+ED|iZS_rIO-Mt#%UsqqCmvc*Pd=G+a|yr_bo|o(PT29Q z!BBD^+h;Y{(g+@U)(47bQJ7} ztNf!@5`@{3^j9&~?yP0tHQ~N6B3OP#+|p!|lAg7temDY7)VFpTCHZV*lIW4XkwTm# zq4m5%u6U{E;3VCR;Q0=q@t>?fdJoP&Lr>k$1bhfoU#>N%TOU(W54b1ADKcoNoU*OO zv+ZrdSR8Xmu-~9dIw@Ef_T7FJSBKu{j6-`~yI|gSCBA1NI`5Z4U;eog*NTU?YWgbw zlSrb^cMg(@{4Z_qLq17v>uRAnk{z2WVSmM`Fw%C4Y-8ME)|v$}RK#M%SQ2$FsQg+_VlWip-!#sLm|T ze*D>rUU^o&n-6jSQ+AuWWA>hH%Rd%hPgvhvyeuWHVx<5gxZE;A_x)(-kxN4Q_0oCe z`<$ineTf+;;Div*eTS!ex+jXiiZtuFu4iiL4&ogO_wHQ!oHiC(@!Bt<6H8~&gD)3| zq-oJ*pcqEPCkt#OlN2Xav#J+dti0S}yk;8rtp~oQCdEpdCB!I+e{vlxIzO$u&`j4} z6pSm{;k4;Ov%lo%Gj-_ejPY-0WbmS!AfhYu_m={J1P{j|i+pt^Qn1mLZt!1ZJARsX zyJJOxZB=I+tjy+|4{>JN7As0A-Ycc>P))Ut*NB&|uhSnh{c$#6RQsSSwbFUl!TmO4 zN@SaubwIkNvp36^qE8=q+$|4}kN9J-Y&rDXN6hE^-thK9b;RCY;m2ybmT7kX@GqP; zshR`e)2f_9oLlDeD!MO1EL-*%HFJ!JUwpcYcr?jQB87Do-z@)_IjT*m$F?_>k89+A z&k*t`&+`@~Q_9`d*}G9S6(=_VK|TCiFs=iK5_9mDNuF+&$UOvs!F*@TB-U_0Y;4XTqf<)S5*j} z3>ewSc2)YAnC^kcvA>ru{Z?=`ntF-ANR7JejkY`o)uoM%!toG~N*|)?kk`$$o;%62 z_U{*>Lnn!)nM$JPXij6+UheH>pZ`%#{&h6MmL|u>L}3>DEJoSVL@p<7#GXr_}l#>$5Tvs9w#mi}>&X>YKfn zk+GX@LnJR2>rsFkIQp=(YwVHz3*RH&>Cute4<*|3h1aWhqRfWoNj+rD zjPURnvmI3Ox$-}AY)ZwhyBNYw2G>F!YD-CB>CUt*6dp;h)qjs4=t&EnY%Tu;7&bd! zr?UmsZFCBuNW7{uLu2i~(9ugg|1(~A*s|3k3OdBpE{qnN~0+sSil_cnQI1nBQdRhB6-`q_4wG7e&k?xfv zS4n@%%iRzq$Sv#E^(FEqjHagTCCPcuR(674Ca3zeoa<=$)eBWt5>-YLWdUY5ds44B z|KCN?H;;Zp>^s>!Ofu8P7^6?6B)_7S#V0*JKvSz^W-80u)gds&-c%c)OQIwh3o;+n z@SjmFs|;2Zrj>~i)}KP6J=K=+H1W*&KprS`ugM~6t%tAK7mZk6{_82RpxkvUq@ThV z494}s?JG?}9MGM&;F$d5@b(T6!)-1Wzz%%(ArlmFDEoZe>#oPC{8!zl3YTi_TS!m5 z!T$T1cV&vrFJj)x=>pCe^gC$1C{qQbKh7Yq)=|efFT}c&$vic$S@nx^-Lqyr9Z!|1 z`N&(Rk$@5Gw$Jp%fAk&w(I39+Le(M^k_SBbs`HH8RyYvyuU}Q$M;KCy7ad4N(bGkq zP}{&W+_0k9;p`?@UqVI=@1@v>AaiVX#nD0(H`~Z)I$(_A43H9@4`|P{P=_|x=CFpq z1jKoFUgxmd7hV6h;}X|G0vdbWT4nmIO?2xRXq{e9trz+XI4t)g$gty2Ntkxr+iSTA zJ*SHPbDNn!MC2}Uhfirqzs`&8^}6?(=o>d-$D`^WgLZ@Oymd6?%^q@|6io3$sLLDxLG`GBMT#KB{N=eC7xk<#eJ~_TmL!5&2J`F%n z5HH-Z#g(%OlI9c0=hc6kif&}}?nPVs^hHVOIt?V@&PFEDX31vDbJ-Nr@laT!PyU5;fKI zfS~c;#hjYEv-8t?#+2BMKIK?mEy5Uxf|21(v||e;$vufgUj03i_>v zCF+$#K*Xnl=zyuSZe&$9YmX{WTCQ-5`hKH0U%>Z}$Mm{0_P;fIy|kSD*{s-;D(g^O zaVN!IN;Tgxj`}*Ff@#F{NB=-^ zP!a*tu(;8`#`m6zU05S$KNNwhHO00vH`s!)a2fX5wv~u+(_N}O1$LXYE12+qmlY+* zNN+dQv0T|O32L%5KNpoH%D7MNLzZZEbhB_q!wi3SLLP}B>>3cftI)u2rKFS6C^BF0?E4-aTWG-t{u zH@DapDDxa6s4VRwbvm=d&LGK+0e-=uk>*8FgO@~9@C6jWC-|6ot6aC_s9glL%EZfdVIDZwIhll=F zvmSWPFZfmkil=5V<@j3UE+15G@TW`NV$%0RNlr*hjFLiwI}wpb(!$&0q8eD=fX{`D z#mYz!vN2K((s3`o;^Wg~M`AvrY

G_^;@DcDNd|`&HbmAep;FU@ToB1glVehSXY( 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 Date: Wed, 10 Jun 2026 14:55:47 +0200 Subject: [PATCH 3/6] fix(ui): bridge `RecordStateIdle.message` to StreamSnackbar via listener MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The earlier direct-fire approach silently broke external consumers of the deprecated `showInfo` / `RecordStateIdle.message` API — their hint no longer rendered through the composer at all (e.g. the docs-screenshots golden test that pre-populates the state). Reinstate the bridge: `_StreamChatMessageInputState` listens to the audio recorder controller. On transitions to `RecordStateIdle(message: nonEmpty)` it fires `StreamSnackbar` via `messenger.show(replace: true)`; on transitions away (state.message cleared or out of idle), it calls `messenger.removeCurrent()`. When the snackbar is dismissed (swipe / timeout / programmatic), the listener notifies the recorder via the new `hideInfo()` companion so a repeat `showInfo(sameMessage)` isn't swallowed by `showInfo`'s in-built dedupe. Also: - Cancel `_infoTimer` in `StreamAudioRecorderController.dispose()` (real bug: was leaking the timer beyond the controller's lifetime). - Null out `_infoTimer` after the timer fires so the field state matches "is there a pending timer?". - Add 3 unit tests for `hideInfo` (immediate clear, cancels pending timer, no-op on empty state) and 2 widget tests covering the swipe-clears-state + hold-to-record gesture flow. --- .../audio_recorder_controller.dart | 14 +++++ .../stream_chat_message_input.dart | 37 ++++++++++-- .../audio_recorder_controller_test.dart | 30 ++++++++++ .../src/message_input/message_input_test.dart | 58 ++++++++++++++++++- 4 files changed, 131 insertions(+), 8 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/audio_recorder/audio_recorder_controller.dart b/packages/stream_chat_flutter/lib/src/message_input/audio_recorder/audio_recorder_controller.dart index 909a84449d..e6d514f1d8 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/audio_recorder/audio_recorder_controller.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/audio_recorder/audio_recorder_controller.dart @@ -199,6 +199,18 @@ class StreamAudioRecorderController extends ValueNotifier { } } + /// Cancels any pending info-message timer and clears the message on + /// [RecordStateIdle]. Counterpart to [showInfo]. + @Deprecated('Use StreamSnackbar via StreamSnackbarMessenger instead.') + void hideInfo() { + // Cancel the info timer. + _infoTimer?.cancel(); + _infoTimer = null; + + // Clear the info message if it is currently being shown. + if (value case RecordStateIdle()) value = const RecordStateIdle(); + } + Future _getOutputFilePath(AudioEncoder encoder) async { // Ignored on web platform. if (CurrentPlatform.isWeb) return ''; @@ -233,6 +245,8 @@ class StreamAudioRecorderController extends ValueNotifier { void dispose() { _durationTimer?.cancel(); _durationTimer = null; + _infoTimer?.cancel(); + _infoTimer = null; _recorderAmplitudeSubscription?.cancel(); _recorder.dispose(); super.dispose(); diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_chat_message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_chat_message_input.dart index af6525c535..ee8dd7a330 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_chat_message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_chat_message_input.dart @@ -109,6 +109,7 @@ class _StreamChatMessageInputState extends State { void initState() { super.initState(); _initController(); + widget.audioRecorderController?.addListener(_onAudioRecorderChanged); } @override @@ -118,10 +119,15 @@ class _StreamChatMessageInputState extends State { if (oldWidget.controller == null) _controller.dispose(); _initController(); } + if (widget.audioRecorderController != oldWidget.audioRecorderController) { + oldWidget.audioRecorderController?.removeListener(_onAudioRecorderChanged); + widget.audioRecorderController?.addListener(_onAudioRecorderChanged); + } } @override void dispose() { + widget.audioRecorderController?.removeListener(_onAudioRecorderChanged); if (widget.controller == null) _controller.dispose(); super.dispose(); } @@ -130,6 +136,27 @@ class _StreamChatMessageInputState extends State { _controller = widget.controller ?? StreamMessageComposerController(); } + // Listens to changes in the audio recorder controller and shows/hides a snackbar + // with the current message, if any. + void _onAudioRecorderChanged() { + if (!mounted) return; + + final state = widget.audioRecorderController?.value; + final message = state is RecordStateIdle ? state.message : null; + final messenger = StreamSnackbarMessenger.maybeOf(context); + + if (message == null || message.isEmpty) return messenger?.removeCurrent(); + final controller = messenger?.show(StreamSnackbar(message: Text(message)), replace: true); + if (controller == null) return; + + // Notify the recorder controller when the snackbar is closed, so it can clear + // the message and avoid showing stale messages if the user triggers the recorder again. + controller.closed.then((_) { + if (!mounted) return; + return widget.audioRecorderController?.hideInfo(); + }); + } + @override Widget build(BuildContext context) { final audioRecorderController = widget.audioRecorderController; @@ -286,16 +313,14 @@ class _StreamChatMessageInputContent extends StatelessWidget { // Return if the recording is already started. if (audioRecorderController.isRecording) return; - // Capture the label and messenger before the async gap to avoid - // using a potentially unmounted BuildContext after awaiting. + // Capture the label before the async gap to avoid using a potentially + // unmounted BuildContext after awaiting. final holdLabel = context.translations.holdToRecordLabel; - final snackbarMessenger = StreamSnackbarMessenger.maybeOf(context); // Notify the parent that the recorder is canceled before it starts. await widget.feedback.onRecordStartCancel(context); - // Snap-replace the current hint so rapid taps always show the - // freshest one without queueing duplicates or animating exits. - snackbarMessenger?.show(StreamSnackbar(message: Text(holdLabel)), replace: true); + // Show a message to the user to hold to record. + audioRecorderController.showInfo(holdLabel); }, onLongPressMoveUpdate: (details) async { // Return if the recording not yet started or already locked. diff --git a/packages/stream_chat_flutter/test/src/message_input/audio_recorder/audio_recorder_controller_test.dart b/packages/stream_chat_flutter/test/src/message_input/audio_recorder/audio_recorder_controller_test.dart index 82fb045413..21c059639e 100644 --- a/packages/stream_chat_flutter/test/src/message_input/audio_recorder/audio_recorder_controller_test.dart +++ b/packages/stream_chat_flutter/test/src/message_input/audio_recorder/audio_recorder_controller_test.dart @@ -215,6 +215,36 @@ void main() { }); }); + group('hideInfo', () { + test('clears the info message immediately', () { + controller.showInfo('Test Message'); + expect((controller.value as RecordStateIdle).message, 'Test Message'); + + controller.hideInfo(); + + expect((controller.value as RecordStateIdle).message, isNull); + }); + + test('cancels the pending auto-clear timer', () async { + controller.showInfo('Test Message', duration: const Duration(milliseconds: 100)); + expect((controller.value as RecordStateIdle).message, 'Test Message'); + + controller.hideInfo(); + controller.showInfo('Other Message', duration: const Duration(seconds: 5)); + expect((controller.value as RecordStateIdle).message, 'Other Message'); + + // Wait past the original (now-canceled) timer; the new message must + // still be present. + await Future.delayed(const Duration(milliseconds: 150)); + expect((controller.value as RecordStateIdle).message, 'Other Message'); + }); + + test('is a no-op when no info message is being shown', () { + controller.hideInfo(); + expect((controller.value as RecordStateIdle).message, isNull); + }); + }); + group('amplitude changes', () { setUp(() { when(() => mockRecorder.hasPermission(request: false)).thenAnswer((_) async => true); diff --git a/packages/stream_chat_flutter/test/src/message_input/message_input_test.dart b/packages/stream_chat_flutter/test/src/message_input/message_input_test.dart index 28ef67bc4d..edd2193612 100644 --- a/packages/stream_chat_flutter/test/src/message_input/message_input_test.dart +++ b/packages/stream_chat_flutter/test/src/message_input/message_input_test.dart @@ -1064,8 +1064,6 @@ void main() { ); }); - tearDown(() => audioRecorderController.dispose()); - testWidgets( 'long-press cancel on mic shows the hold-to-record snackbar', (WidgetTester tester) async { @@ -1086,6 +1084,11 @@ void main() { expect(find.text(holdLabel), findsOneWidget); expect(find.byType(StreamSnackbar), findsOneWidget); + + // Dispose in body: showInfo's 3s timer outlives the widget tree, and + // `tearDown` / `addTearDown` run after the binding's pending-timer + // check — only a body-side dispose cancels it in time. + audioRecorderController.dispose(); }, ); @@ -1109,6 +1112,8 @@ void main() { expect(feedback.cancelCount, 1); expect(find.text('Hold to record. Release to save.'), findsOneWidget); + + audioRecorderController.dispose(); }, ); @@ -1130,6 +1135,8 @@ void main() { await _cancelMicLongPress(tester); expect(find.byType(StreamSnackbar), findsOneWidget); + + audioRecorderController.dispose(); }, ); @@ -1160,6 +1167,8 @@ void main() { await tester.pumpAndSettle(); expect(find.byType(StreamSnackbar), findsNothing); + + audioRecorderController.dispose(); }, ); @@ -1180,6 +1189,51 @@ void main() { expect(StreamSnackbarMessenger.maybeOf(micContext), isNotNull); }, ); + + testWidgets( + 'swiping the snackbar away clears the recorder state.message', + (WidgetTester tester) async { + await tester.pumpWidget( + buildWidget( + StreamChatMessageInput( + onSendPressed: () {}, + audioRecorderController: audioRecorderController, + ), + ), + ); + await tester.pumpAndSettle(); + + // ignore: deprecated_member_use + audioRecorderController.showInfo('Hint'); + await tester.pumpAndSettle(); + expect(find.text('Hint'), findsOneWidget); + expect( + // ignore: deprecated_member_use + (audioRecorderController.value as RecordStateIdle).message, + 'Hint', + ); + + await tester.fling(find.text('Hint'), const Offset(0, 300), 1000); + await tester.pumpAndSettle(); + + expect(find.byType(StreamSnackbar), findsNothing); + // The listener should have called hideInfo() on dismissal, so the + // recorder no longer thinks it's showing 'Hint'. A subsequent + // showInfo('Hint') should fire a fresh snackbar. + expect( + // ignore: deprecated_member_use + (audioRecorderController.value as RecordStateIdle).message, + isNull, + ); + + // ignore: deprecated_member_use + audioRecorderController.showInfo('Hint'); + await tester.pumpAndSettle(); + expect(find.text('Hint'), findsOneWidget); + + audioRecorderController.dispose(); + }, + ); }); group('StreamChat global snackbar scope', () { From 90c5e38acd93a6b5b9020c12a01ba02ac53ad6cc Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Wed, 10 Jun 2026 15:14:34 +0200 Subject: [PATCH 4/6] fix(ui): drop redundant snackbar dismissal on hold start MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The explicit `messenger.removeCurrent()` in `onLongPressStart` is already covered by the listener: when `startRecord` transitions `value` from `RecordStateIdle` to `RecordStateRecordingHold`, the listener observes the change and dismisses the in-flight hint via `removeCurrent()` itself. The explicit call was racing the listener by ~50ms for marginal latency win. Refreshed test: `starting a hold clears the in-flight hold-to-record snackbar` now invokes the real long-press handler (mocks recorder permission + start), pumps under 1s to avoid ticking the periodic duration timer, and verifies the snackbar disappears + state is in `RecordStateRecordingHold` — exercising the listener path end-to-end. Also: scope the empty-attachments SizedBox finders in `message_input_attachment_list_test.dart` to descendants of the widget under test. The earlier bare `find.byType(SizedBox)` was brittle and started matching the SizedBox.shrink() rendered by the empty `_SnackbarStage` now that `StreamChat` wraps with `StreamSnackbarScope`. --- .../stream_chat_message_input.dart | 4 ---- .../message_input_attachment_list_test.dart | 20 +++++++++++++++---- .../src/message_input/message_input_test.dart | 18 ++++++++++------- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_chat_message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_chat_message_input.dart index ee8dd7a330..6c6be9a3a2 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_chat_message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_chat_message_input.dart @@ -283,10 +283,6 @@ class _StreamChatMessageInputContent extends StatelessWidget { // Return if the recording is already started. if (audioRecorderController.isRecording) return; - // Clear any in-flight hold-to-record hint — the user is now - // holding correctly so the hint is stale. - StreamSnackbarMessenger.maybeOf(context)?.removeCurrent(); - await widget.feedback.onRecordStart(context); return audioRecorderController.startRecord(); }, diff --git a/packages/stream_chat_flutter/test/src/message_input/message_input_attachment_list_test.dart b/packages/stream_chat_flutter/test/src/message_input/message_input_attachment_list_test.dart index 6f2c045cfc..7fdd31ffed 100644 --- a/packages/stream_chat_flutter/test/src/message_input/message_input_attachment_list_test.dart +++ b/packages/stream_chat_flutter/test/src/message_input/message_input_attachment_list_test.dart @@ -89,8 +89,14 @@ void main() { ), ); - // Expect an empty box - expect(find.byType(SizedBox), findsOneWidget); + // Expect an empty box rendered by the attachment list itself. + expect( + find.descendant( + of: find.byType(StreamMessageComposerAttachmentList), + matching: find.byType(SizedBox), + ), + findsOneWidget, + ); }, ); }); @@ -184,8 +190,14 @@ void main() { ), ); - // Expect an empty box - expect(find.byType(SizedBox), findsOneWidget); + // Expect an empty box rendered by the media attachments widget itself. + expect( + find.descendant( + of: find.byType(MessageInputMediaAttachments), + matching: find.byType(SizedBox), + ), + findsOneWidget, + ); }, ); diff --git a/packages/stream_chat_flutter/test/src/message_input/message_input_test.dart b/packages/stream_chat_flutter/test/src/message_input/message_input_test.dart index edd2193612..30d4ea706e 100644 --- a/packages/stream_chat_flutter/test/src/message_input/message_input_test.dart +++ b/packages/stream_chat_flutter/test/src/message_input/message_input_test.dart @@ -1143,10 +1143,10 @@ void main() { testWidgets( 'starting a hold clears the in-flight hold-to-record snackbar', (WidgetTester tester) async { - // Deny permission so startRecord short-circuits before starting the - // duration timer. - when(() => mockRecorder.hasPermission(request: false)).thenAnswer((_) async => false); - when(() => mockRecorder.hasPermission(request: true)).thenAnswer((_) async => false); + // Mock the recorder so startRecord can transition to RecordStateRecordingHold. + const config = RecordConfig(numChannels: 1); + when(() => mockRecorder.hasPermission(request: false)).thenAnswer((_) async => true); + when(() => mockRecorder.start(config, path: any(named: 'path'))).thenAnswer((_) async {}); await tester.pumpWidget( buildWidget( @@ -1161,12 +1161,16 @@ void main() { await _cancelMicLongPress(tester); expect(find.byType(StreamSnackbar), findsOneWidget); + // Long-press the mic. startRecord transitions to RecordStateRecordingHold; + // the listener should react and remove the in-flight hint. final mic = find.byKey(const ValueKey('microphone_key')); - final gestureDetector = tester.widget(mic); - gestureDetector.onLongPress!(); - await tester.pumpAndSettle(); + tester.widget(mic).onLongPress!(); + // pump < 1s so the recorder's periodic duration timer doesn't tick; + // microtasks drain and the state transition + listener fire complete. + await tester.pump(const Duration(milliseconds: 500)); expect(find.byType(StreamSnackbar), findsNothing); + expect(audioRecorderController.value, isA()); audioRecorderController.dispose(); }, From 32d3540ff7a05c563a916de3c76ebe7ac89b8c06 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Wed, 10 Jun 2026 15:43:57 +0200 Subject: [PATCH 5/6] fix(ui): sync hold-to-record snackbar with controller's current state MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `addListener` on a `ValueNotifier` doesn't replay the current value — only subsequent `notifyListeners()` calls fire it. That left two gaps in `StreamChatMessageInput`: 1. **Controller swap (didUpdateWidget).** Reviewer-flagged: when the parent swaps `audioRecorderController`, we re-register the listener but never reconcile against the new controller's existing state. Any in-flight snackbar from the old controller is orphaned, and any state already set on the new controller is silently dropped. Fix: invoke `_onAudioRecorderChanged()` synchronously after re-registering. 2. **Initial mount (initState).** Same gap on first frame: a pre-populated controller (e.g. `RecordStateIdle(message: 'X')` set before mount) is ignored because the listener registers after the value is already in place. Fix: defer the sync to a post-frame callback so the inherited `StreamSnackbarMessenger` lookup is safe (inherited lookups aren't valid in `initState`). Also: re-anchor the docs `voice_recording_idle_tooltip` golden against the new flow — the scaffold now wraps in `StreamSnackbarPopup` so the listener-fired snackbar appears above the composer, matching the pre-refactor portal-target visual. --- .../macos/voice_recording_idle_tooltip.png | Bin 6656 -> 12152 bytes .../voice_recording/voice_recording_test.dart | 8 ++++---- .../stream_chat_message_input.dart | 4 ++++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/docs_screenshots/test/voice_recording/goldens/macos/voice_recording_idle_tooltip.png b/docs/docs_screenshots/test/voice_recording/goldens/macos/voice_recording_idle_tooltip.png index e0b20cc273fed1eec1d46dd5746c15432d996171..c733ec55ff05cff2e45a924f10107a7baa75efbc 100644 GIT binary patch literal 12152 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 literal 6656 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 StreamSnackbarPopup( + child: Material( child: DecoratedBox( decoration: BoxDecoration( color: context.streamColorScheme.backgroundElevation1, @@ -132,8 +132,8 @@ Widget _buildVoiceRecordingComposerScaffold({ ), ), ), - ); - }, + ), + ), ), ], ), diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_chat_message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_chat_message_input.dart index 6c6be9a3a2..acfdf90cc3 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_chat_message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_chat_message_input.dart @@ -110,6 +110,9 @@ class _StreamChatMessageInputState extends State { super.initState(); _initController(); widget.audioRecorderController?.addListener(_onAudioRecorderChanged); + // Update the snackbar based on the initial state of the audio recorder controller + // after the first frame is rendered, to ensure that the BuildContext is fully available for showing the snackbar. + WidgetsBinding.instance.addPostFrameCallback((_) => _onAudioRecorderChanged()); } @override @@ -122,6 +125,7 @@ class _StreamChatMessageInputState extends State { if (widget.audioRecorderController != oldWidget.audioRecorderController) { oldWidget.audioRecorderController?.removeListener(_onAudioRecorderChanged); widget.audioRecorderController?.addListener(_onAudioRecorderChanged); + _onAudioRecorderChanged(); // Update the snackbar based on the new controller's state immediately. } } From b00a000091ac06398466ca6d35fbbdc42809359b Mon Sep 17 00:00:00 2001 From: xsahil03x <25670178+xsahil03x@users.noreply.github.com> Date: Wed, 10 Jun 2026 14:00:24 +0000 Subject: [PATCH 6/6] chore: Update Goldens --- .../macos/voice_recording_idle_tooltip.png | Bin 12152 -> 12154 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/docs_screenshots/test/voice_recording/goldens/macos/voice_recording_idle_tooltip.png b/docs/docs_screenshots/test/voice_recording/goldens/macos/voice_recording_idle_tooltip.png index c733ec55ff05cff2e45a924f10107a7baa75efbc..81d40313ad451bba3714b802ab21fb12a6858af5 100644 GIT binary patch delta 3853 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 P00000NkvXXu0mjfM_zsq delta 3850 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