package com.github.apognu.otter.viewmodels import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.Transformations import androidx.lifecycle.ViewModel import com.github.apognu.otter.models.api.DownloadInfo import com.github.apognu.otter.utils.getMetadata import com.google.android.exoplayer2.offline.DownloadCursor class DownloadsViewModel : ViewModel() { companion object { private lateinit var instance: DownloadsViewModel fun get(): DownloadsViewModel { instance = if (::instance.isInitialized) instance else DownloadsViewModel() return instance } } val cursor: MutableLiveData by lazy { MutableLiveData() } val downloads: LiveData> = Transformations.map(cursor) { cursor -> val downloads = mutableListOf() while (cursor.moveToNext()) { val download = cursor.download download.getMetadata()?.let { info -> downloads.add(info.apply { this.download = download }) } } downloads.sortedBy { it.title } } }