From 5fee6f834f3df9f77bdebbbaa1659ccfdb2e10bd Mon Sep 17 00:00:00 2001 From: gianlucaparadise Date: Fri, 19 Nov 2021 06:42:35 +0100 Subject: [PATCH] RemoteMediaClient create listener pigeons --- .../PlatformBridgeApis.java | 49 ++++++++++ ios/Classes/PlatformBridgeApis.h | 7 ++ ios/Classes/PlatformBridgeApis.m | 70 +++++++++++++ lib/src/PlatformBridgeApis.dart | 98 +++++++++++++++++++ lib/src/PlatformBridgeApisDefinition.dart | 10 ++ 5 files changed, 234 insertions(+) diff --git a/android/src/main/java/com/gianlucaparadise/flutter_cast_framework/PlatformBridgeApis.java b/android/src/main/java/com/gianlucaparadise/flutter_cast_framework/PlatformBridgeApis.java index e9e49f8..dab896f 100644 --- a/android/src/main/java/com/gianlucaparadise/flutter_cast_framework/PlatformBridgeApis.java +++ b/android/src/main/java/com/gianlucaparadise/flutter_cast_framework/PlatformBridgeApis.java @@ -559,6 +559,55 @@ public class PlatformBridgeApis { callback.reply(null); }); } + public void onStatusUpdated(Reply callback) { + BasicMessageChannel channel = + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CastFlutterApi.onStatusUpdated", getCodec()); + channel.send(null, channelReply -> { + callback.reply(null); + }); + } + public void onMetadataUpdated(Reply callback) { + BasicMessageChannel channel = + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CastFlutterApi.onMetadataUpdated", getCodec()); + channel.send(null, channelReply -> { + callback.reply(null); + }); + } + public void onQueueStatusUpdated(Reply callback) { + BasicMessageChannel channel = + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CastFlutterApi.onQueueStatusUpdated", getCodec()); + channel.send(null, channelReply -> { + callback.reply(null); + }); + } + public void onPreloadStatusUpdated(Reply callback) { + BasicMessageChannel channel = + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CastFlutterApi.onPreloadStatusUpdated", getCodec()); + channel.send(null, channelReply -> { + callback.reply(null); + }); + } + public void onSendingRemoteMediaRequest(Reply callback) { + BasicMessageChannel channel = + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CastFlutterApi.onSendingRemoteMediaRequest", getCodec()); + channel.send(null, channelReply -> { + callback.reply(null); + }); + } + public void onAdBreakStatusUpdated(Reply callback) { + BasicMessageChannel channel = + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CastFlutterApi.onAdBreakStatusUpdated", getCodec()); + channel.send(null, channelReply -> { + callback.reply(null); + }); + } + public void onMediaError(Reply callback) { + BasicMessageChannel channel = + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CastFlutterApi.onMediaError", getCodec()); + channel.send(null, channelReply -> { + callback.reply(null); + }); + } } private static Map wrapError(Throwable exception) { Map errorMap = new HashMap<>(); diff --git a/ios/Classes/PlatformBridgeApis.h b/ios/Classes/PlatformBridgeApis.h index 348289b..fe4bb69 100644 --- a/ios/Classes/PlatformBridgeApis.h +++ b/ios/Classes/PlatformBridgeApis.h @@ -116,5 +116,12 @@ NSObject *CastFlutterApiGetCodec(void); - (void)onSessionResumedWithCompletion:(void(^)(NSError *_Nullable))completion; - (void)onSessionResumeFailedWithCompletion:(void(^)(NSError *_Nullable))completion; - (void)onSessionSuspendedWithCompletion:(void(^)(NSError *_Nullable))completion; +- (void)onStatusUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion; +- (void)onMetadataUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion; +- (void)onQueueStatusUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion; +- (void)onPreloadStatusUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion; +- (void)onSendingRemoteMediaRequestWithCompletion:(void(^)(NSError *_Nullable))completion; +- (void)onAdBreakStatusUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion; +- (void)onMediaErrorWithCompletion:(void(^)(NSError *_Nullable))completion; @end NS_ASSUME_NONNULL_END diff --git a/ios/Classes/PlatformBridgeApis.m b/ios/Classes/PlatformBridgeApis.m index 9ea6f1c..0644690 100644 --- a/ios/Classes/PlatformBridgeApis.m +++ b/ios/Classes/PlatformBridgeApis.m @@ -514,4 +514,74 @@ NSObject *CastFlutterApiGetCodec() { completion(nil); }]; } +- (void)onStatusUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.CastFlutterApi.onStatusUpdated" + binaryMessenger:self.binaryMessenger + codec:CastFlutterApiGetCodec()]; + [channel sendMessage:nil reply:^(id reply) { + completion(nil); + }]; +} +- (void)onMetadataUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.CastFlutterApi.onMetadataUpdated" + binaryMessenger:self.binaryMessenger + codec:CastFlutterApiGetCodec()]; + [channel sendMessage:nil reply:^(id reply) { + completion(nil); + }]; +} +- (void)onQueueStatusUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.CastFlutterApi.onQueueStatusUpdated" + binaryMessenger:self.binaryMessenger + codec:CastFlutterApiGetCodec()]; + [channel sendMessage:nil reply:^(id reply) { + completion(nil); + }]; +} +- (void)onPreloadStatusUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.CastFlutterApi.onPreloadStatusUpdated" + binaryMessenger:self.binaryMessenger + codec:CastFlutterApiGetCodec()]; + [channel sendMessage:nil reply:^(id reply) { + completion(nil); + }]; +} +- (void)onSendingRemoteMediaRequestWithCompletion:(void(^)(NSError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.CastFlutterApi.onSendingRemoteMediaRequest" + binaryMessenger:self.binaryMessenger + codec:CastFlutterApiGetCodec()]; + [channel sendMessage:nil reply:^(id reply) { + completion(nil); + }]; +} +- (void)onAdBreakStatusUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.CastFlutterApi.onAdBreakStatusUpdated" + binaryMessenger:self.binaryMessenger + codec:CastFlutterApiGetCodec()]; + [channel sendMessage:nil reply:^(id reply) { + completion(nil); + }]; +} +- (void)onMediaErrorWithCompletion:(void(^)(NSError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.CastFlutterApi.onMediaError" + binaryMessenger:self.binaryMessenger + codec:CastFlutterApiGetCodec()]; + [channel sendMessage:nil reply:^(id reply) { + completion(nil); + }]; +} @end diff --git a/lib/src/PlatformBridgeApis.dart b/lib/src/PlatformBridgeApis.dart index cea3f45..7294d28 100644 --- a/lib/src/PlatformBridgeApis.dart +++ b/lib/src/PlatformBridgeApis.dart @@ -374,6 +374,13 @@ abstract class CastFlutterApi { void onSessionResumed(); void onSessionResumeFailed(); void onSessionSuspended(); + void onStatusUpdated(); + void onMetadataUpdated(); + void onQueueStatusUpdated(); + void onPreloadStatusUpdated(); + void onSendingRemoteMediaRequest(); + void onAdBreakStatusUpdated(); + void onMediaError(); static void setup(CastFlutterApi? api) { { const BasicMessageChannel channel = BasicMessageChannel( @@ -537,5 +544,96 @@ abstract class CastFlutterApi { }); } } + { + const BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.CastFlutterApi.onStatusUpdated', codec); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + // ignore message + api.onStatusUpdated(); + return; + }); + } + } + { + const BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.CastFlutterApi.onMetadataUpdated', codec); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + // ignore message + api.onMetadataUpdated(); + return; + }); + } + } + { + const BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.CastFlutterApi.onQueueStatusUpdated', codec); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + // ignore message + api.onQueueStatusUpdated(); + return; + }); + } + } + { + const BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.CastFlutterApi.onPreloadStatusUpdated', codec); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + // ignore message + api.onPreloadStatusUpdated(); + return; + }); + } + } + { + const BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.CastFlutterApi.onSendingRemoteMediaRequest', codec); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + // ignore message + api.onSendingRemoteMediaRequest(); + return; + }); + } + } + { + const BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.CastFlutterApi.onAdBreakStatusUpdated', codec); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + // ignore message + api.onAdBreakStatusUpdated(); + return; + }); + } + } + { + const BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.CastFlutterApi.onMediaError', codec); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + // ignore message + api.onMediaError(); + return; + }); + } + } } } diff --git a/lib/src/PlatformBridgeApisDefinition.dart b/lib/src/PlatformBridgeApisDefinition.dart index 548d9ce..a2c85c4 100644 --- a/lib/src/PlatformBridgeApisDefinition.dart +++ b/lib/src/PlatformBridgeApisDefinition.dart @@ -241,4 +241,14 @@ abstract class CastFlutterApi { void onSessionResumeFailed(); void onSessionSuspended(); //endregion + + //region RemoteMediaClient callbacks + void onStatusUpdated(); + void onMetadataUpdated(); + void onQueueStatusUpdated(); + void onPreloadStatusUpdated(); + void onSendingRemoteMediaRequest(); + void onAdBreakStatusUpdated(); + void onMediaError(); + //endregion }