@@ -22,19 +22,21 @@ import com.google.android.gms.common.images.WebImage
2222import kotlinx.android.parcel.Parcelize
2323import java.util.*
2424import android.os.Parcel
25+ import io.reactivex.Flowable
26+ import kotlinx.android.parcel.IgnoredOnParcel
2527import java.io.IOException
2628
27- private val ByteArray .track: Track ? get() = run {
28- val parcel = Parcel .obtain()
29- parcel.unmarshall(this , 0 , size)
30- parcel.setDataPosition(0 ) // This is extremely important!
29+ // private val ByteArray.track: Track? get() = run {
30+ // val parcel = Parcel.obtain()
31+ // parcel.unmarshall(this, 0, size)
32+ // parcel.setDataPosition(0) // This is extremely important!
33+ //
34+ // val result = Track.CREATOR.createFromParcel(parcel)
35+ // parcel.recycle()
36+ // result
37+ // }
3138
32- val result = Track .CREATOR .createFromParcel(parcel)
33- parcel.recycle()
34- result
35- }
36-
37- val Download .track get() = request.data.track
39+ // val Download.track get() = request.data.track
3840
3941internal val Track .Companion .CREATOR get() = TrackCreator .getCreator()
4042
@@ -51,6 +53,7 @@ class Track (var id: String = "",
5153
5254 companion object {}
5355
56+ @IgnoredOnParcel
5457 private val mediaInfo: MediaInfo ? get() {
5558 if (url.isEmpty()) return null
5659 val musicMetadata = MediaMetadata (MediaMetadata .MEDIA_TYPE_MUSIC_TRACK )
@@ -69,12 +72,14 @@ class Track (var id: String = "",
6972 .build()
7073 }
7174
75+ @IgnoredOnParcel
7276 val mediaLoadRequestData: MediaLoadRequestData ? get() {
7377 return MediaLoadRequestData .Builder ()
7478 .setMediaInfo(mediaInfo? : return null )
7579 .build()
7680 }
7781
82+ @IgnoredOnParcel
7883 val mediaDescription: MediaDescriptionCompat get() {
7984 val extras = Bundle ()
8085
@@ -121,23 +126,28 @@ class Track (var id: String = "",
121126 }
122127 }
123128
124- val toByteArray: ByteArray get() = run {
125- val parcel = Parcel .obtain()
126- writeToParcel(parcel, 0 )
127- val bytes = parcel.marshall()
128- parcel.recycle()
129- return bytes
130- }
129+ // @IgnoredOnParcel
130+ // val toByteArray: ByteArray get() = run {
131+ // val parcel = Parcel.obtain()
132+ // writeToParcel(parcel, 0)
133+ // val bytes = parcel.marshall()
134+ // parcel.recycle()
135+ // return bytes
136+ // }
131137
138+ @IgnoredOnParcel
132139 val download: Download ? get() = try {
133- GoonjDownloadManager .downloadManager.downloadIndex.getDownload(url )
140+ GoonjDownloadManager .downloadManager.downloadIndex.getDownload(id )
134141 } catch (e: IOException ) {
135142 null
136143 }
137144
138- val downloadFlowable get() = downloadStateFlowable.skipWhile {
139- it == DownloadState .REQUIREMENT_STATE_CHANGED
140- }.map { download }
145+ @IgnoredOnParcel
146+ val isDownloadActiveFlowable: Flowable <Boolean ?> get() = downloadStateFlowable.map { download != null }
147+
148+ fun requestDownload () = GoonjDownloadManager .addDownload(id, url.toUri())
149+
150+ fun removeDownload () = GoonjDownloadManager .removeDownload(id)
141151}
142152
143153
0 commit comments