diff --git a/ios/Classes/FlutterMediaLoadRequestDataHelper.swift b/ios/Classes/FlutterMediaLoadRequestDataHelper.swift index 8ff2b55..c7d44e1 100644 --- a/ios/Classes/FlutterMediaLoadRequestDataHelper.swift +++ b/ios/Classes/FlutterMediaLoadRequestDataHelper.swift @@ -247,3 +247,20 @@ func getFlutterMediaType(mediaType: GCKMediaMetadataType?) -> MediaType { } } +func getFlutterMediaQueueItem(item: GCKMediaQueueItem?) -> MediaQueueItem { + let result = MediaQueueItem() + + if (item == nil) { + result.itemId = -1 + } else { + result.itemId = NSNumber(value: item?.itemID ?? 0) + } + + result.autoplay = NSNumber(value: item?.autoplay ?? false) + result.playbackDuration = NSNumber(value: item?.playbackDuration ?? -1) + result.startTime = NSNumber(value: item?.startTime ?? 0) + result.preloadTime = NSNumber(value: item?.preloadTime ?? 0) + result.media = getFlutterMediaInfo(mediaInfo: item?.mediaInformation) + + return result +} diff --git a/ios/Classes/SwiftFlutterCastFrameworkPlugin.swift b/ios/Classes/SwiftFlutterCastFrameworkPlugin.swift index 348770f..246bbbb 100644 --- a/ios/Classes/SwiftFlutterCastFrameworkPlugin.swift +++ b/ios/Classes/SwiftFlutterCastFrameworkPlugin.swift @@ -363,6 +363,24 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio remoteMediaClient?.queuePreviousItem() } + public func getQueueItemCountWithError(_ error: AutoreleasingUnsafeMutablePointer) -> NSNumber? { + if (mediaQueue == nil) { + return -1 + } + + let itemCount = mediaQueue?.itemCount ?? 0 + return NSNumber(value: itemCount) + } + + public func getQueueItemAtIndexIndex(_ index: NSNumber, error: AutoreleasingUnsafeMutablePointer) -> MediaQueueItem? { + if (index.intValue < 0) { + return getFlutterMediaQueueItem(item: nil) + } + + let mediaQueueItem = mediaQueue?.item(at: index.uintValue, fetchIfNeeded: true) + return getFlutterMediaQueueItem(item: mediaQueueItem) + } + // MARK: - GCKSessionManagerListener // onSessionSuspended