Use dependency injection for most singletons

This commit is contained in:
MM20
2021-10-10 12:15:54 +02:00
parent 023bb2cbb1
commit 087d4fd455
144 changed files with 1789 additions and 1277 deletions
+2
View File
@@ -41,6 +41,8 @@ dependencies {
implementation(libs.androidx.appcompat)
implementation(libs.androidx.media2)
implementation(libs.koin.android)
implementation(project(":ktx"))
}
@@ -0,0 +1,10 @@
package de.mm20.launcher2.music
import org.koin.android.ext.koin.androidContext
import org.koin.androidx.viewmodel.dsl.viewModel
import org.koin.dsl.module
val musicModule = module {
single { MusicRepository(androidContext()) }
viewModel { MusicViewModel(get()) }
}
@@ -24,7 +24,7 @@ import kotlinx.coroutines.*
import java.io.File
import java.util.concurrent.Executors
class MusicRepository private constructor(val context: Context) {
class MusicRepository(val context: Context) {
private val scope = CoroutineScope(Job() + Dispatchers.Main)
@@ -245,12 +245,6 @@ class MusicRepository private constructor(val context: Context) {
}
companion object {
private lateinit var instance: MusicRepository
fun getInstance(context: Context): MusicRepository {
if (!::instance.isInitialized) instance = MusicRepository(context.applicationContext)
return instance
}
private const val PREFS = "music"
private const val PREFS_KEY_TITLE = "title"
@@ -1,16 +1,14 @@
package de.mm20.launcher2.music
import android.app.Application
import android.app.PendingIntent
import android.content.Context
import android.graphics.Bitmap
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class MusicViewModel(app: Application) : AndroidViewModel(app) {
val musicRepository = MusicRepository.getInstance(app)
class MusicViewModel(
val musicRepository: MusicRepository
) : ViewModel() {
val title: LiveData<String?> = musicRepository.title
val artist: LiveData<String?> = musicRepository.artist