Cleaned up dependencies, injecting Moshi in RoomConverters

This commit is contained in:
Arty Bishop committed 2021-02-28 18:58:54 +00:00
1 parent decc24ea2a
commit 4fa2f13834
9 files changed
+37 -45

No files matched your search

-2
View File
@@ -58,8 +58,6 @@ dependencies {
implementation "com.google.dagger:hilt-android:$hilt_version" implementation "com.google.dagger:hilt-android:$hilt_version"
kapt "com.google.dagger:hilt-android-compiler:$hilt_version" kapt "com.google.dagger:hilt-android-compiler:$hilt_version"
implementation "androidx.hilt:hilt-lifecycle-viewmodel:$hilt_viewmodel_version"
kapt "androidx.hilt:hilt-compiler:$hilt_viewmodel_version"
implementation "com.squareup.retrofit2:retrofit:$retrofit_version" implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
implementation "com.squareup.retrofit2:converter-moshi:$retrofit_version" implementation "com.squareup.retrofit2:converter-moshi:$retrofit_version"
@@ -130,21 +130,21 @@ class SharedViewModel @Inject constructor(
private fun getPasses(entry: SatEntry, dateNow: Date): MutableList<SatPass> { private fun getPasses(entry: SatEntry, dateNow: Date): MutableList<SatPass> {
val gsp = prefsManager.getStationPosition() val gsp = prefsManager.getStationPosition()
val predictor = SatelliteFactory.createSatellite(entry.tle).getPredictor(gsp) val predictor = SatelliteFactory.createSatellite(entry.tle).getPredictor(gsp)
val hoursAhead = prefsManager.getPassPrefs().hoursAhead val hoursAhead = prefsManager.getHoursAhead()
val passes = predictor.getPasses(dateNow, hoursAhead, true) val passes = predictor.getPasses(dateNow, hoursAhead, true)
val passList = passes.map { SatPass(entry.tle, predictor, it) } val passList = passes.map { SatPass(entry.tle, predictor, it) }
return passList as MutableList<SatPass> return passList as MutableList<SatPass>
} }
private fun sortList(passes: MutableList<SatPass>, dateNow: Date): MutableList<SatPass> { private fun sortList(passes: MutableList<SatPass>, dateNow: Date): MutableList<SatPass> {
val hoursAhead = prefsManager.getPassPrefs().hoursAhead val hoursAhead = prefsManager.getHoursAhead()
val dateFuture = Calendar.getInstance().apply { val dateFuture = Calendar.getInstance().apply {
this.time = dateNow this.time = dateNow
this.add(Calendar.HOUR, hoursAhead) this.add(Calendar.HOUR, hoursAhead)
}.time }.time
passes.removeAll { it.pass.startTime.after(dateFuture) } passes.removeAll { it.pass.startTime.after(dateFuture) }
passes.removeAll { it.pass.endTime.before(dateNow) } passes.removeAll { it.pass.endTime.before(dateNow) }
passes.removeAll { it.pass.maxEl < prefsManager.getPassPrefs().minEl } passes.removeAll { it.pass.maxEl < prefsManager.getMinElevation() }
passes.sortBy { it.pass.startTime } passes.sortBy { it.pass.startTime }
return passes return passes
} }
@@ -1,22 +0,0 @@
/*******************************************************************************
Look4Sat. Amateur radio satellite tracker and pass predictor.
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.data
data class PassPrefs(val hoursAhead: Int, val minEl: Double)
@@ -20,6 +20,7 @@
package com.rtbishop.look4sat.di package com.rtbishop.look4sat.di
import com.rtbishop.look4sat.repo.remote.TransmittersApi import com.rtbishop.look4sat.repo.remote.TransmittersApi
import com.squareup.moshi.Moshi
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dagger.hilt.InstallIn import dagger.hilt.InstallIn
@@ -39,6 +40,12 @@ object NetworkModule {
return OkHttpClient() return OkHttpClient()
} }
@Provides
@Singleton
fun provideMoshi(): Moshi {
return Moshi.Builder().build()
}
@Provides @Provides
@Singleton @Singleton
fun getTransmittersApi(): TransmittersApi { fun getTransmittersApi(): TransmittersApi {
@@ -26,6 +26,8 @@ import com.rtbishop.look4sat.repo.local.EntriesDao
import com.rtbishop.look4sat.repo.local.SatelliteDb import com.rtbishop.look4sat.repo.local.SatelliteDb
import com.rtbishop.look4sat.repo.local.SourcesDao import com.rtbishop.look4sat.repo.local.SourcesDao
import com.rtbishop.look4sat.repo.local.TransmittersDao import com.rtbishop.look4sat.repo.local.TransmittersDao
import com.rtbishop.look4sat.utility.TypeConverters
import com.squareup.moshi.Moshi
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dagger.hilt.InstallIn import dagger.hilt.InstallIn
@@ -63,7 +65,8 @@ object RepositoryModule {
@Provides @Provides
@Singleton @Singleton
fun getSatelliteDb(@ApplicationContext context: Context): SatelliteDb { fun getSatelliteDb(@ApplicationContext context: Context, moshi: Moshi): SatelliteDb {
TypeConverters.initialize(moshi)
return Room.databaseBuilder(context, SatelliteDb::class.java, "satDb").build() return Room.databaseBuilder(context, SatelliteDb::class.java, "satDb").build()
} }
} }
@@ -25,14 +25,13 @@ import androidx.room.TypeConverters
import com.rtbishop.look4sat.data.SatEntry import com.rtbishop.look4sat.data.SatEntry
import com.rtbishop.look4sat.data.SatTrans import com.rtbishop.look4sat.data.SatTrans
import com.rtbishop.look4sat.data.TleSource import com.rtbishop.look4sat.data.TleSource
import com.rtbishop.look4sat.utility.Converters
@Database( @Database(
entities = [TleSource::class, SatEntry::class, SatTrans::class], entities = [TleSource::class, SatEntry::class, SatTrans::class],
version = 1, version = 1,
exportSchema = false exportSchema = false
) )
@TypeConverters(Converters::class) @TypeConverters(com.rtbishop.look4sat.utility.TypeConverters::class)
abstract class SatelliteDb : RoomDatabase() { abstract class SatelliteDb : RoomDatabase() {
abstract fun sourcesDao(): SourcesDao abstract fun sourcesDao(): SourcesDao
@@ -23,7 +23,6 @@ import android.content.SharedPreferences
import android.hardware.GeomagneticField import android.hardware.GeomagneticField
import androidx.core.content.edit import androidx.core.content.edit
import com.github.amsacode.predict4java.GroundStationPosition import com.github.amsacode.predict4java.GroundStationPosition
import com.rtbishop.look4sat.data.PassPrefs
import javax.inject.Inject import javax.inject.Inject
class PrefsManager @Inject constructor(val preferences: SharedPreferences) { class PrefsManager @Inject constructor(val preferences: SharedPreferences) {
@@ -40,13 +39,15 @@ class PrefsManager @Inject constructor(val preferences: SharedPreferences) {
const val keyPositionQTH = "setPositionQTH" const val keyPositionQTH = "setPositionQTH"
const val keyIsFirstLaunch = "shouldShowSplash" const val keyIsFirstLaunch = "shouldShowSplash"
} }
fun getPassPrefs(): PassPrefs { fun getHoursAhead(): Int {
val hoursAhead = preferences.getInt(keyHoursAhead, 8) return preferences.getInt(keyHoursAhead, 8)
val minEl = preferences.getInt(keyMinElevation, 16).toDouble()
return PassPrefs(hoursAhead, minEl)
} }
fun getMinElevation(): Double {
return preferences.getInt(keyMinElevation, 16).toDouble()
}
fun getStationPosition(): GroundStationPosition { fun getStationPosition(): GroundStationPosition {
val defaultGSP = "0.0" val defaultGSP = "0.0"
val lat = preferences.getString(keyLatitude, defaultGSP)!!.toDouble() val lat = preferences.getString(keyLatitude, defaultGSP)!!.toDouble()
@@ -21,19 +21,26 @@ package com.rtbishop.look4sat.utility
import androidx.room.TypeConverter import androidx.room.TypeConverter
import com.github.amsacode.predict4java.TLE import com.github.amsacode.predict4java.TLE
import com.squareup.moshi.JsonAdapter
import com.squareup.moshi.Moshi import com.squareup.moshi.Moshi
class Converters { object TypeConverters {
private val jsonConverter = Moshi.Builder().build()
private val jsonAdapter = jsonConverter.adapter(TLE::class.java) private lateinit var tleAdapter: JsonAdapter<TLE>
fun initialize(moshi: Moshi) {
tleAdapter = moshi.adapter(TLE::class.java)
}
@JvmStatic
@TypeConverter @TypeConverter
fun tleToString(tle: TLE): String { fun tleToString(tle: TLE): String {
return jsonAdapter.toJson(tle) return tleAdapter.toJson(tle)
} }
@JvmStatic
@TypeConverter @TypeConverter
fun tleFromString(string: String): TLE? { fun tleFromString(string: String): TLE? {
return jsonAdapter.fromJson(string) return tleAdapter.fromJson(string)
} }
} }
-1
View File
@@ -9,7 +9,6 @@ buildscript {
preference_version = '1.1.1' preference_version = '1.1.1'
room_version = '2.2.6' room_version = '2.2.6'
hilt_version = '2.33-beta' hilt_version = '2.33-beta'
hilt_viewmodel_version = '1.0.0-alpha03'
retrofit_version = '2.9.0' retrofit_version = '2.9.0'
predict4java_version = '1.3.1' predict4java_version = '1.3.1'
osmdroid_version = '6.1.10' osmdroid_version = '6.1.10'