Android: fix null checks

This commit is contained in:
gianlucaparadise 2021-12-25 11:03:29 +01:00
parent bae07bda32
commit ed0e3e28b4
2 changed files with 35 additions and 37 deletions

View file

@ -302,9 +302,7 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
val remoteMediaClient: RemoteMediaClient = remoteMediaClient val remoteMediaClient: RemoteMediaClient = remoteMediaClient
?: throw IllegalStateException("Missing cast session") ?: throw IllegalStateException("Missing cast session")
val hostMediaInfo = remoteMediaClient.mediaInfo ?: return PlatformBridgeApis.MediaInfo() return getFlutterMediaInfo(remoteMediaClient.mediaInfo)
return getFlutterMediaInfo(hostMediaInfo)
} }
override fun play() { override fun play() {

View file

@ -4,13 +4,13 @@ import com.gianlucaparadise.flutter_cast_framework.PlatformBridgeApis
import com.google.android.gms.cast.* import com.google.android.gms.cast.*
import com.google.android.gms.common.images.WebImage import com.google.android.gms.common.images.WebImage
fun getFlutterMediaStatus(mediaStatus: MediaStatus): PlatformBridgeApis.MediaStatus { fun getFlutterMediaStatus(mediaStatus: MediaStatus?): PlatformBridgeApis.MediaStatus {
val flutterMediaInfo = getFlutterMediaInfo(mediaStatus.mediaInfo) val flutterMediaInfo = getFlutterMediaInfo(mediaStatus?.mediaInfo)
val flutterPlayerState = getFlutterPlayerState(mediaStatus.playerState) val flutterPlayerState = getFlutterPlayerState(mediaStatus?.playerState)
val flutterAdBreakStatus = getFlutterAdBreakStatus(mediaStatus.adBreakStatus) val flutterAdBreakStatus = getFlutterAdBreakStatus(mediaStatus?.adBreakStatus)
return PlatformBridgeApis.MediaStatus().apply { return PlatformBridgeApis.MediaStatus().apply {
isPlayingAd = mediaStatus.isPlayingAd isPlayingAd = mediaStatus?.isPlayingAd ?: false
mediaInfo = flutterMediaInfo mediaInfo = flutterMediaInfo
playerState = flutterPlayerState playerState = flutterPlayerState
adBreakStatus = flutterAdBreakStatus adBreakStatus = flutterAdBreakStatus
@ -25,7 +25,7 @@ fun getFlutterAdBreakStatus(adBreakStatus: AdBreakStatus?): PlatformBridgeApis.A
} }
} }
fun getFlutterPlayerState(playerStateRaw: Int): PlatformBridgeApis.PlayerState { fun getFlutterPlayerState(playerStateRaw: Int?): PlatformBridgeApis.PlayerState {
return when (playerStateRaw) { return when (playerStateRaw) {
MediaStatus.PLAYER_STATE_UNKNOWN -> PlatformBridgeApis.PlayerState.unknown MediaStatus.PLAYER_STATE_UNKNOWN -> PlatformBridgeApis.PlayerState.unknown
MediaStatus.PLAYER_STATE_BUFFERING -> PlatformBridgeApis.PlayerState.buffering MediaStatus.PLAYER_STATE_BUFFERING -> PlatformBridgeApis.PlayerState.buffering
@ -37,23 +37,23 @@ fun getFlutterPlayerState(playerStateRaw: Int): PlatformBridgeApis.PlayerState {
} }
} }
fun getFlutterMediaInfo(mediaInfo: MediaInfo): PlatformBridgeApis.MediaInfo { fun getFlutterMediaInfo(mediaInfo: MediaInfo?): PlatformBridgeApis.MediaInfo {
val flutterMediaMetadata = getFlutterMediaMetadata(mediaInfo.metadata) val flutterMediaMetadata = getFlutterMediaMetadata(mediaInfo?.metadata)
val flutterMediaTracks = getFlutterMediaTracks(mediaInfo.mediaTracks) val flutterMediaTracks = getFlutterMediaTracks(mediaInfo?.mediaTracks)
val flutterStreamType = getFlutterStreamType(mediaInfo.streamType) val flutterStreamType = getFlutterStreamType(mediaInfo?.streamType)
return PlatformBridgeApis.MediaInfo().apply { return PlatformBridgeApis.MediaInfo().apply {
contentId = mediaInfo.contentId contentId = mediaInfo?.contentId ?: ""
contentType = mediaInfo.contentType contentType = mediaInfo?.contentType ?: ""
customDataAsJson = mediaInfo.customData?.toString() customDataAsJson = mediaInfo?.customData?.toString()
mediaMetadata = flutterMediaMetadata mediaMetadata = flutterMediaMetadata
mediaTracks = flutterMediaTracks mediaTracks = flutterMediaTracks
streamDuration = mediaInfo.streamDuration streamDuration = mediaInfo?.streamDuration ?: 0
streamType = flutterStreamType streamType = flutterStreamType
} }
} }
fun getFlutterStreamType(streamType: Int): PlatformBridgeApis.StreamType { fun getFlutterStreamType(streamType: Int?): PlatformBridgeApis.StreamType {
return when (streamType) { return when (streamType) {
-1 -> PlatformBridgeApis.StreamType.invalid -1 -> PlatformBridgeApis.StreamType.invalid
0 -> PlatformBridgeApis.StreamType.none 0 -> PlatformBridgeApis.StreamType.none
@ -63,27 +63,27 @@ fun getFlutterStreamType(streamType: Int): PlatformBridgeApis.StreamType {
} }
} }
fun getFlutterMediaTracks(mediaTracks: List<MediaTrack>): List<PlatformBridgeApis.MediaTrack> { fun getFlutterMediaTracks(mediaTracks: List<MediaTrack>?): List<PlatformBridgeApis.MediaTrack> {
return mediaTracks.map { return mediaTracks?.map {
getFlutterMediaTrack(it) getFlutterMediaTrack(it)
} } ?: emptyList()
} }
fun getFlutterMediaTrack(mediaTrack: MediaTrack): PlatformBridgeApis.MediaTrack { fun getFlutterMediaTrack(mediaTrack: MediaTrack?): PlatformBridgeApis.MediaTrack {
val flutterSubtype = getFlutterSubtype(mediaTrack.subtype) val flutterSubtype = getFlutterSubtype(mediaTrack?.subtype)
val flutterType = getFlutterType(mediaTrack.type) val flutterType = getFlutterType(mediaTrack?.type)
return PlatformBridgeApis.MediaTrack().apply { return PlatformBridgeApis.MediaTrack().apply {
contentId = mediaTrack.contentId contentId = mediaTrack?.contentId ?: ""
id = mediaTrack.id id = mediaTrack?.id ?: -1
language = mediaTrack.language language = mediaTrack?.language ?: ""
name = mediaTrack.name name = mediaTrack?.name ?: ""
trackSubtype = flutterSubtype trackSubtype = flutterSubtype
trackType = flutterType trackType = flutterType
} }
} }
fun getFlutterType(type: Int): PlatformBridgeApis.TrackType { fun getFlutterType(type: Int?): PlatformBridgeApis.TrackType {
return when (type) { return when (type) {
0 -> PlatformBridgeApis.TrackType.unknown 0 -> PlatformBridgeApis.TrackType.unknown
1 -> PlatformBridgeApis.TrackType.text 1 -> PlatformBridgeApis.TrackType.text
@ -93,7 +93,7 @@ fun getFlutterType(type: Int): PlatformBridgeApis.TrackType {
} }
} }
fun getFlutterSubtype(subtype: Int): PlatformBridgeApis.TrackSubtype { fun getFlutterSubtype(subtype: Int?): PlatformBridgeApis.TrackSubtype {
return when (subtype) { return when (subtype) {
-1 -> PlatformBridgeApis.TrackSubtype.unknown -1 -> PlatformBridgeApis.TrackSubtype.unknown
0 -> PlatformBridgeApis.TrackSubtype.none 0 -> PlatformBridgeApis.TrackSubtype.none
@ -106,9 +106,9 @@ fun getFlutterSubtype(subtype: Int): PlatformBridgeApis.TrackSubtype {
} }
} }
fun getFlutterMediaMetadata(mediaMetadata: MediaMetadata): PlatformBridgeApis.MediaMetadata { fun getFlutterMediaMetadata(mediaMetadata: MediaMetadata?): PlatformBridgeApis.MediaMetadata {
val flutterMediaType = getFlutterMediaType(mediaMetadata.mediaType) val flutterMediaType = getFlutterMediaType(mediaMetadata?.mediaType)
val flutterWebImages = getFlutterWebImages(mediaMetadata.images) val flutterWebImages = getFlutterWebImages(mediaMetadata?.images)
return PlatformBridgeApis.MediaMetadata().apply { return PlatformBridgeApis.MediaMetadata().apply {
mediaType = flutterMediaType mediaType = flutterMediaType
@ -116,15 +116,15 @@ fun getFlutterMediaMetadata(mediaMetadata: MediaMetadata): PlatformBridgeApis.Me
} }
} }
fun getFlutterWebImages(images: List<WebImage>): List<PlatformBridgeApis.WebImage> { fun getFlutterWebImages(images: List<WebImage>?): List<PlatformBridgeApis.WebImage> {
return images.map { return images?.map {
PlatformBridgeApis.WebImage().apply { PlatformBridgeApis.WebImage().apply {
url = it.url.toString() url = it.url.toString()
} }
} } ?: emptyList()
} }
fun getFlutterMediaType(mediaType: Int): PlatformBridgeApis.MediaType { fun getFlutterMediaType(mediaType: Int?): PlatformBridgeApis.MediaType {
return when (mediaType) { return when (mediaType) {
0 -> PlatformBridgeApis.MediaType.generic 0 -> PlatformBridgeApis.MediaType.generic
1 -> PlatformBridgeApis.MediaType.movie 1 -> PlatformBridgeApis.MediaType.movie