diff --git a/app/src/main/java/com/rtbishop/look4sat/repository/remoteData/SatelliteService.kt b/app/src/main/java/com/rtbishop/look4sat/data/api/SatelliteService.kt
similarity index 86%
rename from app/src/main/java/com/rtbishop/look4sat/repository/remoteData/SatelliteService.kt
rename to app/src/main/java/com/rtbishop/look4sat/data/api/SatelliteService.kt
index 6334e400..3d11217e 100644
--- a/app/src/main/java/com/rtbishop/look4sat/repository/remoteData/SatelliteService.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/data/api/SatelliteService.kt
@@ -15,9 +15,9 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.repository.remoteData
+package com.rtbishop.look4sat.data.api
-import com.rtbishop.look4sat.data.SatTrans
+import com.rtbishop.look4sat.data.model.SatTrans
import okhttp3.ResponseBody
import retrofit2.Response
import retrofit2.http.GET
@@ -25,10 +25,10 @@ import retrofit2.http.Streaming
import retrofit2.http.Url
interface SatelliteService {
-
+
@Streaming
@GET
- suspend fun fetchFile(@Url fileUrl: String): Response
+ suspend fun fetchFileByUrl(@Url url: String): Response
@GET("transmitters/")
suspend fun fetchTransmitters(): List
diff --git a/app/src/main/java/com/rtbishop/look4sat/repository/localData/RoomConverters.kt b/app/src/main/java/com/rtbishop/look4sat/data/database/RoomConverters.kt
similarity index 97%
rename from app/src/main/java/com/rtbishop/look4sat/repository/localData/RoomConverters.kt
rename to app/src/main/java/com/rtbishop/look4sat/data/database/RoomConverters.kt
index b4857866..5528a062 100644
--- a/app/src/main/java/com/rtbishop/look4sat/repository/localData/RoomConverters.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/data/database/RoomConverters.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.repository.localData
+package com.rtbishop.look4sat.data.database
import androidx.room.TypeConverter
import com.github.amsacode.predict4java.Satellite
diff --git a/app/src/main/java/com/rtbishop/look4sat/repository/localData/SatelliteDao.kt b/app/src/main/java/com/rtbishop/look4sat/data/database/SatelliteDao.kt
similarity index 61%
rename from app/src/main/java/com/rtbishop/look4sat/repository/localData/SatelliteDao.kt
rename to app/src/main/java/com/rtbishop/look4sat/data/database/SatelliteDao.kt
index 4616627c..acc2e52d 100644
--- a/app/src/main/java/com/rtbishop/look4sat/repository/localData/SatelliteDao.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/data/database/SatelliteDao.kt
@@ -15,26 +15,22 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.repository.localData
+package com.rtbishop.look4sat.data.database
import androidx.room.*
import com.github.amsacode.predict4java.Satellite
-import com.rtbishop.look4sat.data.SatEntry
-import com.rtbishop.look4sat.data.SatItem
-import com.rtbishop.look4sat.data.SatTrans
+import com.rtbishop.look4sat.data.model.SatEntry
+import com.rtbishop.look4sat.data.model.SatItem
+import com.rtbishop.look4sat.data.model.SatTrans
import kotlinx.coroutines.flow.Flow
@Dao
interface SatelliteDao {
- @Query("SELECT * FROM entries ORDER BY name ASC")
- fun getEntries(): Flow>
+ // Query
@Query("SELECT catNum, name, isSelected FROM entries ORDER BY name ASC")
- fun getSatItems(): Flow>
-
- @Insert(onConflict = OnConflictStrategy.REPLACE)
- suspend fun insertEntries(entries: List)
+ fun getAllSatItems(): Flow>
@Query("SELECT tle FROM entries WHERE isSelected = 1")
suspend fun getSelectedSatellites(): List
@@ -42,21 +38,47 @@ interface SatelliteDao {
@Query("SELECT catNum FROM entries WHERE isSelected = 1")
suspend fun getSelectedCatNums(): List
- @Transaction
- suspend fun updateEntriesSelection(catNums: List) {
- clearSelection()
- catNums.forEach { catNum -> updateSelection(catNum) }
- }
+ @Query("SELECT * FROM transmitters WHERE isAlive = 1 ORDER BY mode ASC")
+ fun getAllTransmitters(): Flow>
- @Query("UPDATE entries SET isSelected = 0")
- suspend fun clearSelection()
+ @Query("SELECT * FROM transmitters WHERE isAlive = 1 and catNum = :catNum")
+ fun getTransmittersByCatNum(catNum: Int): Flow>
- @Query("UPDATE entries SET isSelected = 1 WHERE catNum = :catNum")
- suspend fun updateSelection(catNum: Int)
+ // Insert
+
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ suspend fun insertEntries(entries: List)
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertTransmitters(transmitters: List)
- @Query("SELECT * FROM transmitters WHERE isAlive = 1 and catNum = :catNum")
- fun getTransmittersForSat(catNum: Int): Flow>
+ // Update
+
+ @Query("UPDATE entries SET isSelected = 0")
+ suspend fun clearSelection()
+
+ @Query("UPDATE entries SET isSelected = :isSelected WHERE catNum = :catNum")
+ suspend fun updateSelectionByCatNum(catNum: Int, isSelected: Boolean)
+
+ @Transaction
+ suspend fun updateSelection(catNums: List) {
+ clearSelection()
+ catNums.forEach { catNum ->
+ updateSelectionByCatNum(catNum, true)
+ }
+ }
+
+ // Delete
+
+ @Query("DELETE from entries")
+ suspend fun deleteEntries()
+
+ @Query("DELETE from transmitters")
+ suspend fun deleteTransmitters()
+
+ @Transaction
+ suspend fun deleteAllData() {
+ deleteEntries()
+ deleteTransmitters()
+ }
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/repository/localData/SatelliteDb.kt b/app/src/main/java/com/rtbishop/look4sat/data/database/SatelliteDb.kt
similarity index 90%
rename from app/src/main/java/com/rtbishop/look4sat/repository/localData/SatelliteDb.kt
rename to app/src/main/java/com/rtbishop/look4sat/data/database/SatelliteDb.kt
index 33446ade..75162780 100644
--- a/app/src/main/java/com/rtbishop/look4sat/repository/localData/SatelliteDb.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/data/database/SatelliteDb.kt
@@ -15,15 +15,15 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.repository.localData
+package com.rtbishop.look4sat.data.database
import androidx.room.Database
import androidx.room.RoomDatabase
import androidx.room.TypeConverters
import androidx.room.migration.Migration
import androidx.sqlite.db.SupportSQLiteDatabase
-import com.rtbishop.look4sat.data.SatEntry
-import com.rtbishop.look4sat.data.SatTrans
+import com.rtbishop.look4sat.data.model.SatEntry
+import com.rtbishop.look4sat.data.model.SatTrans
@Database(entities = [SatEntry::class, SatTrans::class], version = 2)
@TypeConverters(RoomConverters::class)
diff --git a/app/src/main/java/com/rtbishop/look4sat/data/Result.kt b/app/src/main/java/com/rtbishop/look4sat/data/model/Result.kt
similarity index 95%
rename from app/src/main/java/com/rtbishop/look4sat/data/Result.kt
rename to app/src/main/java/com/rtbishop/look4sat/data/model/Result.kt
index 8bd02d00..9a849352 100644
--- a/app/src/main/java/com/rtbishop/look4sat/data/Result.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/data/model/Result.kt
@@ -15,10 +15,10 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.data
+package com.rtbishop.look4sat.data.model
sealed class Result {
data class Success(val data: T) : Result()
data class Error(val exception: Throwable) : Result()
object InProgress : Result()
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/rtbishop/look4sat/data/SatEntry.kt b/app/src/main/java/com/rtbishop/look4sat/data/model/SatEntry.kt
similarity index 96%
rename from app/src/main/java/com/rtbishop/look4sat/data/SatEntry.kt
rename to app/src/main/java/com/rtbishop/look4sat/data/model/SatEntry.kt
index cf803d70..60734a6a 100644
--- a/app/src/main/java/com/rtbishop/look4sat/data/SatEntry.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/data/model/SatEntry.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.data
+package com.rtbishop.look4sat.data.model
import androidx.room.Entity
import androidx.room.PrimaryKey
@@ -27,4 +27,4 @@ class SatEntry(
var isSelected: Boolean = false,
@PrimaryKey val catNum: Int = tle.catnum,
val name: String = tle.name
-)
\ No newline at end of file
+)
diff --git a/app/src/main/java/com/rtbishop/look4sat/data/SatItem.kt b/app/src/main/java/com/rtbishop/look4sat/data/model/SatItem.kt
similarity index 94%
rename from app/src/main/java/com/rtbishop/look4sat/data/SatItem.kt
rename to app/src/main/java/com/rtbishop/look4sat/data/model/SatItem.kt
index 0f25124e..687652e6 100644
--- a/app/src/main/java/com/rtbishop/look4sat/data/SatItem.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/data/model/SatItem.kt
@@ -15,6 +15,6 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.data
+package com.rtbishop.look4sat.data.model
-class SatItem(val catNum: Int, val name: String, var isSelected: Boolean)
\ No newline at end of file
+class SatItem(val catNum: Int, val name: String, var isSelected: Boolean)
diff --git a/app/src/main/java/com/rtbishop/look4sat/data/SatPass.kt b/app/src/main/java/com/rtbishop/look4sat/data/model/SatPass.kt
similarity index 96%
rename from app/src/main/java/com/rtbishop/look4sat/data/SatPass.kt
rename to app/src/main/java/com/rtbishop/look4sat/data/model/SatPass.kt
index 406a35c4..0e2e2f30 100644
--- a/app/src/main/java/com/rtbishop/look4sat/data/SatPass.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/data/model/SatPass.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.data
+package com.rtbishop.look4sat.data.model
import com.github.amsacode.predict4java.SatPassTime
import com.github.amsacode.predict4java.TLE
diff --git a/app/src/main/java/com/rtbishop/look4sat/data/SatTrans.kt b/app/src/main/java/com/rtbishop/look4sat/data/model/SatTrans.kt
similarity index 97%
rename from app/src/main/java/com/rtbishop/look4sat/data/SatTrans.kt
rename to app/src/main/java/com/rtbishop/look4sat/data/model/SatTrans.kt
index bd360793..b8a330ed 100644
--- a/app/src/main/java/com/rtbishop/look4sat/data/SatTrans.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/data/model/SatTrans.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.data
+package com.rtbishop.look4sat.data.model
import androidx.room.Entity
import androidx.room.PrimaryKey
diff --git a/app/src/main/java/com/rtbishop/look4sat/data/SelectedSat.kt b/app/src/main/java/com/rtbishop/look4sat/data/model/SelectedSat.kt
similarity index 96%
rename from app/src/main/java/com/rtbishop/look4sat/data/SelectedSat.kt
rename to app/src/main/java/com/rtbishop/look4sat/data/model/SelectedSat.kt
index 19eba502..e015d680 100644
--- a/app/src/main/java/com/rtbishop/look4sat/data/SelectedSat.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/data/model/SelectedSat.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.data
+package com.rtbishop.look4sat.data.model
import com.github.amsacode.predict4java.Position
import org.osmdroid.views.overlay.Overlay
@@ -32,4 +32,4 @@ class SelectedSat(
val coverage: Double,
val footprint: Overlay,
val groundTrack: Overlay
-)
\ No newline at end of file
+)
diff --git a/app/src/main/java/com/rtbishop/look4sat/data/TleSource.kt b/app/src/main/java/com/rtbishop/look4sat/data/model/TleSource.kt
similarity index 90%
rename from app/src/main/java/com/rtbishop/look4sat/data/TleSource.kt
rename to app/src/main/java/com/rtbishop/look4sat/data/model/TleSource.kt
index 0e81cf9e..58c261df 100644
--- a/app/src/main/java/com/rtbishop/look4sat/data/TleSource.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/data/model/TleSource.kt
@@ -15,6 +15,6 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.data
+package com.rtbishop.look4sat.data.model
-class TleSource(var url: String = String())
\ No newline at end of file
+class TleSource(var url: String = String())
diff --git a/app/src/main/java/com/rtbishop/look4sat/repository/PrefsRepo.kt b/app/src/main/java/com/rtbishop/look4sat/data/repository/PrefsRepo.kt
similarity index 84%
rename from app/src/main/java/com/rtbishop/look4sat/repository/PrefsRepo.kt
rename to app/src/main/java/com/rtbishop/look4sat/data/repository/PrefsRepo.kt
index d8b89c74..4a435723 100644
--- a/app/src/main/java/com/rtbishop/look4sat/repository/PrefsRepo.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/data/repository/PrefsRepo.kt
@@ -15,13 +15,30 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.repository
+/*
+ * Look4Sat. Amateur radio satellite tracker and pass predictor.
+ * Copyright (C) 2019-2021 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 3 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, see .
+ */
+package com.rtbishop.look4sat.data.repository
import android.content.SharedPreferences
import android.hardware.GeomagneticField
import androidx.core.content.edit
import com.github.amsacode.predict4java.GroundStationPosition
-import com.rtbishop.look4sat.data.TleSource
+import com.rtbishop.look4sat.data.model.TleSource
import com.squareup.moshi.Moshi
import com.squareup.moshi.Types
import javax.inject.Inject
diff --git a/app/src/main/java/com/rtbishop/look4sat/repository/SatelliteRepo.kt b/app/src/main/java/com/rtbishop/look4sat/data/repository/SatelliteRepo.kt
similarity index 82%
rename from app/src/main/java/com/rtbishop/look4sat/repository/SatelliteRepo.kt
rename to app/src/main/java/com/rtbishop/look4sat/data/repository/SatelliteRepo.kt
index fd596f88..592c7058 100644
--- a/app/src/main/java/com/rtbishop/look4sat/repository/SatelliteRepo.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/data/repository/SatelliteRepo.kt
@@ -15,18 +15,18 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.repository
+package com.rtbishop.look4sat.data.repository
import android.content.ContentResolver
import android.net.Uri
import com.github.amsacode.predict4java.Satellite
import com.github.amsacode.predict4java.TLE
-import com.rtbishop.look4sat.data.SatEntry
-import com.rtbishop.look4sat.data.SatTrans
-import com.rtbishop.look4sat.data.TleSource
+import com.rtbishop.look4sat.data.model.SatEntry
+import com.rtbishop.look4sat.data.model.SatTrans
+import com.rtbishop.look4sat.data.model.TleSource
import com.rtbishop.look4sat.di.IoDispatcher
-import com.rtbishop.look4sat.repository.localData.SatelliteDao
-import com.rtbishop.look4sat.repository.remoteData.SatelliteService
+import com.rtbishop.look4sat.data.database.SatelliteDao
+import com.rtbishop.look4sat.data.api.SatelliteService
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.flow.Flow
@@ -45,10 +45,10 @@ class SatelliteRepo @Inject constructor(
@IoDispatcher private val ioDispatcher: CoroutineDispatcher
) {
- val satDataFlow = satelliteDao.getSatItems()
+ val satDataFlow = satelliteDao.getAllSatItems()
fun getTransmittersForSat(catNum: Int): Flow> {
- return satelliteDao.getTransmittersForSat(catNum)
+ return satelliteDao.getTransmittersByCatNum(catNum)
}
suspend fun getSelectedSatellites(): List {
@@ -56,7 +56,7 @@ class SatelliteRepo @Inject constructor(
}
suspend fun updateEntriesSelection(catNums: List) {
- satelliteDao.updateEntriesSelection(catNums)
+ satelliteDao.updateSelection(catNums)
}
suspend fun updateSatDataFromFile(uri: Uri) {
@@ -91,13 +91,14 @@ class SatelliteRepo @Inject constructor(
private suspend fun getStreamsForSources(sources: List): List {
val streams = mutableListOf()
sources.forEach { tleSource ->
- satelliteService.fetchFile(tleSource.url).body()?.byteStream()?.let { inputStream ->
- if (tleSource.url.contains(".zip", true)) {
- streams.add(getZipStream(inputStream))
- } else {
- streams.add(inputStream)
+ satelliteService.fetchFileByUrl(tleSource.url).body()?.byteStream()
+ ?.let { inputStream ->
+ if (tleSource.url.contains(".zip", true)) {
+ streams.add(getZipStream(inputStream))
+ } else {
+ streams.add(inputStream)
+ }
}
- }
}
return streams
}
@@ -127,6 +128,6 @@ class SatelliteRepo @Inject constructor(
private suspend fun insertEntriesAndRestoreSelection(entries: List) {
val selectedCatNums = satelliteDao.getSelectedCatNums()
satelliteDao.insertEntries(entries)
- satelliteDao.updateEntriesSelection(selectedCatNums)
+ satelliteDao.updateSelection(selectedCatNums)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/rtbishop/look4sat/di/CoroutinesModule.kt b/app/src/main/java/com/rtbishop/look4sat/di/CoroutinesModule.kt
index 926c6b4b..fd86bf08 100644
--- a/app/src/main/java/com/rtbishop/look4sat/di/CoroutinesModule.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/di/CoroutinesModule.kt
@@ -22,19 +22,13 @@ import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import kotlinx.coroutines.CoroutineDispatcher
-import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.SupervisorJob
import javax.inject.Qualifier
@Module
@InstallIn(SingletonComponent::class)
object CoroutinesModule {
- @Provides
- @ExternalScope
- fun provideExternalScope(): CoroutineScope = CoroutineScope(SupervisorJob())
-
@Provides
@DefaultDispatcher
fun provideDefaultDispatcher(): CoroutineDispatcher = Dispatchers.Default
@@ -48,10 +42,6 @@ object CoroutinesModule {
fun provideMainDispatcher(): CoroutineDispatcher = Dispatchers.Main
}
-@Qualifier
-@Retention(AnnotationRetention.BINARY)
-annotation class ExternalScope
-
@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class DefaultDispatcher
@@ -62,4 +52,4 @@ annotation class IoDispatcher
@Qualifier
@Retention(AnnotationRetention.BINARY)
-annotation class MainDispatcher
\ No newline at end of file
+annotation class MainDispatcher
diff --git a/app/src/main/java/com/rtbishop/look4sat/di/NetworkModule.kt b/app/src/main/java/com/rtbishop/look4sat/di/NetworkModule.kt
index e2acf5bb..e4340bdb 100644
--- a/app/src/main/java/com/rtbishop/look4sat/di/NetworkModule.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/di/NetworkModule.kt
@@ -17,7 +17,7 @@
*/
package com.rtbishop.look4sat.di
-import com.rtbishop.look4sat.repository.remoteData.SatelliteService
+import com.rtbishop.look4sat.data.api.SatelliteService
import com.squareup.moshi.Moshi
import dagger.Module
import dagger.Provides
diff --git a/app/src/main/java/com/rtbishop/look4sat/di/RepositoryModule.kt b/app/src/main/java/com/rtbishop/look4sat/di/RepositoryModule.kt
index 4296ca32..73191661 100644
--- a/app/src/main/java/com/rtbishop/look4sat/di/RepositoryModule.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/di/RepositoryModule.kt
@@ -19,10 +19,10 @@ package com.rtbishop.look4sat.di
import android.content.Context
import androidx.room.Room
-import com.rtbishop.look4sat.repository.localData.MIGRATION_1_2
-import com.rtbishop.look4sat.repository.localData.RoomConverters
-import com.rtbishop.look4sat.repository.localData.SatelliteDao
-import com.rtbishop.look4sat.repository.localData.SatelliteDb
+import com.rtbishop.look4sat.data.database.MIGRATION_1_2
+import com.rtbishop.look4sat.data.database.RoomConverters
+import com.rtbishop.look4sat.data.database.SatelliteDao
+import com.rtbishop.look4sat.data.database.SatelliteDb
import com.squareup.moshi.Moshi
import dagger.Module
import dagger.Provides
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt b/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt
index 4078a0c2..22335213 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt
@@ -23,7 +23,7 @@ import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.setupWithNavController
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.databinding.ActivityMainBinding
-import com.rtbishop.look4sat.repository.PrefsRepo
+import com.rtbishop.look4sat.data.repository.PrefsRepo
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt
index 8d44adb9..50423beb 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt
@@ -20,12 +20,12 @@ package com.rtbishop.look4sat.ui
import android.net.Uri
import androidx.lifecycle.*
import com.github.amsacode.predict4java.Satellite
-import com.rtbishop.look4sat.data.Result
-import com.rtbishop.look4sat.data.SatItem
-import com.rtbishop.look4sat.data.SatPass
-import com.rtbishop.look4sat.data.TleSource
-import com.rtbishop.look4sat.repository.PrefsRepo
-import com.rtbishop.look4sat.repository.SatelliteRepo
+import com.rtbishop.look4sat.data.model.Result
+import com.rtbishop.look4sat.data.model.SatItem
+import com.rtbishop.look4sat.data.model.SatPass
+import com.rtbishop.look4sat.data.model.TleSource
+import com.rtbishop.look4sat.data.repository.PrefsRepo
+import com.rtbishop.look4sat.data.repository.SatelliteRepo
import com.rtbishop.look4sat.utility.getPredictor
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesAdapter.kt
index 938ca831..53771020 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesAdapter.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesAdapter.kt
@@ -21,7 +21,7 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.SearchView
import androidx.recyclerview.widget.RecyclerView
-import com.rtbishop.look4sat.data.SatItem
+import com.rtbishop.look4sat.data.model.SatItem
import com.rtbishop.look4sat.databinding.ItemSatEntryBinding
import java.util.*
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesFragment.kt
index 5f3bc20e..a9a9a81c 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesFragment.kt
@@ -27,7 +27,7 @@ import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.snackbar.Snackbar
import com.rtbishop.look4sat.R
-import com.rtbishop.look4sat.data.Result
+import com.rtbishop.look4sat.data.model.Result
import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
import com.rtbishop.look4sat.ui.SharedViewModel
import com.rtbishop.look4sat.utility.RecyclerDivider
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapFragment.kt
index db1d28e2..47ad5d01 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapFragment.kt
@@ -28,13 +28,14 @@ import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
import com.github.amsacode.predict4java.Position
import com.rtbishop.look4sat.R
-import com.rtbishop.look4sat.data.Result
-import com.rtbishop.look4sat.data.SatPass
-import com.rtbishop.look4sat.data.SelectedSat
+import com.rtbishop.look4sat.data.model.Result
+import com.rtbishop.look4sat.data.model.SatPass
+import com.rtbishop.look4sat.data.model.SelectedSat
import com.rtbishop.look4sat.databinding.FragmentMapBinding
import com.rtbishop.look4sat.ui.SharedViewModel
-import com.rtbishop.look4sat.repository.PrefsRepo
+import com.rtbishop.look4sat.data.repository.PrefsRepo
import dagger.hilt.android.AndroidEntryPoint
+import kotlinx.coroutines.FlowPreview
import org.osmdroid.config.Configuration
import org.osmdroid.tileprovider.tilesource.ITileSource
import org.osmdroid.tileprovider.tilesource.TileSourcePolicy
@@ -47,6 +48,7 @@ import timber.log.Timber
import java.util.*
import javax.inject.Inject
+@FlowPreview
@AndroidEntryPoint
class MapFragment : Fragment(R.layout.fragment_map) {
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapViewModel.kt
index 058ca4ab..73637d62 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapViewModel.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapViewModel.kt
@@ -25,9 +25,9 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.github.amsacode.predict4java.Position
import com.github.amsacode.predict4java.SatPos
-import com.rtbishop.look4sat.data.SatPass
-import com.rtbishop.look4sat.data.SelectedSat
-import com.rtbishop.look4sat.repository.PrefsRepo
+import com.rtbishop.look4sat.data.model.SatPass
+import com.rtbishop.look4sat.data.model.SelectedSat
+import com.rtbishop.look4sat.data.repository.PrefsRepo
import com.rtbishop.look4sat.utility.QthConverter
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesAdapter.kt
index 8e8cbbbc..9ac7af06 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesAdapter.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesAdapter.kt
@@ -24,7 +24,7 @@ import androidx.core.os.bundleOf
import androidx.navigation.findNavController
import androidx.recyclerview.widget.RecyclerView
import com.rtbishop.look4sat.R
-import com.rtbishop.look4sat.data.SatPass
+import com.rtbishop.look4sat.data.model.SatPass
import com.rtbishop.look4sat.databinding.ItemPassGeoBinding
import com.rtbishop.look4sat.databinding.ItemPassLeoBinding
import com.rtbishop.look4sat.utility.navigateSafe
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesFragment.kt
index 45a595d2..5690f43d 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesFragment.kt
@@ -24,17 +24,19 @@ import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.SimpleItemAnimator
import com.rtbishop.look4sat.R
-import com.rtbishop.look4sat.data.Result
-import com.rtbishop.look4sat.data.SatPass
+import com.rtbishop.look4sat.data.model.Result
+import com.rtbishop.look4sat.data.model.SatPass
import com.rtbishop.look4sat.databinding.FragmentPassesBinding
import com.rtbishop.look4sat.ui.SharedViewModel
-import com.rtbishop.look4sat.repository.PrefsRepo
+import com.rtbishop.look4sat.data.repository.PrefsRepo
import com.rtbishop.look4sat.utility.RecyclerDivider
import com.rtbishop.look4sat.utility.formatForTimer
import dagger.hilt.android.AndroidEntryPoint
+import kotlinx.coroutines.FlowPreview
import java.util.*
import javax.inject.Inject
+@FlowPreview
@AndroidEntryPoint
class PassesFragment : Fragment(R.layout.fragment_passes) {
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarFragment.kt
index 97773f41..05bcecbb 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarFragment.kt
@@ -30,18 +30,20 @@ import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.SimpleItemAnimator
import com.rtbishop.look4sat.R
-import com.rtbishop.look4sat.data.Result
-import com.rtbishop.look4sat.data.SatPass
+import com.rtbishop.look4sat.data.model.Result
+import com.rtbishop.look4sat.data.model.SatPass
import com.rtbishop.look4sat.databinding.FragmentPolarBinding
-import com.rtbishop.look4sat.repository.PrefsRepo
+import com.rtbishop.look4sat.data.repository.PrefsRepo
import com.rtbishop.look4sat.ui.SharedViewModel
import com.rtbishop.look4sat.utility.RecyclerDivider
import com.rtbishop.look4sat.utility.formatForTimer
import dagger.hilt.android.AndroidEntryPoint
+import kotlinx.coroutines.FlowPreview
import java.util.*
import javax.inject.Inject
import kotlin.math.round
+@FlowPreview
@AndroidEntryPoint
class PolarFragment : Fragment(R.layout.fragment_polar), SensorEventListener {
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarView.kt b/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarView.kt
index a45bcaed..9339e50e 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarView.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarView.kt
@@ -25,7 +25,7 @@ import android.graphics.Path
import android.view.View
import androidx.core.content.ContextCompat
import com.rtbishop.look4sat.R
-import com.rtbishop.look4sat.data.SatPass
+import com.rtbishop.look4sat.data.model.SatPass
import java.util.*
import kotlin.math.cos
import kotlin.math.sin
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/TransAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/TransAdapter.kt
index 3cc9fbc9..3df37cfb 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/TransAdapter.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/TransAdapter.kt
@@ -22,8 +22,8 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.rtbishop.look4sat.R
-import com.rtbishop.look4sat.data.SatPass
-import com.rtbishop.look4sat.data.SatTrans
+import com.rtbishop.look4sat.data.model.SatPass
+import com.rtbishop.look4sat.data.model.SatTrans
import com.rtbishop.look4sat.databinding.ItemTransBinding
import java.util.*
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/prefsScreen/PrefsFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/prefsScreen/PrefsFragment.kt
index 3310d3e0..952410cf 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/prefsScreen/PrefsFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/prefsScreen/PrefsFragment.kt
@@ -28,7 +28,7 @@ import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import com.google.android.material.snackbar.Snackbar
import com.rtbishop.look4sat.R
-import com.rtbishop.look4sat.repository.PrefsRepo
+import com.rtbishop.look4sat.data.repository.PrefsRepo
import com.rtbishop.look4sat.utility.QthConverter
import com.rtbishop.look4sat.utility.round
import dagger.hilt.android.AndroidEntryPoint
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/sourcesDialog/SourcesAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/ui/sourcesDialog/SourcesAdapter.kt
index 2a24cba0..af0ffe01 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/sourcesDialog/SourcesAdapter.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/sourcesDialog/SourcesAdapter.kt
@@ -21,7 +21,7 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.widget.doOnTextChanged
import androidx.recyclerview.widget.RecyclerView
-import com.rtbishop.look4sat.data.TleSource
+import com.rtbishop.look4sat.data.model.TleSource
import com.rtbishop.look4sat.databinding.ItemTleSourceBinding
class SourcesAdapter : RecyclerView.Adapter() {