Switched from Dagger to android Hilt DI

pull/49/head
Arty Bishop 2020-10-05 23:09:30 +01:00
rodzic 4e0aa1481b
commit 1c7ce3f726
22 zmienionych plików z 145 dodań i 232 usunięć

Wyświetl plik

@ -17,10 +17,11 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: "com.android.application"
apply plugin: "kotlin-android"
apply plugin: "kotlin-kapt"
apply plugin: "kotlin-android-extensions"
apply plugin: "dagger.hilt.android.plugin"
apply plugin: "androidx.navigation.safeargs.kotlin"
android {
@ -77,8 +78,10 @@ dependencies {
implementation "androidx.room:room-ktx:$room_version"
kapt "androidx.room:room-compiler:$room_version"
implementation "com.google.dagger:dagger:$dagger_version"
kapt "com.google.dagger:dagger-compiler:$dagger_version"
implementation "androidx.hilt:hilt-lifecycle-viewmodel:$hilt_viewmodel_version"
implementation "com.google.dagger:hilt-android:$hilt_version"
kapt "com.google.dagger:hilt-android-compiler:$hilt_version"
kapt "androidx.hilt:hilt-compiler:$hilt_viewmodel_version"
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
implementation "com.squareup.retrofit2:converter-moshi:$retrofit_version"

Wyświetl plik

@ -33,7 +33,7 @@
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".ui.MainActivity"
android:name=".ui.activities.MainActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

Wyświetl plik

@ -20,12 +20,7 @@
package com.rtbishop.look4sat
import android.app.Application
import com.rtbishop.look4sat.dagger.AppComponent
import com.rtbishop.look4sat.dagger.DaggerAppComponent
import dagger.hilt.android.HiltAndroidApp
class Look4SatApp : Application() {
val appComponent: AppComponent by lazy {
DaggerAppComponent.factory().create(applicationContext)
}
}
@HiltAndroidApp
class Look4SatApp : Application()

Wyświetl plik

@ -17,13 +17,12 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.rtbishop.look4sat.ui
package com.rtbishop.look4sat
import android.net.Uri
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.hilt.Assisted
import androidx.hilt.lifecycle.ViewModelInject
import androidx.lifecycle.*
import com.github.amsacode.predict4java.GroundStationPosition
import com.rtbishop.look4sat.data.Result
import com.rtbishop.look4sat.data.SatEntry
@ -35,13 +34,13 @@ import com.rtbishop.look4sat.utility.PrefsManager
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.util.*
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class SharedViewModel @Inject constructor(
class SharedViewModel @ViewModelInject constructor(
private val prefsManager: PrefsManager,
private val repository: Repository
private val repository: Repository,
@Assisted private val savedStateHandle: SavedStateHandle
) : ViewModel() {
private val _passes = MutableLiveData<Result<MutableList<SatPass>>>()

Wyświetl plik

@ -1,50 +0,0 @@
/*
* Look4Sat. Amateur radio and weather satellite tracker and passes predictor for Android.
* Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.rtbishop.look4sat.dagger
import android.content.Context
import com.rtbishop.look4sat.dagger.modules.*
import com.rtbishop.look4sat.ui.MainActivity
import com.rtbishop.look4sat.ui.fragments.EntriesFragment
import com.rtbishop.look4sat.ui.fragments.MapFragment
import com.rtbishop.look4sat.ui.fragments.PassesFragment
import com.rtbishop.look4sat.ui.fragments.PolarFragment
import dagger.BindsInstance
import dagger.Component
import javax.inject.Singleton
@Singleton
@Component(
modules = [NetworkModule::class, PersistenceModule::class,
RepoModule::class, UtilityModule::class, ViewModelModule::class]
)
interface AppComponent {
@Component.Factory
interface Factory {
fun create(@BindsInstance context: Context): AppComponent
}
fun inject(mainActivity: MainActivity)
fun inject(entriesFragment: EntriesFragment)
fun inject(passesFragment: PassesFragment)
fun inject(polarFragment: PolarFragment)
fun inject(mapFragment: MapFragment)
}

Wyświetl plik

@ -1,25 +0,0 @@
package com.rtbishop.look4sat.dagger
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import javax.inject.Inject
import javax.inject.Provider
import javax.inject.Singleton
@Singleton
class ViewModelFactory @Inject constructor(
private val creators: Map<Class<out ViewModel>,
@JvmSuppressWildcards Provider<ViewModel>>
) : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
val creator = creators[modelClass] ?: creators.entries.firstOrNull {
modelClass.isAssignableFrom(it.key)
}?.value ?: throw IllegalArgumentException("Unsupported ViewModel class: $modelClass")
try {
@Suppress("UNCHECKED_CAST")
return creator.get() as T
} catch (e: Exception) {
throw RuntimeException(e)
}
}
}

Wyświetl plik

@ -1,14 +0,0 @@
package com.rtbishop.look4sat.dagger
import androidx.lifecycle.ViewModel
import dagger.MapKey
import kotlin.reflect.KClass
@Target(
AnnotationTarget.FUNCTION,
AnnotationTarget.PROPERTY_GETTER,
AnnotationTarget.PROPERTY_SETTER
)
@Retention(AnnotationRetention.RUNTIME)
@MapKey
annotation class ViewModelKey(val value: KClass<out ViewModel>)

Wyświetl plik

@ -1,44 +0,0 @@
package com.rtbishop.look4sat.dagger.modules
import android.content.ContentResolver
import android.content.Context
import com.rtbishop.look4sat.repo.DefaultRepository
import com.rtbishop.look4sat.repo.Repository
import com.rtbishop.look4sat.repo.local.EntriesDao
import com.rtbishop.look4sat.repo.local.SourcesDao
import com.rtbishop.look4sat.repo.local.TransmittersDao
import com.rtbishop.look4sat.repo.remote.TransmittersApi
import dagger.Module
import dagger.Provides
import okhttp3.OkHttpClient
import javax.inject.Singleton
@Module
class RepoModule {
@Singleton
@Provides
fun provideContentResolver(context: Context): ContentResolver {
return context.applicationContext.contentResolver
}
@Singleton
@Provides
fun provideDefaultRepository(
resolver: ContentResolver,
client: OkHttpClient,
transmittersApi: TransmittersApi,
entriesDao: EntriesDao,
transmittersDao: TransmittersDao,
sourcesDao: SourcesDao
): Repository {
return DefaultRepository(
resolver,
client,
transmittersApi,
entriesDao,
sourcesDao,
transmittersDao
)
}
}

Wyświetl plik

@ -1,22 +0,0 @@
package com.rtbishop.look4sat.dagger.modules
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import com.rtbishop.look4sat.dagger.ViewModelFactory
import com.rtbishop.look4sat.dagger.ViewModelKey
import com.rtbishop.look4sat.ui.SharedViewModel
import dagger.Binds
import dagger.Module
import dagger.multibindings.IntoMap
@Module
abstract class ViewModelModule {
@Binds
@IntoMap
@ViewModelKey(SharedViewModel::class)
abstract fun bindSharedViewModel(viewModel: SharedViewModel): ViewModel
@Binds
abstract fun bindViewModelFactory(factory: ViewModelFactory): ViewModelProvider.Factory
}

Wyświetl plik

@ -17,26 +17,29 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.rtbishop.look4sat.dagger.modules
package com.rtbishop.look4sat.di
import com.rtbishop.look4sat.repo.remote.TransmittersApi
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
import dagger.hilt.android.scopes.ActivityScoped
import okhttp3.OkHttpClient
import retrofit2.Retrofit
import retrofit2.converter.moshi.MoshiConverterFactory
import javax.inject.Singleton
@Module
@InstallIn(ActivityComponent::class)
class NetworkModule {
@Singleton
@ActivityScoped
@Provides
fun provideWebClient(): OkHttpClient {
return OkHttpClient()
}
@Singleton
@ActivityScoped
@Provides
fun provideTransApi(): TransmittersApi {
return Retrofit.Builder()

Wyświetl plik

@ -17,7 +17,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.rtbishop.look4sat.dagger.modules
package com.rtbishop.look4sat.di
import android.content.Context
import androidx.room.Room
@ -27,32 +27,36 @@ import com.rtbishop.look4sat.repo.local.SourcesDao
import com.rtbishop.look4sat.repo.local.TransmittersDao
import dagger.Module
import dagger.Provides
import javax.inject.Singleton
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
import dagger.hilt.android.qualifiers.ActivityContext
import dagger.hilt.android.scopes.ActivityScoped
@Module
@InstallIn(ActivityComponent::class)
class PersistenceModule {
@Singleton
@ActivityScoped
@Provides
fun provideEntriesDao(db: SatelliteDb): EntriesDao {
return db.entriesDao()
}
@Singleton
@ActivityScoped
@Provides
fun provideTransDao(db: SatelliteDb): TransmittersDao {
return db.transmittersDao()
}
@Singleton
@ActivityScoped
@Provides
fun providesSourcesDao(db: SatelliteDb): SourcesDao {
return db.sourcesDao()
}
@Singleton
@ActivityScoped
@Provides
fun provideSatDb(context: Context): SatelliteDb {
fun provideSatDb(@ActivityContext context: Context): SatelliteDb {
return Room.databaseBuilder(context, SatelliteDb::class.java, "satDb").build()
}
}

Wyświetl plik

@ -0,0 +1,67 @@
/*
* Look4Sat. Amateur radio and weather satellite tracker and passes predictor for Android.
* Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.rtbishop.look4sat.di
import android.content.ContentResolver
import android.content.Context
import com.rtbishop.look4sat.repo.DefaultRepository
import com.rtbishop.look4sat.repo.Repository
import com.rtbishop.look4sat.repo.local.EntriesDao
import com.rtbishop.look4sat.repo.local.SourcesDao
import com.rtbishop.look4sat.repo.local.TransmittersDao
import com.rtbishop.look4sat.repo.remote.TransmittersApi
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
import dagger.hilt.android.qualifiers.ActivityContext
import dagger.hilt.android.scopes.ActivityScoped
import okhttp3.OkHttpClient
@Module
@InstallIn(ActivityComponent::class)
class RepoModule {
@ActivityScoped
@Provides
fun provideContentResolver(@ActivityContext context: Context): ContentResolver {
return context.applicationContext.contentResolver
}
@ActivityScoped
@Provides
fun provideDefaultRepository(
resolver: ContentResolver,
client: OkHttpClient,
transmittersApi: TransmittersApi,
entriesDao: EntriesDao,
transmittersDao: TransmittersDao,
sourcesDao: SourcesDao
): Repository {
return DefaultRepository(
resolver,
client,
transmittersApi,
entriesDao,
sourcesDao,
transmittersDao
)
}
}

Wyświetl plik

@ -17,7 +17,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.rtbishop.look4sat.dagger.modules
package com.rtbishop.look4sat.di
import android.content.Context
import android.content.SharedPreferences
@ -26,24 +26,28 @@ import androidx.preference.PreferenceManager
import com.rtbishop.look4sat.utility.PrefsManager
import dagger.Module
import dagger.Provides
import javax.inject.Singleton
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
import dagger.hilt.android.qualifiers.ActivityContext
import dagger.hilt.android.scopes.ActivityScoped
@Module
@InstallIn(ActivityComponent::class)
class UtilityModule {
@Singleton
@ActivityScoped
@Provides
fun provideSharedPreferences(context: Context): SharedPreferences {
fun provideSharedPreferences(@ActivityContext context: Context): SharedPreferences {
return PreferenceManager.getDefaultSharedPreferences(context)
}
@Singleton
@ActivityScoped
@Provides
fun provideLocationManager(context: Context): LocationManager {
fun provideLocationManager(@ActivityContext context: Context): LocationManager {
return context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
}
@Singleton
@ActivityScoped
@Provides
fun providePrefsManager(
sharedPreferences: SharedPreferences,

Wyświetl plik

@ -1,4 +1,4 @@
package com.rtbishop.look4sat.ui
package com.rtbishop.look4sat.ui.activities
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
@ -6,7 +6,9 @@ import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.setupWithNavController
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.databinding.ActivityMainBinding
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {

Wyświetl plik

@ -10,23 +10,19 @@ import androidx.fragment.app.activityViewModels
import androidx.navigation.findNavController
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import com.rtbishop.look4sat.Look4SatApp
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.dagger.ViewModelFactory
import com.rtbishop.look4sat.SharedViewModel
import com.rtbishop.look4sat.data.SatEntry
import com.rtbishop.look4sat.data.TleSource
import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
import com.rtbishop.look4sat.ui.SharedViewModel
import com.rtbishop.look4sat.ui.adapters.EntriesAdapter
import javax.inject.Inject
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class EntriesFragment : Fragment(R.layout.fragment_entries) {
@Inject
lateinit var factory: ViewModelFactory
private lateinit var binding: FragmentEntriesBinding
private val viewModel: SharedViewModel by activityViewModels { factory }
private val viewModel: SharedViewModel by activityViewModels()
private val pickFileReqCode = 100
private val entriesAdapter = EntriesAdapter()
private var tleSources = listOf<TleSource>()
@ -34,7 +30,6 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding = FragmentEntriesBinding.bind(view)
(requireActivity().application as Look4SatApp).appComponent.inject(this)
setupComponents()
setupObservers()
}

Wyświetl plik

@ -28,7 +28,9 @@ import androidx.fragment.app.Fragment
import com.rtbishop.look4sat.BuildConfig
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.databinding.FragmentInfoBinding
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class InfoFragment : Fragment(R.layout.fragment_info) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

Wyświetl plik

@ -14,15 +14,14 @@ import androidx.fragment.app.activityViewModels
import androidx.lifecycle.lifecycleScope
import androidx.preference.PreferenceManager
import com.github.amsacode.predict4java.GroundStationPosition
import com.rtbishop.look4sat.Look4SatApp
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.dagger.ViewModelFactory
import com.rtbishop.look4sat.SharedViewModel
import com.rtbishop.look4sat.data.Result
import com.rtbishop.look4sat.data.SatItem
import com.rtbishop.look4sat.data.SatPass
import com.rtbishop.look4sat.databinding.FragmentMapBinding
import com.rtbishop.look4sat.ui.SharedViewModel
import com.rtbishop.look4sat.utility.PrefsManager
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@ -40,11 +39,9 @@ import javax.inject.Inject
import kotlin.math.pow
import kotlin.math.sqrt
@AndroidEntryPoint
class MapFragment : Fragment(R.layout.fragment_map) {
@Inject
lateinit var factory: ViewModelFactory
@Inject
lateinit var prefsManager: PrefsManager
@ -54,13 +51,12 @@ class MapFragment : Fragment(R.layout.fragment_map) {
private lateinit var footprintPaint: Paint
private lateinit var selectedPass: SatPass
private val dateNow = Date(System.currentTimeMillis())
private val viewModel: SharedViewModel by activityViewModels { factory }
private val viewModel: SharedViewModel by activityViewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding = FragmentMapBinding.bind(view)
mainActivity = requireActivity()
(mainActivity.application as Look4SatApp).appComponent.inject(this)
val prefs = PreferenceManager.getDefaultSharedPreferences(mainActivity.applicationContext)
Configuration.getInstance().load(mainActivity.applicationContext, prefs)

Wyświetl plik

@ -29,26 +29,23 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.SimpleItemAnimator
import com.rtbishop.look4sat.Look4SatApp
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.dagger.ViewModelFactory
import com.rtbishop.look4sat.SharedViewModel
import com.rtbishop.look4sat.data.Result
import com.rtbishop.look4sat.data.SatPass
import com.rtbishop.look4sat.databinding.FragmentPassesBinding
import com.rtbishop.look4sat.ui.SharedViewModel
import com.rtbishop.look4sat.ui.adapters.PassesAdapter
import com.rtbishop.look4sat.utility.PrefsManager
import com.rtbishop.look4sat.utility.Utilities
import com.rtbishop.look4sat.utility.Utilities.getRotationAnimator
import com.rtbishop.look4sat.utility.Utilities.snack
import dagger.hilt.android.AndroidEntryPoint
import java.util.*
import javax.inject.Inject
@AndroidEntryPoint
class PassesFragment : Fragment(R.layout.fragment_passes) {
@Inject
lateinit var factory: ViewModelFactory
@Inject
lateinit var prefsManager: PrefsManager
@ -56,14 +53,13 @@ class PassesFragment : Fragment(R.layout.fragment_passes) {
private lateinit var binding: FragmentPassesBinding
private lateinit var animator: ObjectAnimator
private lateinit var passesAdapter: PassesAdapter
private val viewModel: SharedViewModel by activityViewModels { factory }
private val viewModel: SharedViewModel by activityViewModels()
private var isTimerSet: Boolean = false
private var passes = mutableListOf<SatPass>()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding = FragmentPassesBinding.bind(view)
(requireActivity().application as Look4SatApp).appComponent.inject(this)
setupComponents()
setupObservers()
}

Wyświetl plik

@ -29,27 +29,24 @@ import androidx.fragment.app.activityViewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.navArgs
import androidx.recyclerview.widget.LinearLayoutManager
import com.rtbishop.look4sat.Look4SatApp
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.dagger.ViewModelFactory
import com.rtbishop.look4sat.SharedViewModel
import com.rtbishop.look4sat.data.Result
import com.rtbishop.look4sat.data.SatPass
import com.rtbishop.look4sat.databinding.FragmentPolarBinding
import com.rtbishop.look4sat.ui.SharedViewModel
import com.rtbishop.look4sat.ui.adapters.TransAdapter
import com.rtbishop.look4sat.ui.views.PolarView
import com.rtbishop.look4sat.utility.PrefsManager
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import java.util.*
import javax.inject.Inject
import kotlin.math.round
@AndroidEntryPoint
class PolarFragment : Fragment(R.layout.fragment_polar), SensorEventListener {
@Inject
lateinit var factory: ViewModelFactory
@Inject
lateinit var prefsManager: PrefsManager
@ -57,7 +54,7 @@ class PolarFragment : Fragment(R.layout.fragment_polar), SensorEventListener {
private lateinit var binding: FragmentPolarBinding
private lateinit var satPass: SatPass
private lateinit var sensorManager: SensorManager
private val viewModel: SharedViewModel by activityViewModels { factory }
private val viewModel: SharedViewModel by activityViewModels()
private val args: PolarFragmentArgs by navArgs()
private val transmitterAdapter = TransAdapter()
private var magneticDeclination = 0f
@ -67,7 +64,6 @@ class PolarFragment : Fragment(R.layout.fragment_polar), SensorEventListener {
super.onViewCreated(view, savedInstanceState)
mainActivity = requireActivity()
binding = FragmentPolarBinding.bind(view)
(mainActivity.application as Look4SatApp).appComponent.inject(this)
sensorManager = mainActivity.getSystemService(Context.SENSOR_SERVICE) as SensorManager
binding.recycler.apply {
layoutManager = LinearLayoutManager(mainActivity)

Wyświetl plik

@ -27,7 +27,9 @@ import androidx.preference.PreferenceFragmentCompat
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.utility.PrefsManager
import com.rtbishop.look4sat.utility.Utilities.snack
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class PrefsFragment : PreferenceFragmentCompat(),
SharedPreferences.OnSharedPreferenceChangeListener {

Wyświetl plik

@ -24,11 +24,13 @@ import android.os.Bundle
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatDialogFragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.rtbishop.look4sat.SharedViewModel
import com.rtbishop.look4sat.data.TleSource
import com.rtbishop.look4sat.databinding.DialogSourcesBinding
import com.rtbishop.look4sat.ui.SharedViewModel
import com.rtbishop.look4sat.ui.adapters.SourcesAdapter
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class SourcesDialog(sources: List<TleSource>, private val viewModel: SharedViewModel) :
AppCompatDialogFragment() {

Wyświetl plik

@ -28,7 +28,8 @@ buildscript {
navigation_version = '2.3.0'
lifecycle_version = '2.2.0'
room_version = '2.2.5'
dagger_version = '2.29.1'
hilt_version = '2.29.1-alpha'
hilt_viewmodel_version = '1.0.0-alpha02'
retrofit_version = '2.9.0'
openStreetMap_version = '6.1.8'
predict4java_version = '1.3.1'
@ -39,6 +40,7 @@ buildscript {
}
dependencies {
classpath "com.android.tools.build:gradle:$gradle_version"
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$gradle_plugin_version"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$navigation_version"
}