From ccc22f57f06b75a133bdd92de3e6ad9099a5ee75 Mon Sep 17 00:00:00 2001 From: Fabian Freund Date: Sun, 26 Oct 2025 03:40:06 +0100 Subject: [PATCH] buffer events to avoid lifecycle issues --- .../browser/domain/providers/intent.dart | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/app/lib/features/geckoview/features/browser/domain/providers/intent.dart b/app/lib/features/geckoview/features/browser/domain/providers/intent.dart index 45c733fb..d51e2b02 100644 --- a/app/lib/features/geckoview/features/browser/domain/providers/intent.dart +++ b/app/lib/features/geckoview/features/browser/domain/providers/intent.dart @@ -58,10 +58,25 @@ class EngineBoundIntentStream extends _$EngineBoundIntentStream { final sharingItentStream = ref.watch(sharingIntentStreamProvider); final appWidgetLaunchStream = ref.watch(appWidgetLaunchStreamProvider); - return MergeStream([ - sharingItentStream.transform(_contentParserTransformer), - appWidgetLaunchStream.transform(_contentParserTransformer), - ]); + // Create a broadcast stream controller to buffer events + final controller = StreamController.broadcast(); + + final subscription = + MergeStream([ + sharingItentStream.transform(_contentParserTransformer), + appWidgetLaunchStream.transform(_contentParserTransformer), + ]).listen( + controller.add, + onError: controller.addError, + onDone: controller.close, + ); + + ref.onDispose(() async { + await subscription.cancel(); + await controller.close(); + }); + + return controller.stream; } @override