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