From b5801f488f5e70356dc726db95443fd43474473c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 May 2021 12:36:26 +0000 Subject: [PATCH 1/6] Bump versions.kotlin from 1.4.32 to 1.5.10 Bumps `versions.kotlin` from 1.4.32 to 1.5.10. Updates `kotlin-gradle-plugin` from 1.4.32 to 1.5.10 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v1.4.32...v1.5.10) Updates `kotlin-stdlib` from 1.4.32 to 1.5.10 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v1.4.32...v1.5.10) Updates `kotlin-reflect` from 1.4.32 to 1.5.10 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v1.4.32...v1.5.10) Updates `kotlin-test-junit` from 1.4.32 to 1.5.10 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v1.4.32...v1.5.10) Signed-off-by: dependabot[bot] --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index 9d5e4339..458303b2 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -21,7 +21,7 @@ ext.versions = [ constraintLayout : "2.0.4", multidex : "2.0.1", room : "2.2.6", - kotlin : "1.4.32", + kotlin : "1.5.10", kotlinxCoroutines : "1.4.3-native-mt", viewModelKtx : "2.2.0", From e1d3e61c74b6bc045cd2c0820775b8402b32fb10 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 May 2021 12:14:45 +0200 Subject: [PATCH 2/6] Bump kotlinx-coroutines-android from 1.4.3-native-mt to 1.5.0-native-mt Bumps [kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines) from 1.4.3-native-mt to 1.5.0-native-mt. - [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases) - [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md) - [Commits](https://github.com/Kotlin/kotlinx.coroutines/commits) --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index 458303b2..57a29674 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -22,7 +22,7 @@ ext.versions = [ multidex : "2.0.1", room : "2.2.6", kotlin : "1.5.10", - kotlinxCoroutines : "1.4.3-native-mt", + kotlinxCoroutines : "1.5.0-native-mt", viewModelKtx : "2.2.0", retrofit : "2.6.4", From d8500e45e4ee2156bc02a7fdddbb30877f01c41f Mon Sep 17 00:00:00 2001 From: tzugen Date: Tue, 18 May 2021 12:30:45 +0200 Subject: [PATCH 3/6] Kotlin and Room need to be updated at the same time. --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index 57a29674..5ecfc4d3 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -20,7 +20,7 @@ ext.versions = [ androidSupportDesign : "1.3.0", constraintLayout : "2.0.4", multidex : "2.0.1", - room : "2.2.6", + room : "2.3.0", kotlin : "1.5.10", kotlinxCoroutines : "1.5.0-native-mt", viewModelKtx : "2.2.0", From f9401ba1fade1400344d11cc89c85dd1144a84bd Mon Sep 17 00:00:00 2001 From: tzugen Date: Mon, 24 May 2021 12:04:18 +0200 Subject: [PATCH 4/6] Apply JVM Target to all Kotlin tasks --- build.gradle | 7 +++++++ gradle_scripts/android-module-bootstrap.gradle | 4 ---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 597d384a..d6d7c22f 100644 --- a/build.gradle +++ b/build.gradle @@ -35,6 +35,13 @@ allprojects { google() maven { url 'https://jitpack.io' } } + + // Set Kotlin JVM target to the same for all subprojects + tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { + kotlinOptions { + jvmTarget = "1.8" + } + } } apply from: 'gradle_scripts/jacoco.gradle' diff --git a/gradle_scripts/android-module-bootstrap.gradle b/gradle_scripts/android-module-bootstrap.gradle index f9fa091a..847827e7 100644 --- a/gradle_scripts/android-module-bootstrap.gradle +++ b/gradle_scripts/android-module-bootstrap.gradle @@ -13,10 +13,6 @@ android { targetSdkVersion versions.targetSdk } - kotlinOptions { - jvmTarget = "1.8" - } - compileOptions { // Sets Java compatibility to Java 8 sourceCompatibility JavaVersion.VERSION_1_8 From 71068fe635cba7dec61e1cb1efe25d347b8240aa Mon Sep 17 00:00:00 2001 From: tzugen Date: Thu, 27 May 2021 12:15:56 +0200 Subject: [PATCH 5/6] Upgrade Koin to 3.0.2 --- dependencies.gradle | 2 +- ultrasonic/build.gradle | 2 -- .../ultrasonic/fragment/PlayerFragment.java | 3 ++- .../moire/ultrasonic/util/CacheCleaner.java | 2 +- .../ultrasonic/activity/NavigationActivity.kt | 2 +- .../di/AppPermanentStorageModule.kt | 2 +- .../ultrasonic/fragment/AlbumListFragment.kt | 2 -- .../ultrasonic/fragment/AlbumListModel.kt | 2 -- .../ultrasonic/fragment/ArtistListFragment.kt | 2 -- .../ultrasonic/fragment/ArtistListModel.kt | 2 -- .../ultrasonic/fragment/EditServerFragment.kt | 2 +- .../fragment/GenericListFragment.kt | 4 +--- .../ultrasonic/fragment/GenericListModel.kt | 2 -- .../fragment/ServerSelectorFragment.kt | 2 +- .../fragment/TrackCollectionFragment.kt | 2 -- .../fragment/TrackCollectionModel.kt | 2 -- .../ultrasonic/service/AudioFocusHandler.kt | 3 ++- .../ultrasonic/service/CachedMusicService.kt | 14 ++++++------- .../moire/ultrasonic/service/DownloadFile.kt | 12 +++++------ .../ultrasonic/service/LocalMediaPlayer.kt | 2 -- .../service/MediaPlayerController.kt | 16 +++++++-------- .../ultrasonic/service/MusicServiceFactory.kt | 2 -- .../ultrasonic/service/OfflineMusicService.kt | 13 ++++++------ .../ultrasonic/subsonic/DownloadHandler.kt | 2 -- .../subsonic/ImageLoaderProvider.kt | 12 +++++------ .../org/moire/ultrasonic/view/SongView.kt | 20 +++++++++---------- 26 files changed, 53 insertions(+), 78 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 5ecfc4d3..068f738b 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -29,7 +29,7 @@ ext.versions = [ jackson : "2.9.5", okhttp : "3.12.13", twitterSerial : "0.1.6", - koin : "2.2.2", + koin : "3.0.2", picasso : "2.71828", sortListView : "1.0.1", diff --git a/ultrasonic/build.gradle b/ultrasonic/build.gradle index f8530d95..f9426351 100644 --- a/ultrasonic/build.gradle +++ b/ultrasonic/build.gradle @@ -56,7 +56,6 @@ android { kotlinOptions { jvmTarget = "1.8" - freeCompilerArgs += "-Xopt-in=org.koin.core.component.KoinApiExtension" } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -94,7 +93,6 @@ dependencies { implementation other.kotlinStdlib implementation other.kotlinxCoroutines implementation other.koinAndroid - implementation other.koinViewModel implementation other.okhttpLogging implementation other.fastScroll implementation other.sortListView diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/PlayerFragment.java b/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/PlayerFragment.java index a2f5881b..4f662d60 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/PlayerFragment.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/PlayerFragment.java @@ -162,7 +162,8 @@ public class PlayerFragment extends Fragment implements GestureDetector.OnGestur setHasOptionsMenu(true); - useFiveStarRating = KoinJavaComponent.get(FeatureStorage.class).isFeatureEnabled(Feature.FIVE_STAR_RATING); + FeatureStorage features = KoinJavaComponent.get(FeatureStorage.class); + useFiveStarRating = features.isFeatureEnabled(Feature.FIVE_STAR_RATING); swipeDistance = (width + height) * PERCENTAGE_OF_SCREEN_FOR_SWIPE / 100; swipeVelocity = swipeDistance; diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/util/CacheCleaner.java b/ultrasonic/src/main/java/org/moire/ultrasonic/util/CacheCleaner.java index a63c8875..c09d6edc 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/util/CacheCleaner.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/util/CacheCleaner.java @@ -23,7 +23,7 @@ import kotlin.Lazy; import static org.koin.java.KoinJavaComponent.inject; /** - * Responsible for cleaning up files from the offline download cache on the filesystem + * Responsible for cleaning up files from the offline download cache on the filesystem. */ public class CacheCleaner { diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/NavigationActivity.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/NavigationActivity.kt index ed7245cb..54f88c30 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/NavigationActivity.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/NavigationActivity.kt @@ -28,7 +28,7 @@ import androidx.navigation.ui.setupWithNavController import androidx.preference.PreferenceManager import com.google.android.material.navigation.NavigationView import org.koin.android.ext.android.inject -import org.koin.android.viewmodel.ext.android.viewModel +import org.koin.androidx.viewmodel.ext.android.viewModel import org.moire.ultrasonic.R import org.moire.ultrasonic.data.ActiveServerProvider.Companion.isOffline import org.moire.ultrasonic.domain.PlayerState diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/di/AppPermanentStorageModule.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/di/AppPermanentStorageModule.kt index 89c5cbc3..e92454b4 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/di/AppPermanentStorageModule.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/di/AppPermanentStorageModule.kt @@ -2,7 +2,7 @@ package org.moire.ultrasonic.di import androidx.room.Room import org.koin.android.ext.koin.androidContext -import org.koin.android.viewmodel.dsl.viewModel +import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.core.qualifier.named import org.koin.dsl.module import org.moire.ultrasonic.data.AppDatabase diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/AlbumListFragment.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/AlbumListFragment.kt index f5b4b4e4..75b93057 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/AlbumListFragment.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/AlbumListFragment.kt @@ -6,7 +6,6 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.LiveData import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.RecyclerView -import org.koin.core.component.KoinApiExtension import org.moire.ultrasonic.R import org.moire.ultrasonic.domain.MusicDirectory import org.moire.ultrasonic.util.Constants @@ -15,7 +14,6 @@ import org.moire.ultrasonic.util.Constants * Displays a list of Albums from the media library * TODO: Check refresh is working */ -@KoinApiExtension class AlbumListFragment : GenericListFragment() { /** diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/AlbumListModel.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/AlbumListModel.kt index 7c927044..5a6e1ba8 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/AlbumListModel.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/AlbumListModel.kt @@ -5,14 +5,12 @@ import android.os.Bundle import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.swiperefreshlayout.widget.SwipeRefreshLayout -import org.koin.core.component.KoinApiExtension import org.moire.ultrasonic.api.subsonic.models.AlbumListType import org.moire.ultrasonic.domain.MusicDirectory import org.moire.ultrasonic.service.MusicService import org.moire.ultrasonic.util.Constants import org.moire.ultrasonic.util.Util -@KoinApiExtension class AlbumListModel(application: Application) : GenericListModel(application) { val albumList: MutableLiveData> = MutableLiveData() diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ArtistListFragment.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ArtistListFragment.kt index ddda850b..6b48979c 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ArtistListFragment.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ArtistListFragment.kt @@ -3,7 +3,6 @@ package org.moire.ultrasonic.fragment import android.os.Bundle import androidx.fragment.app.viewModels import androidx.lifecycle.LiveData -import org.koin.core.component.KoinApiExtension import org.moire.ultrasonic.R import org.moire.ultrasonic.domain.Artist import org.moire.ultrasonic.util.Constants @@ -11,7 +10,6 @@ import org.moire.ultrasonic.util.Constants /** * Displays the list of Artists from the media library */ -@KoinApiExtension class ArtistListFragment : GenericListFragment() { /** diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ArtistListModel.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ArtistListModel.kt index 2611e3d2..d58e97ca 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ArtistListModel.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ArtistListModel.kt @@ -23,14 +23,12 @@ import android.os.Bundle import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.swiperefreshlayout.widget.SwipeRefreshLayout -import org.koin.core.component.KoinApiExtension import org.moire.ultrasonic.domain.Artist import org.moire.ultrasonic.service.MusicService /** * Provides ViewModel which contains the list of available Artists */ -@KoinApiExtension class ArtistListModel(application: Application) : GenericListModel(application) { private val artists: MutableLiveData> = MutableLiveData() diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/EditServerFragment.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/EditServerFragment.kt index 12519813..1647fdeb 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/EditServerFragment.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/EditServerFragment.kt @@ -14,7 +14,7 @@ import com.google.android.material.textfield.TextInputLayout import java.net.MalformedURLException import java.net.URL import org.koin.android.ext.android.inject -import org.koin.android.viewmodel.ext.android.viewModel +import org.koin.androidx.viewmodel.ext.android.viewModel import org.moire.ultrasonic.BuildConfig import org.moire.ultrasonic.R import org.moire.ultrasonic.api.subsonic.SubsonicAPIClient diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/GenericListFragment.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/GenericListFragment.kt index 723193ad..2862eaa8 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/GenericListFragment.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/GenericListFragment.kt @@ -13,8 +13,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import org.koin.android.ext.android.inject -import org.koin.android.viewmodel.ext.android.viewModel -import org.koin.core.component.KoinApiExtension +import org.koin.androidx.viewmodel.ext.android.viewModel import org.moire.ultrasonic.R import org.moire.ultrasonic.data.ActiveServerProvider import org.moire.ultrasonic.domain.Artist @@ -31,7 +30,6 @@ import org.moire.ultrasonic.view.SelectMusicFolderView * @param T: The type of data which will be used (must extend GenericEntry) * @param TA: The Adapter to use (must extend GenericRowAdapter) */ -@KoinApiExtension abstract class GenericListFragment> : Fragment() { internal val activeServerProvider: ActiveServerProvider by inject() internal val serverSettingsModel: ServerSettingsModel by viewModel() diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/GenericListModel.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/GenericListModel.kt index 810e90f5..bf377eed 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/GenericListModel.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/GenericListModel.kt @@ -15,7 +15,6 @@ import java.net.UnknownHostException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent import org.koin.core.component.inject import org.moire.ultrasonic.data.ActiveServerProvider @@ -29,7 +28,6 @@ import org.moire.ultrasonic.util.Util /** * An abstract Model, which can be extended to retrieve a list of items from the API */ -@KoinApiExtension open class GenericListModel(application: Application) : AndroidViewModel(application), KoinComponent { diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ServerSelectorFragment.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ServerSelectorFragment.kt index a7093210..bde3efd5 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ServerSelectorFragment.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ServerSelectorFragment.kt @@ -15,7 +15,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withContext import org.koin.android.ext.android.inject -import org.koin.android.viewmodel.ext.android.viewModel +import org.koin.androidx.viewmodel.ext.android.viewModel import org.moire.ultrasonic.R import org.moire.ultrasonic.data.ActiveServerProvider import org.moire.ultrasonic.fragment.EditServerFragment.Companion.EDIT_SERVER_INTENT_INDEX diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/TrackCollectionFragment.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/TrackCollectionFragment.kt index 08dd7fd7..2d544ef1 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/TrackCollectionFragment.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/TrackCollectionFragment.kt @@ -33,7 +33,6 @@ import java.util.Random import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.launch import org.koin.android.ext.android.inject -import org.koin.core.component.KoinApiExtension import org.moire.ultrasonic.R import org.moire.ultrasonic.data.ActiveServerProvider.Companion.isOffline import org.moire.ultrasonic.domain.MusicDirectory @@ -60,7 +59,6 @@ import timber.log.Timber * Displays a group of tracks, eg. the songs of an album, of a playlist etc. * TODO: Refactor this fragment and model to extend the GenericListFragment */ -@KoinApiExtension class TrackCollectionFragment : Fragment() { private var refreshAlbumListView: SwipeRefreshLayout? = null diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/TrackCollectionModel.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/TrackCollectionModel.kt index 45b2d81a..c6ca882a 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/TrackCollectionModel.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/TrackCollectionModel.kt @@ -13,7 +13,6 @@ import androidx.lifecycle.MutableLiveData import java.util.LinkedList import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext -import org.koin.core.component.KoinApiExtension import org.moire.ultrasonic.R import org.moire.ultrasonic.domain.MusicDirectory import org.moire.ultrasonic.service.MusicService @@ -24,7 +23,6 @@ import org.moire.ultrasonic.util.Util * Model for retrieving different collections of tracks from the API * TODO: Refactor this model to extend the GenericListModel */ -@KoinApiExtension class TrackCollectionModel(application: Application) : GenericListModel(application) { private val allSongsId = "-1" diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/AudioFocusHandler.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/AudioFocusHandler.kt index dbd107b8..0d3e7791 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/AudioFocusHandler.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/AudioFocusHandler.kt @@ -18,7 +18,8 @@ import timber.log.Timber class AudioFocusHandler(private val context: Context) { // TODO: This is a circular reference, try to remove it // This should be doable by using the native MediaController framework - private val mediaPlayerControllerLazy = inject(MediaPlayerController::class.java) + private val mediaPlayerControllerLazy = + inject(MediaPlayerController::class.java) private val audioManager by lazy { context.getSystemService(Context.AUDIO_SERVICE) as AudioManager diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/CachedMusicService.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/CachedMusicService.kt index 1086a797..0f280258 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/CachedMusicService.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/CachedMusicService.kt @@ -9,7 +9,8 @@ package org.moire.ultrasonic.service import android.graphics.Bitmap import java.io.InputStream import java.util.concurrent.TimeUnit -import org.koin.java.KoinJavaComponent.inject +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject import org.moire.ultrasonic.data.ActiveServerProvider import org.moire.ultrasonic.domain.Bookmark import org.moire.ultrasonic.domain.ChatMessage @@ -31,10 +32,9 @@ import org.moire.ultrasonic.util.TimeLimitedCache import org.moire.ultrasonic.util.Util @Suppress("TooManyFunctions") -class CachedMusicService(private val musicService: MusicService) : MusicService { - private val activeServerProvider = inject( - ActiveServerProvider::class.java - ) +class CachedMusicService(private val musicService: MusicService) : MusicService, KoinComponent { + private val activeServerProvider: ActiveServerProvider by inject() + private val cachedMusicDirectories: LRUCache> private val cachedArtist: LRUCache> private val cachedAlbum: LRUCache> @@ -308,8 +308,8 @@ class CachedMusicService(private val musicService: MusicService) : MusicService } private fun checkSettingsChanged() { - val newUrl = activeServerProvider.value.getRestUrl(null) - val newFolderId = activeServerProvider.value.getActiveServer().musicFolderId + val newUrl = activeServerProvider.getRestUrl(null) + val newFolderId = activeServerProvider.getActiveServer().musicFolderId if (!Util.equals(newUrl, restUrl) || !Util.equals(cachedMusicFolderId, newFolderId)) { cachedMusicFolders.clear() cachedMusicDirectories.clear() diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadFile.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadFile.kt index 6c75e62d..fd98da9b 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadFile.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadFile.kt @@ -19,8 +19,8 @@ import java.io.IOException import java.io.InputStream import java.io.OutputStream import java.io.RandomAccessFile -import org.koin.core.component.KoinApiExtension -import org.koin.java.KoinJavaComponent.inject +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject import org.moire.ultrasonic.app.UApp import org.moire.ultrasonic.domain.MusicDirectory import org.moire.ultrasonic.service.MusicServiceFactory.getMusicService @@ -36,11 +36,10 @@ import timber.log.Timber * @author Sindre Mehus * @version $Id$ */ -@KoinApiExtension class DownloadFile( val song: MusicDirectory.Entry, private val save: Boolean -) { +) : KoinComponent { val partialFile: File val completeFile: File private val saveFile: File = FileUtil.getSongFile(song) @@ -59,7 +58,7 @@ class DownloadFile( @Volatile private var completeWhenDone = false - private val downloader = inject(Downloader::class.java) + private val downloader: Downloader by inject() val progress: MutableLiveData = MutableLiveData(0) @@ -201,7 +200,6 @@ class DownloadFile( return String.format("DownloadFile (%s)", song) } - @KoinApiExtension @Suppress("TooGenericExceptionCaught") private inner class DownloadTask : CancellableTask() { override fun execute() { @@ -310,7 +308,7 @@ class DownloadFile( } wifiLock?.release() CacheCleaner().cleanSpace() - downloader.value.checkDownloads() + downloader.checkDownloads() } } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/LocalMediaPlayer.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/LocalMediaPlayer.kt index 0e4c2503..eae455c1 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/LocalMediaPlayer.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/LocalMediaPlayer.kt @@ -25,7 +25,6 @@ import java.net.URLEncoder import java.util.Locale import kotlin.math.abs import kotlin.math.max -import org.koin.core.component.KoinApiExtension import org.moire.ultrasonic.audiofx.EqualizerController import org.moire.ultrasonic.audiofx.VisualizerController import org.moire.ultrasonic.data.ActiveServerProvider.Companion.isOffline @@ -40,7 +39,6 @@ import timber.log.Timber /** * Represents a Media Player which uses the mobile's resources for playback */ -@KoinApiExtension class LocalMediaPlayer( private val audioFocusHandler: AudioFocusHandler, private val context: Context diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerController.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerController.kt index 7f88a75d..e8f3c4f0 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerController.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerController.kt @@ -7,9 +7,9 @@ package org.moire.ultrasonic.service import android.content.Intent -import org.koin.core.component.KoinApiExtension -import org.koin.java.KoinJavaComponent.get -import org.koin.java.KoinJavaComponent.inject +import org.koin.core.component.KoinComponent +import org.koin.core.component.get +import org.koin.core.component.inject import org.moire.ultrasonic.app.UApp import org.moire.ultrasonic.data.ActiveServerProvider import org.moire.ultrasonic.domain.MusicDirectory @@ -30,7 +30,6 @@ import timber.log.Timber * This class contains everything that is necessary for the Application UI * to control the Media Player implementation. */ -@KoinApiExtension @Suppress("TooManyFunctions") class MediaPlayerController( private val downloadQueueSerializer: DownloadQueueSerializer, @@ -38,7 +37,7 @@ class MediaPlayerController( private val downloader: Downloader, private val shufflePlayBuffer: ShufflePlayBuffer, private val localMediaPlayer: LocalMediaPlayer -) { +) : KoinComponent { private var created = false var suggestedPlaylistName: String? = null @@ -46,8 +45,8 @@ class MediaPlayerController( var showVisualization = false private var autoPlayStart = false - private val jukeboxMediaPlayer = inject(JukeboxMediaPlayer::class.java).value - private val activeServerProvider = inject(ActiveServerProvider::class.java).value + private val jukeboxMediaPlayer: JukeboxMediaPlayer by inject() + private val activeServerProvider: ActiveServerProvider by inject() fun onCreate() { if (created) return @@ -462,7 +461,8 @@ class MediaPlayerController( @Suppress("TooGenericExceptionCaught") // The interface throws only generic exceptions fun setSongRating(rating: Int) { - if (!get(FeatureStorage::class.java).isFeatureEnabled(Feature.FIVE_STAR_RATING)) return + val features: FeatureStorage = get() + if (!features.isFeatureEnabled(Feature.FIVE_STAR_RATING)) return if (localMediaPlayer.currentPlaying == null) return val song = localMediaPlayer.currentPlaying!!.song song.userRating = rating diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MusicServiceFactory.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MusicServiceFactory.kt index 0f3f33df..02ddb4a5 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MusicServiceFactory.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MusicServiceFactory.kt @@ -18,7 +18,6 @@ */ package org.moire.ultrasonic.service -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent import org.koin.core.component.get import org.koin.core.context.loadKoinModules @@ -30,7 +29,6 @@ import org.moire.ultrasonic.di.ONLINE_MUSIC_SERVICE import org.moire.ultrasonic.di.musicServiceModule // TODO Refactor everywhere to use DI way to get MusicService, and then remove this class -@KoinApiExtension object MusicServiceFactory : KoinComponent { @JvmStatic fun getMusicService(): MusicService { diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/OfflineMusicService.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/OfflineMusicService.kt index 8e751382..6afed13d 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/OfflineMusicService.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/OfflineMusicService.kt @@ -22,7 +22,8 @@ import java.util.Locale import java.util.Random import java.util.concurrent.TimeUnit import java.util.regex.Pattern -import org.koin.java.KoinJavaComponent.inject +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject import org.moire.ultrasonic.data.ActiveServerProvider import org.moire.ultrasonic.domain.Artist import org.moire.ultrasonic.domain.Bookmark @@ -47,10 +48,8 @@ import timber.log.Timber // TODO: There are quite a number of deeply nested and complicated functions in this class.. // Simplify them :) @Suppress("TooManyFunctions") -class OfflineMusicService : MusicService { - private val activeServerProvider = inject( - ActiveServerProvider::class.java - ) +class OfflineMusicService : MusicService, KoinComponent { + private val activeServerProvider: ActiveServerProvider by inject() override fun getIndexes(musicFolderId: String?, refresh: Boolean): Indexes { val artists: MutableList = ArrayList() @@ -85,7 +84,7 @@ class OfflineMusicService : MusicService { lhs = lhs.substring(article.length + 1) } index = rhs.indexOf( - String.format(Locale.ROOT, "%s ", article.toLowerCase(Locale.ROOT)) + String.format(Locale.ROOT, "%s ", article.lowercase(Locale.ROOT)) ) if (index == 0) { rhs = rhs.substring(article.length + 1) @@ -253,7 +252,7 @@ class OfflineMusicService : MusicService { @Throws(Exception::class) override fun createPlaylist(id: String, name: String, entries: List) { val playlistFile = - FileUtil.getPlaylistFile(activeServerProvider.value.getActiveServer().name, name) + FileUtil.getPlaylistFile(activeServerProvider.getActiveServer().name, name) val fw = FileWriter(playlistFile) val bw = BufferedWriter(fw) try { diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/DownloadHandler.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/DownloadHandler.kt index 7782d8a0..b30490ac 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/DownloadHandler.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/DownloadHandler.kt @@ -5,7 +5,6 @@ import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController import java.util.Collections import java.util.LinkedList -import org.koin.core.component.KoinApiExtension import org.moire.ultrasonic.R import org.moire.ultrasonic.data.ActiveServerProvider.Companion.isOffline import org.moire.ultrasonic.domain.MusicDirectory @@ -20,7 +19,6 @@ import org.moire.ultrasonic.util.Util * Retrieves a list of songs and adds them to the now playing list */ @Suppress("LongParameterList") -@KoinApiExtension class DownloadHandler( val mediaPlayerController: MediaPlayerController, val networkAndStorageChecker: NetworkAndStorageChecker diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/ImageLoaderProvider.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/ImageLoaderProvider.kt index 549b9e8e..3ee6bf53 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/ImageLoaderProvider.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/ImageLoaderProvider.kt @@ -1,10 +1,10 @@ package org.moire.ultrasonic.subsonic import android.content.Context -import org.koin.java.KoinJavaComponent.get +import org.koin.core.component.KoinComponent +import org.koin.core.component.get import org.moire.ultrasonic.featureflags.Feature import org.moire.ultrasonic.featureflags.FeatureStorage -import org.moire.ultrasonic.subsonic.loader.image.SubsonicImageLoader import org.moire.ultrasonic.util.ImageLoader import org.moire.ultrasonic.util.LegacyImageLoader import org.moire.ultrasonic.util.Util @@ -12,7 +12,7 @@ import org.moire.ultrasonic.util.Util /** * Handles the lifetime of the Image Loader */ -class ImageLoaderProvider(val context: Context) { +class ImageLoaderProvider(val context: Context) : KoinComponent { private var imageLoader: ImageLoader? = null @Synchronized @@ -33,12 +33,12 @@ class ImageLoaderProvider(val context: Context) { context, Util.getImageLoaderConcurrency() ) - val isNewImageLoaderEnabled = get(FeatureStorage::class.java) - .isFeatureEnabled(Feature.NEW_IMAGE_DOWNLOADER) + val features: FeatureStorage = get() + val isNewImageLoaderEnabled = features.isFeatureEnabled(Feature.NEW_IMAGE_DOWNLOADER) imageLoader = if (isNewImageLoaderEnabled) { SubsonicImageLoaderProxy( legacyImageLoader, - get(SubsonicImageLoader::class.java) + get() ) } else { legacyImageLoader diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/view/SongView.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/view/SongView.kt index 165f4ab1..3a4638c7 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/view/SongView.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/view/SongView.kt @@ -24,8 +24,9 @@ import android.graphics.drawable.Drawable import android.text.TextUtils import android.view.LayoutInflater import android.widget.Checkable -import org.koin.java.KoinJavaComponent.get -import org.koin.java.KoinJavaComponent.inject +import org.koin.core.component.KoinComponent +import org.koin.core.component.get +import org.koin.core.component.inject import org.moire.ultrasonic.R import org.moire.ultrasonic.data.ActiveServerProvider.Companion.isOffline import org.moire.ultrasonic.domain.MusicDirectory @@ -42,7 +43,7 @@ import timber.log.Timber /** * Used to display songs and videos in a `ListView`. */ -class SongView(context: Context) : UpdateView(context), Checkable { +class SongView(context: Context) : UpdateView(context), Checkable, KoinComponent { var entry: MusicDirectory.Entry? = null private set @@ -55,10 +56,9 @@ class SongView(context: Context) : UpdateView(context), Checkable { private var downloadFile: DownloadFile? = null private var playing = false private var viewHolder: SongViewHolder? = null - - private val useFiveStarRating: Boolean = - get(FeatureStorage::class.java).isFeatureEnabled(Feature.FIVE_STAR_RATING) - private val mediaPlayerControllerLazy = inject(MediaPlayerController::class.java) + private val features: FeatureStorage = get() + private val useFiveStarRating: Boolean = features.isFeatureEnabled(Feature.FIVE_STAR_RATING) + private val mediaPlayerController: MediaPlayerController by inject() fun setLayout(song: MusicDirectory.Entry) { @@ -96,7 +96,7 @@ class SongView(context: Context) : UpdateView(context), Checkable { updateBackground() entry = song - downloadFile = mediaPlayerControllerLazy.value.getDownloadFileForSong(song) + downloadFile = mediaPlayerController.getDownloadFileForSong(song) val artist = StringBuilder(60) var bitRate: String? = null @@ -223,7 +223,7 @@ class SongView(context: Context) : UpdateView(context), Checkable { public override fun update() { updateBackground() - downloadFile = mediaPlayerControllerLazy.value.getDownloadFileForSong(entry) + downloadFile = mediaPlayerController.getDownloadFileForSong(entry) updateDownloadStatus(downloadFile!!) @@ -254,7 +254,7 @@ class SongView(context: Context) : UpdateView(context), Checkable { if (rating > 4) starDrawable else starHollowDrawable ) - val playing = mediaPlayerControllerLazy.value.currentPlaying === downloadFile + val playing = mediaPlayerController.currentPlaying === downloadFile if (playing) { if (!this.playing) { From 8aa1cf1e2cdcbe23f052b2a6e186da768c0357c4 Mon Sep 17 00:00:00 2001 From: tzugen Date: Fri, 28 May 2021 20:32:31 +0200 Subject: [PATCH 6/6] Fix Kotlin 1.5 deprecated calls --- .../subsonic/interceptors/PasswordMD5Interceptor.kt | 2 +- .../org/moire/ultrasonic/fragment/ArtistRowAdapter.kt | 2 +- .../moire/ultrasonic/service/OfflineMusicService.kt | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/interceptors/PasswordMD5Interceptor.kt b/core/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/interceptors/PasswordMD5Interceptor.kt index 75d6a48e..8a1c8388 100644 --- a/core/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/interceptors/PasswordMD5Interceptor.kt +++ b/core/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/interceptors/PasswordMD5Interceptor.kt @@ -39,7 +39,7 @@ class PasswordMD5Interceptor(private val password: String) : Interceptor { val md5Digest = MessageDigest.getInstance("MD5") return md5Digest.digest( "$password$salt".toByteArray() - ).toHexBytes().toLowerCase(Locale.getDefault()) + ).toHexBytes().lowercase(Locale.getDefault()) } catch (e: NoSuchAlgorithmException) { throw IllegalStateException(e) } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ArtistRowAdapter.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ArtistRowAdapter.kt index 30f76f4e..2e312225 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ArtistRowAdapter.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ArtistRowAdapter.kt @@ -96,7 +96,7 @@ class ArtistRowAdapter( } private fun getSectionFromName(name: String): String { - var section = name.first().toUpperCase() + var section = name.first().uppercaseChar() if (!section.isLetter()) section = '#' return section.toString() } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/OfflineMusicService.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/OfflineMusicService.kt index 6afed13d..f1fc7f43 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/OfflineMusicService.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/OfflineMusicService.kt @@ -66,8 +66,8 @@ class OfflineMusicService : MusicService, KoinComponent { val ignoredArticlesString = "The El La Los Las Le Les" val ignoredArticles = COMPILE.split(ignoredArticlesString) artists.sortWith { lhsArtist, rhsArtist -> - var lhs = lhsArtist.name!!.toLowerCase(Locale.ROOT) - var rhs = rhsArtist.name!!.toLowerCase(Locale.ROOT) + var lhs = lhsArtist.name!!.lowercase(Locale.ROOT) + var rhs = rhsArtist.name!!.lowercase(Locale.ROOT) val lhs1 = lhs[0] val rhs1 = rhs[0] if (Character.isDigit(lhs1) && !Character.isDigit(rhs1)) { @@ -78,7 +78,7 @@ class OfflineMusicService : MusicService, KoinComponent { } for (article in ignoredArticles) { var index = lhs.indexOf( - String.format(Locale.ROOT, "%s ", article.toLowerCase(Locale.ROOT)) + String.format(Locale.ROOT, "%s ", article.lowercase(Locale.ROOT)) ) if (index == 0) { lhs = lhs.substring(article.length + 1) @@ -667,10 +667,10 @@ class OfflineMusicService : MusicService, KoinComponent { } private fun matchCriteria(criteria: SearchCriteria, name: String?): Int { - val query = criteria.query.toLowerCase(Locale.ROOT) + val query = criteria.query.lowercase(Locale.ROOT) val queryParts = COMPILE.split(query) val nameParts = COMPILE.split( - name!!.toLowerCase(Locale.ROOT) + name!!.lowercase(Locale.ROOT) ) var closeness = 0 for (queryPart in queryParts) {