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
@@ -10,20 +10,11 @@ import de.mm20.launcher2.search.data.Searchable
* A low level repository for hidden items. This can only be used to retrieve keys and to check
* whether an item is hidden. To retrieve actual Searchable objects, use FavoritesRepository.
*/
class HiddenItemsRepository private constructor(val context: Context) {
class HiddenItemsRepository(val context: Context) {
val hiddenItemsKeys : LiveData<List<String>> = AppDatabase.getInstance(context).searchDao().getHiddenItemKeys()
fun isHidden(item: Searchable): LiveData<Boolean> {
return AppDatabase.getInstance(context).searchDao().isHidden(item.key)
}
companion object {
private lateinit var instance: HiddenItemsRepository
fun getInstance(context: Context): HiddenItemsRepository {
if(!Companion::instance.isInitialized) instance = HiddenItemsRepository(context.applicationContext)
return instance
}
}
}
@@ -1,9 +1,10 @@
package de.mm20.launcher2.hiddenitems
import android.app.Application
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.ViewModel
class HiddenItemsViewModel(app: Application): AndroidViewModel(app) {
val hiddenItemsKeys = HiddenItemsRepository.getInstance(app).hiddenItemsKeys
class HiddenItemsViewModel(
hiddenItemsRepository: HiddenItemsRepository
): ViewModel() {
val hiddenItemsKeys = hiddenItemsRepository.hiddenItemsKeys
}
@@ -0,0 +1,10 @@
package de.mm20.launcher2.hiddenitems
import org.koin.android.ext.koin.androidContext
import org.koin.androidx.viewmodel.dsl.viewModel
import org.koin.dsl.module
val hiddenItemsModule = module {
single { HiddenItemsRepository(androidContext()) }
viewModel { HiddenItemsViewModel(get()) }
}