diff --git a/application/moviepedia/src/main/java/org/videolan/moviepedia/provider/MediaScrapingMovieProvider.kt b/application/moviepedia/src/main/java/org/videolan/moviepedia/provider/MediaScrapingMovieProvider.kt index 5d2b6ca71..0cc7d8363 100644 --- a/application/moviepedia/src/main/java/org/videolan/moviepedia/provider/MediaScrapingMovieProvider.kt +++ b/application/moviepedia/src/main/java/org/videolan/moviepedia/provider/MediaScrapingMovieProvider.kt @@ -26,7 +26,7 @@ package org.videolan.moviepedia.provider import android.content.Context import androidx.lifecycle.LiveData -import androidx.lifecycle.Transformations.switchMap +import androidx.lifecycle.switchMap import androidx.paging.LivePagedListBuilder import androidx.paging.PagedList import org.videolan.moviepedia.database.models.MediaMetadataType @@ -35,7 +35,7 @@ import org.videolan.moviepedia.provider.datasources.MovieDataSourceFactory class MediaScrapingMovieProvider(private val context: Context, private val mediaType: MediaMetadataType) : MediaScrapingProvider(context) { - override var pagedList: LiveData> = switchMap(sortQuery) { input -> + override var pagedList: LiveData> = sortQuery.switchMap { input -> val movieDataSourceFactory = MovieDataSourceFactory(context, input, mediaType) //todo moviepedia set the right values val pagedListConfig = PagedList.Config.Builder() diff --git a/application/vlc-android/src/org/videolan/vlc/MediaParsingService.kt b/application/vlc-android/src/org/videolan/vlc/MediaParsingService.kt index 81c9fbef7..27ab5ca3f 100644 --- a/application/vlc-android/src/org/videolan/vlc/MediaParsingService.kt +++ b/application/vlc-android/src/org/videolan/vlc/MediaParsingService.kt @@ -547,7 +547,8 @@ class MediaParsingService : LifecycleService(), DevicesDiscoveryCb { } } - override fun getLifecycle(): Lifecycle = dispatcher.lifecycle + override val lifecycle: Lifecycle + get() = dispatcher.lifecycle companion object { val progress = MutableLiveData() diff --git a/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt b/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt index c346cc7d6..8c7b2a66d 100644 --- a/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt +++ b/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt @@ -1680,7 +1680,8 @@ class PlaybackService : MediaBrowserServiceCompat(), LifecycleOwner, CoroutineSc } } - override fun getLifecycle(): Lifecycle = dispatcher.lifecycle + override val lifecycle: Lifecycle + get() = dispatcher.lifecycle /* * Browsing diff --git a/application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt b/application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt index bd2af1599..46d59e5d9 100644 --- a/application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt +++ b/application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt @@ -267,5 +267,6 @@ class PlaylistAdapter(private val player: IPlayer) : DiffUtilAdapter, SchedulerCallback, Ap actor.trySend(Unit) } - override fun onChanged(t: HeadersIndex?) { + override fun onChanged(t: HeadersIndex) { actor.trySend(Unit) } @@ -405,7 +406,9 @@ class FastScroller : LinearLayout, Observer, SchedulerCallback, Ap } } - override fun getLifecycle() = findViewTreeLifecycleOwner()!!.lifecycle + override val lifecycle: Lifecycle + get() = findViewTreeLifecycleOwner()!!.lifecycle + override fun onOffsetChanged(appBar: AppBarLayout?, verticalOffset: Int) { layoutParams.height = coordinatorLayout.height - (appbarLayout.height + appbarLayout.top) invalidate() diff --git a/application/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt b/application/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt index 02c7d2924..d3a17f0ff 100644 --- a/application/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt +++ b/application/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt @@ -164,7 +164,7 @@ open class FileBrowserProvider( super.release() } - override fun onChanged(list: MutableList?) { + override fun onChanged(list: MutableList) { if (list.isNullOrEmpty()) { if (otgPosition != -1) { dataset.remove(otgPosition) diff --git a/application/vlc-android/src/org/videolan/vlc/providers/NetworkProvider.kt b/application/vlc-android/src/org/videolan/vlc/providers/NetworkProvider.kt index b5c117dc3..5dc5a73d1 100644 --- a/application/vlc-android/src/org/videolan/vlc/providers/NetworkProvider.kt +++ b/application/vlc-android/src/org/videolan/vlc/providers/NetworkProvider.kt @@ -80,7 +80,7 @@ class NetworkProvider(context: Context, dataset: LiveDataset, return super.stop() } - override fun onChanged(favs: List?) { + override fun onChanged(favs: List) { val data = dataset.value.toMutableList() data.listIterator().run { while (hasNext()) { diff --git a/application/vlc-android/src/org/videolan/vlc/repository/ExternalSubRepository.kt b/application/vlc-android/src/org/videolan/vlc/repository/ExternalSubRepository.kt index 9a3297fe7..4ff833e9f 100644 --- a/application/vlc-android/src/org/videolan/vlc/repository/ExternalSubRepository.kt +++ b/application/vlc-android/src/org/videolan/vlc/repository/ExternalSubRepository.kt @@ -23,17 +23,17 @@ package org.videolan.vlc.repository import android.content.Context import android.net.Uri import androidx.lifecycle.LiveData -import androidx.lifecycle.Transformations +import androidx.lifecycle.map import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.Job import kotlinx.coroutines.launch +import org.videolan.tools.CoroutineContextProvider import org.videolan.tools.SingletonHolder +import org.videolan.tools.livedata.LiveDataMap import org.videolan.vlc.database.ExternalSubDao import org.videolan.vlc.database.MediaDatabase import org.videolan.vlc.gui.dialogs.State import org.videolan.vlc.gui.dialogs.SubtitleItem -import org.videolan.tools.CoroutineContextProvider -import org.videolan.tools.livedata.LiveDataMap import java.io.File class ExternalSubRepository(private val externalSubDao: ExternalSubDao, private val coroutineContextProvider: CoroutineContextProvider = CoroutineContextProvider()) { @@ -50,7 +50,7 @@ class ExternalSubRepository(private val externalSubDao: ExternalSubDao, private fun getDownloadedSubtitles(mediaUri: Uri): LiveData> { val externalSubs = externalSubDao.get(mediaUri.path!!) - return Transformations.map(externalSubs) { list -> + return externalSubs.map { list -> val existExternalSubs: MutableList = mutableListOf() list.forEach { if (File(Uri.decode(it.subtitlePath)).exists()) diff --git a/application/vlc-android/src/org/videolan/vlc/viewmodels/SubtitlesModel.kt b/application/vlc-android/src/org/videolan/vlc/viewmodels/SubtitlesModel.kt index 77ddb72c2..9ec5eb00e 100644 --- a/application/vlc-android/src/org/videolan/vlc/viewmodels/SubtitlesModel.kt +++ b/application/vlc-android/src/org/videolan/vlc/viewmodels/SubtitlesModel.kt @@ -3,10 +3,8 @@ package org.videolan.vlc.viewmodels import android.content.Context import android.net.Uri import android.text.Html -import android.text.SpannableString import android.text.Spanned import android.util.Log -import androidx.core.text.HtmlCompat import androidx.core.text.toSpanned import androidx.databinding.Observable import androidx.databinding.ObservableBoolean @@ -16,18 +14,18 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import org.videolan.tools.FileUtils +import org.videolan.resources.opensubtitles.OpenSubtitle +import org.videolan.resources.opensubtitles.OpenSubtitleRepository import org.videolan.resources.util.NoConnectivityException +import org.videolan.tools.CoroutineContextProvider +import org.videolan.tools.FileUtils import org.videolan.tools.Settings +import org.videolan.tools.putSingle +import org.videolan.vlc.BuildConfig import org.videolan.vlc.R -import org.videolan.resources.opensubtitles.OpenSubtitle import org.videolan.vlc.gui.dialogs.State import org.videolan.vlc.gui.dialogs.SubtitleItem import org.videolan.vlc.repository.ExternalSubRepository -import org.videolan.resources.opensubtitles.OpenSubtitleRepository -import org.videolan.tools.CoroutineContextProvider -import org.videolan.tools.putSingle -import org.videolan.vlc.BuildConfig import java.io.File import java.util.* @@ -47,7 +45,7 @@ class SubtitlesModel(private val context: Context, private val mediaUri: Uri, pr val observableResultDescription = ObservableField() private val apiResultLiveData: MutableLiveData> = MutableLiveData() - private val downloadedLiveData = Transformations.map(ExternalSubRepository.getInstance(context).getDownloadedSubtitles(mediaUri)) { list -> + private val downloadedLiveData = ExternalSubRepository.getInstance(context).getDownloadedSubtitles(mediaUri).map { list -> list.map { SubtitleItem(it.idSubtitle, mediaUri, it.subLanguageID, it.movieReleaseName, State.Downloaded, "") } } diff --git a/build.gradle b/build.gradle index 3cad0c835..ff8e5a39f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.android_plugin_version = '8.0.1' + ext.android_plugin_version = '8.1.0' ext.kotlin_version = '1.7.10' ext.kotlinx_version = '1.6.0' repositories {