diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1c390a0a..063b8042 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -6,12 +6,12 @@
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/api/RetrofitDataSource.kt b/app/src/main/java/com/rtbishop/look4sat/framework/api/RetrofitDataSource.kt
new file mode 100644
index 00000000..3852fbce
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/api/RetrofitDataSource.kt
@@ -0,0 +1,21 @@
+package com.rtbishop.look4sat.framework.api
+
+import com.rtbishop.look4sat.data.RemoteDataSource
+import com.rtbishop.look4sat.domain.model.SatTrans
+import java.io.InputStream
+
+class RetrofitDataSource(private val satelliteService: SatelliteService) : RemoteDataSource {
+
+ override suspend fun fetchFileStream(url: String): InputStream? {
+ return satelliteService.fetchFileByUrl(url).body()?.byteStream()
+ }
+
+ override suspend fun fetchTransmitters(): List {
+ return satelliteService.fetchTransmitters().map { trans ->
+ SatTrans(
+ trans.uuid, trans.info, trans.isAlive, trans.downlink,
+ trans.uplink, trans.mode, trans.isInverted, trans.catNum
+ )
+ }
+ }
+}
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/api/SatelliteService.kt b/app/src/main/java/com/rtbishop/look4sat/framework/api/SatelliteService.kt
new file mode 100644
index 00000000..7f0fd2da
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/api/SatelliteService.kt
@@ -0,0 +1,35 @@
+/*
+ * 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.framework.api
+
+import com.rtbishop.look4sat.framework.model.SatTrans
+import okhttp3.ResponseBody
+import retrofit2.Response
+import retrofit2.http.GET
+import retrofit2.http.Streaming
+import retrofit2.http.Url
+
+interface SatelliteService {
+
+ @Streaming
+ @GET
+ suspend fun fetchFileByUrl(@Url url: String): Response
+
+ @GET("transmitters/")
+ suspend fun fetchTransmitters(): List
+}
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/db/RoomConverters.kt b/app/src/main/java/com/rtbishop/look4sat/framework/db/RoomConverters.kt
new file mode 100644
index 00000000..29948ae3
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/db/RoomConverters.kt
@@ -0,0 +1,51 @@
+/*
+ * 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.framework.db
+
+import androidx.room.TypeConverter
+import com.rtbishop.look4sat.predict4kotlin.Satellite
+import com.rtbishop.look4sat.predict4kotlin.TLE
+import com.squareup.moshi.JsonAdapter
+import com.squareup.moshi.Moshi
+
+object RoomConverters {
+
+ private lateinit var tleAdapter: JsonAdapter
+
+ fun initialize(moshi: Moshi) {
+ tleAdapter = moshi.adapter(TLE::class.java)
+ }
+
+ @JvmStatic
+ @TypeConverter
+ fun tleToString(tle: TLE): String {
+ return tleAdapter.toJson(tle)
+ }
+
+ @JvmStatic
+ @TypeConverter
+ fun tleFromString(string: String): TLE? {
+ return tleAdapter.fromJson(string)
+ }
+
+ @JvmStatic
+ @TypeConverter
+ fun satFromString(string: String): Satellite? {
+ return Satellite.createSat(tleAdapter.fromJson(string))
+ }
+}
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/db/RoomDataSource.kt b/app/src/main/java/com/rtbishop/look4sat/framework/db/RoomDataSource.kt
new file mode 100644
index 00000000..1036c718
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/db/RoomDataSource.kt
@@ -0,0 +1,41 @@
+package com.rtbishop.look4sat.framework.db
+
+import com.rtbishop.look4sat.data.LocalDataSource
+import com.rtbishop.look4sat.domain.model.SatEntry
+import com.rtbishop.look4sat.domain.model.SatItem
+import com.rtbishop.look4sat.domain.model.SatTrans
+import com.rtbishop.look4sat.predict4kotlin.Satellite
+import com.rtbishop.look4sat.utility.DataMapper
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.map
+
+class RoomDataSource(private val satelliteDao: SatelliteDao) : LocalDataSource {
+
+ override fun getSatItems(): Flow> {
+ return satelliteDao.getSatItems()
+ .map { satItems -> DataMapper.satItemsToDomainItems(satItems) }
+ }
+
+ override suspend fun getSelectedSatellites(): List {
+ return satelliteDao.getSelectedSatellites()
+ }
+
+ override suspend fun updateEntries(entries: List) {
+ val satEntries = entries.map { entry -> DataMapper.domainEntryToSatEntry(entry) }
+ satelliteDao.updateEntries(satEntries)
+ }
+
+ override suspend fun updateEntriesSelection(catNums: List, isSelected: Boolean) {
+ satelliteDao.updateEntriesSelection(catNums, isSelected)
+ }
+
+ override fun getTransmittersForSat(catNum: Int): Flow> {
+ return satelliteDao.getSatTransmitters(catNum)
+ .map { satTransList -> DataMapper.satTransListToDomainTransList(satTransList) }
+ }
+
+ override suspend fun updateTransmitters(satelliteTrans: List) {
+ val satTransList = DataMapper.domainTransListToSatTransList(satelliteTrans)
+ satelliteDao.updateTransmitters(satTransList)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDao.kt b/app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDao.kt
new file mode 100644
index 00000000..0e84875e
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDao.kt
@@ -0,0 +1,81 @@
+/*
+ * 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.framework.db
+
+import androidx.room.*
+import com.rtbishop.look4sat.framework.model.SatEntry
+import com.rtbishop.look4sat.framework.model.SatItem
+import com.rtbishop.look4sat.framework.model.SatTrans
+import com.rtbishop.look4sat.predict4kotlin.Satellite
+import kotlinx.coroutines.flow.Flow
+
+@Dao
+interface SatelliteDao {
+
+ @Transaction
+ @Query("SELECT catNum, name, isSelected FROM entries ORDER BY name ASC")
+ fun getSatItems(): Flow>
+
+ @Query("SELECT * FROM transmitters WHERE catNum = :catNum")
+ fun getSatTransmitters(catNum: Int): Flow>
+
+ @Query("SELECT tle FROM entries WHERE isSelected = 1")
+ suspend fun getSelectedSatellites(): List
+
+ @Query("SELECT catNum FROM entries WHERE isSelected = 1")
+ suspend fun getSelectedCatNums(): List
+
+ @Transaction
+ suspend fun updateEntries(entries: List) {
+ val selectedCatNums = getSelectedCatNums()
+ insertEntries(entries)
+ restoreEntriesSelection(selectedCatNums, true)
+ }
+
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ suspend fun insertEntries(entries: List)
+
+ @Transaction
+ suspend fun restoreEntriesSelection(catNums: List, isSelected: Boolean) {
+ clearEntriesSelection()
+ catNums.forEach { catNum -> updateEntrySelection(catNum, isSelected) }
+ }
+
+ @Query("UPDATE entries SET isSelected = 0")
+ suspend fun clearEntriesSelection()
+
+ @Query("UPDATE entries SET isSelected = :isSelected WHERE catNum = :catNum")
+ suspend fun updateEntrySelection(catNum: Int, isSelected: Boolean)
+
+ @Transaction
+ suspend fun updateEntriesSelection(catNums: List, isSelected: Boolean) {
+ catNums.forEach { catNum -> updateEntrySelection(catNum, isSelected) }
+ }
+
+ @Transaction
+ suspend fun updateTransmitters(transmitters: List) {
+ deleteTransmitters()
+ insertTransmitters(transmitters)
+ }
+
+ @Query("DELETE from transmitters")
+ suspend fun deleteTransmitters()
+
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ suspend fun insertTransmitters(transmitters: List)
+}
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDb.kt b/app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDb.kt
new file mode 100644
index 00000000..617ac994
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDb.kt
@@ -0,0 +1,31 @@
+/*
+ * 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.framework.db
+
+import androidx.room.Database
+import androidx.room.RoomDatabase
+import androidx.room.TypeConverters
+import com.rtbishop.look4sat.framework.model.SatEntry
+import com.rtbishop.look4sat.framework.model.SatTrans
+
+@Database(entities = [SatEntry::class, SatTrans::class], version = 1)
+@TypeConverters(RoomConverters::class)
+abstract class SatelliteDb : RoomDatabase() {
+
+ abstract fun satelliteDao(): SatelliteDao
+}
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/model/Result.kt b/app/src/main/java/com/rtbishop/look4sat/framework/model/Result.kt
new file mode 100644
index 00000000..52b6cf5b
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/model/Result.kt
@@ -0,0 +1,24 @@
+/*
+ * 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.framework.model
+
+sealed class Result {
+ data class Success(val data: T) : Result()
+ data class Error(val exception: Throwable) : Result()
+ object InProgress : Result()
+}
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/model/SatEntry.kt b/app/src/main/java/com/rtbishop/look4sat/framework/model/SatEntry.kt
new file mode 100644
index 00000000..4d7aec2a
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/model/SatEntry.kt
@@ -0,0 +1,30 @@
+/*
+ * 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.framework.model
+
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import com.rtbishop.look4sat.predict4kotlin.TLE
+
+@Entity(tableName = "entries")
+data class SatEntry(
+ val tle: TLE,
+ @PrimaryKey val catNum: Int = tle.catnum,
+ val name: String = tle.name,
+ var isSelected: Boolean = false
+)
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/model/SatItem.kt b/app/src/main/java/com/rtbishop/look4sat/framework/model/SatItem.kt
new file mode 100644
index 00000000..e03580eb
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/model/SatItem.kt
@@ -0,0 +1,33 @@
+/*
+ * 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.framework.model
+
+import androidx.room.Relation
+
+data class SatItem(
+ val catNum: Int,
+ val name: String,
+ var isSelected: Boolean,
+ @Relation(
+ parentColumn = "catNum",
+ entity = SatTrans::class,
+ entityColumn = "catNum",
+ projection = ["mode"]
+ )
+ val modes: List
+)
diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/model/SatPass.kt b/app/src/main/java/com/rtbishop/look4sat/framework/model/SatPass.kt
similarity index 93%
rename from core/src/main/java/com/rtbishop/look4sat/domain/model/SatPass.kt
rename to app/src/main/java/com/rtbishop/look4sat/framework/model/SatPass.kt
index df6f47db..6d99ce58 100644
--- a/core/src/main/java/com/rtbishop/look4sat/domain/model/SatPass.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/model/SatPass.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.domain.model
+package com.rtbishop.look4sat.framework.model
-import com.rtbishop.look4sat.predict4kotlin.PassPredictor
+import com.rtbishop.look4sat.utility.PassPredictor
import java.util.*
data class SatPass(
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/model/SatTrans.kt b/app/src/main/java/com/rtbishop/look4sat/framework/model/SatTrans.kt
new file mode 100644
index 00000000..d79eb513
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/model/SatTrans.kt
@@ -0,0 +1,34 @@
+/*
+ * 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.framework.model
+
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import com.squareup.moshi.Json
+
+@Entity(tableName = "transmitters")
+data class SatTrans(
+ @PrimaryKey @field:Json(name = "uuid") val uuid: String,
+ @field:Json(name = "description") val info: String,
+ @field:Json(name = "alive") val isAlive: Boolean,
+ @field:Json(name = "downlink_low") var downlink: Long?,
+ @field:Json(name = "uplink_low") var uplink: Long?,
+ @field:Json(name = "mode") val mode: String?,
+ @field:Json(name = "invert") val isInverted: Boolean,
+ @field:Json(name = "norad_cat_id") val catNum: Int
+)
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/model/SelectedSat.kt b/app/src/main/java/com/rtbishop/look4sat/framework/model/SelectedSat.kt
new file mode 100644
index 00000000..5b47ff91
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/model/SelectedSat.kt
@@ -0,0 +1,35 @@
+/*
+ * 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.framework.model
+
+import com.github.amsacode.predict4java.Position
+import com.github.amsacode.predict4java.Satellite
+import org.osmdroid.views.overlay.Overlay
+
+data class SelectedSat(
+ val pass: Satellite,
+ val catNum: Int,
+ val name: String,
+ val range: Double,
+ val altitude: Double,
+ val velocity: Double,
+ val qthLoc: String,
+ val osmPos: Position,
+ val footprint: Overlay,
+ val groundTrack: Overlay
+)
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/model/TleSource.kt b/app/src/main/java/com/rtbishop/look4sat/framework/model/TleSource.kt
new file mode 100644
index 00000000..5e4ee23c
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/model/TleSource.kt
@@ -0,0 +1,20 @@
+/*
+ * 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.framework.model
+
+class TleSource(var url: String = String())
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/Look4SatActivity.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/Look4SatActivity.kt
similarity index 97%
rename from app/src/main/java/com/rtbishop/look4sat/ui/Look4SatActivity.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/Look4SatActivity.kt
index 80f84f2b..f6b32020 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/Look4SatActivity.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/Look4SatActivity.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.ui
+package com.rtbishop.look4sat.presentation
import android.content.pm.ActivityInfo
import android.os.Bundle
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/Look4SatApplication.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/Look4SatApplication.kt
similarity index 96%
rename from app/src/main/java/com/rtbishop/look4sat/ui/Look4SatApplication.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/Look4SatApplication.kt
index b15536c2..cc6ded8c 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/Look4SatApplication.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/Look4SatApplication.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.ui
+package com.rtbishop.look4sat.presentation
import android.app.Application
import com.rtbishop.look4sat.BuildConfig
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesAdapter.kt
similarity index 98%
rename from app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesAdapter.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesAdapter.kt
index 8e752802..080bc891 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesAdapter.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesAdapter.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.ui.entriesScreen
+package com.rtbishop.look4sat.presentation.entriesScreen
import android.view.LayoutInflater
import android.view.ViewGroup
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesFragment.kt
similarity index 98%
rename from app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesFragment.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesFragment.kt
index 0afa24ae..8e25b1a9 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesFragment.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.ui.entriesScreen
+package com.rtbishop.look4sat.presentation.entriesScreen
import android.os.Bundle
import android.view.View
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt
similarity index 99%
rename from app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesViewModel.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt
index 6ad30638..9ce948da 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesViewModel.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.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.ui.entriesScreen
+package com.rtbishop.look4sat.presentation.entriesScreen
import android.content.Context
import android.net.Uri
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/infoScreen/InfoFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/infoScreen/InfoFragment.kt
similarity index 97%
rename from app/src/main/java/com/rtbishop/look4sat/ui/infoScreen/InfoFragment.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/infoScreen/InfoFragment.kt
index ea8b774b..be3cd9a1 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/infoScreen/InfoFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/infoScreen/InfoFragment.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.ui.infoScreen
+package com.rtbishop.look4sat.presentation.infoScreen
import android.content.Intent
import android.net.Uri
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapFragment.kt
similarity index 99%
rename from app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapFragment.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapFragment.kt
index 8d74082c..3d57611b 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapFragment.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.ui.mapScreen
+package com.rtbishop.look4sat.presentation.mapScreen
import android.graphics.Color
import android.graphics.ColorMatrix
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapViewModel.kt
similarity index 99%
rename from app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapViewModel.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapViewModel.kt
index ff585913..3d6f160f 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapViewModel.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapViewModel.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.ui.mapScreen
+package com.rtbishop.look4sat.presentation.mapScreen
import android.graphics.Color
import android.graphics.Paint
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt
similarity index 99%
rename from app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesAdapter.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt
index 221bb84c..3609396e 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesAdapter.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.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.ui.passesScreen
+package com.rtbishop.look4sat.presentation.passesScreen
import android.view.LayoutInflater
import android.view.ViewGroup
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt
similarity index 98%
rename from app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesFragment.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt
index ffebbe52..1685d5a0 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.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.ui.passesScreen
+package com.rtbishop.look4sat.presentation.passesScreen
import android.os.Bundle
import android.view.View
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt
similarity index 96%
rename from app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesViewModel.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt
index 7d15824e..3302e640 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesViewModel.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.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.ui.passesScreen
+package com.rtbishop.look4sat.presentation.passesScreen
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
@@ -23,7 +23,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.rtbishop.look4sat.data.model.Result
import com.rtbishop.look4sat.data.model.SatPass
-import com.rtbishop.look4sat.data.repository.PassesRepo
+import com.rtbishop.look4sat.utility.PassesRepo
import com.rtbishop.look4sat.data.repository.SatelliteRepo
import com.rtbishop.look4sat.utility.PrefsManager
import dagger.hilt.android.lifecycle.HiltViewModel
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/polarScreen/PolarFragment.kt
similarity index 98%
rename from app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarFragment.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/polarScreen/PolarFragment.kt
index 08703a86..22ea35f1 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/polarScreen/PolarFragment.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.ui.polarScreen
+package com.rtbishop.look4sat.presentation.polarScreen
import android.os.Bundle
import android.view.View
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarView.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/polarScreen/PolarView.kt
similarity index 98%
rename from app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarView.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/polarScreen/PolarView.kt
index f6b18e80..0c9050ee 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarView.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/polarScreen/PolarView.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.ui.polarScreen
+package com.rtbishop.look4sat.presentation.polarScreen
import android.content.Context
import android.graphics.Canvas
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/polarScreen/PolarViewModel.kt
similarity index 96%
rename from app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarViewModel.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/polarScreen/PolarViewModel.kt
index 75d7e05f..0edf1bcb 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarViewModel.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/polarScreen/PolarViewModel.kt
@@ -15,14 +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.ui.polarScreen
+package com.rtbishop.look4sat.presentation.polarScreen
import androidx.lifecycle.*
import com.rtbishop.look4sat.data.model.SatPass
import com.rtbishop.look4sat.data.model.SatTrans
-import com.rtbishop.look4sat.data.repository.PassesRepo
+import com.rtbishop.look4sat.utility.PassesRepo
import com.rtbishop.look4sat.data.repository.SatelliteRepo
import com.rtbishop.look4sat.di.IoDispatcher
+import com.rtbishop.look4sat.utility.OrientationProvider
import com.rtbishop.look4sat.utility.PrefsManager
import com.rtbishop.look4sat.utility.round
import dagger.hilt.android.lifecycle.HiltViewModel
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/TransAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/polarScreen/TransAdapter.kt
similarity index 98%
rename from app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/TransAdapter.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/polarScreen/TransAdapter.kt
index 5261de81..b9185b3b 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/TransAdapter.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/polarScreen/TransAdapter.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.ui.polarScreen
+package com.rtbishop.look4sat.presentation.polarScreen
import android.view.LayoutInflater
import android.view.ViewGroup
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/prefsScreen/PrefsFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/prefsScreen/PrefsFragment.kt
similarity index 98%
rename from app/src/main/java/com/rtbishop/look4sat/ui/prefsScreen/PrefsFragment.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/prefsScreen/PrefsFragment.kt
index 8ef263c6..166f42bc 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/prefsScreen/PrefsFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/prefsScreen/PrefsFragment.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.ui.prefsScreen
+package com.rtbishop.look4sat.presentation.prefsScreen
import android.Manifest
import android.content.pm.PackageManager
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/sourcesDialog/SourcesAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/sourcesDialog/SourcesAdapter.kt
similarity index 97%
rename from app/src/main/java/com/rtbishop/look4sat/ui/sourcesDialog/SourcesAdapter.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/sourcesDialog/SourcesAdapter.kt
index 84895e68..d6a5d785 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/sourcesDialog/SourcesAdapter.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/sourcesDialog/SourcesAdapter.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.ui.sourcesDialog
+package com.rtbishop.look4sat.presentation.sourcesDialog
import android.view.LayoutInflater
import android.view.ViewGroup
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/sourcesDialog/SourcesDialog.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/sourcesDialog/SourcesDialog.kt
similarity index 97%
rename from app/src/main/java/com/rtbishop/look4sat/ui/sourcesDialog/SourcesDialog.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/sourcesDialog/SourcesDialog.kt
index f751efdb..99e8853d 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/sourcesDialog/SourcesDialog.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/sourcesDialog/SourcesDialog.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.ui.sourcesDialog
+package com.rtbishop.look4sat.presentation.sourcesDialog
import android.os.Bundle
import android.view.LayoutInflater
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/splashDialog/SplashDialog.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/splashDialog/SplashDialog.kt
similarity index 96%
rename from app/src/main/java/com/rtbishop/look4sat/ui/splashDialog/SplashDialog.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/splashDialog/SplashDialog.kt
index 526b9fa9..54c9a6f1 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/splashDialog/SplashDialog.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/splashDialog/SplashDialog.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.ui.splashDialog
+package com.rtbishop.look4sat.presentation.splashDialog
import android.os.Bundle
import android.view.LayoutInflater
diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/DataMapper.kt b/app/src/main/java/com/rtbishop/look4sat/utility/DataMapper.kt
new file mode 100644
index 00000000..71f8b833
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/utility/DataMapper.kt
@@ -0,0 +1,69 @@
+package com.rtbishop.look4sat.utility
+
+import com.rtbishop.look4sat.framework.model.SatEntry
+import com.rtbishop.look4sat.framework.model.SatItem
+import com.rtbishop.look4sat.framework.model.SatTrans
+import com.rtbishop.look4sat.domain.model.SatEntry as DomainEntry
+import com.rtbishop.look4sat.domain.model.SatItem as DomainItem
+import com.rtbishop.look4sat.domain.model.SatTrans as DomainTrans
+
+object DataMapper {
+
+ // Framework to Domain
+
+ fun satEntryToDomainEntry(entry: SatEntry): DomainEntry {
+ return DomainEntry(entry.tle, entry.catNum, entry.name, entry.isSelected)
+ }
+
+ fun satEntriesToDomainEntries(entries: List): List {
+ return entries.map { entry -> satEntryToDomainEntry(entry) }
+ }
+
+ fun satItemToDomainItem(item: SatItem): DomainItem {
+ return DomainItem(item.catNum, item.name, item.isSelected, item.modes)
+ }
+
+ fun satItemsToDomainItems(items: List): List {
+ return items.map { item -> satItemToDomainItem(item) }
+ }
+
+ fun satTransToDomainTrans(transmitter: SatTrans): DomainTrans {
+ return DomainTrans(
+ transmitter.uuid, transmitter.info, transmitter.isAlive, transmitter.downlink,
+ transmitter.uplink, transmitter.mode, transmitter.isInverted, transmitter.catNum
+ )
+ }
+
+ fun satTransListToDomainTransList(transmitters: List): List {
+ return transmitters.map { transmitter -> satTransToDomainTrans(transmitter) }
+ }
+
+ // Domain to Framework
+
+ fun domainEntryToSatEntry(entry: DomainEntry): SatEntry {
+ return SatEntry(entry.tle, entry.catNum, entry.name, entry.isSelected)
+ }
+
+ fun domainEntriesToSatEntries(entries: List): List {
+ return entries.map { entry -> domainEntryToSatEntry(entry) }
+ }
+
+ fun domainItemToSatItem(item: DomainItem): SatItem {
+ return SatItem(item.catNum, item.name, item.isSelected, item.modes)
+ }
+
+ fun domainItemsToSatItems(items: List): List {
+ return items.map { item -> domainItemToSatItem(item) }
+ }
+
+ fun domainTransToSatTrans(transmitter: DomainTrans): SatTrans {
+ return SatTrans(
+ transmitter.uuid, transmitter.info, transmitter.isAlive, transmitter.downlink,
+ transmitter.uplink, transmitter.mode, transmitter.isInverted, transmitter.catNum
+ )
+ }
+
+ fun domainTransListToSatTransList(transmitters: List): List {
+ return transmitters.map { transmitter -> domainTransToSatTrans(transmitter) }
+ }
+}
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/OrientationProvider.kt b/app/src/main/java/com/rtbishop/look4sat/utility/OrientationProvider.kt
similarity index 98%
rename from app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/OrientationProvider.kt
rename to app/src/main/java/com/rtbishop/look4sat/utility/OrientationProvider.kt
index 4c1adf42..9ab32b70 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/OrientationProvider.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/utility/OrientationProvider.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.ui.polarScreen
+package com.rtbishop.look4sat.utility
import android.hardware.Sensor
import android.hardware.SensorEvent
diff --git a/app/src/main/java/com/rtbishop/look4sat/data/repository/PassesRepo.kt b/app/src/main/java/com/rtbishop/look4sat/utility/PassesRepo.kt
similarity index 95%
rename from app/src/main/java/com/rtbishop/look4sat/data/repository/PassesRepo.kt
rename to app/src/main/java/com/rtbishop/look4sat/utility/PassesRepo.kt
index 9e6d8a06..067b05bf 100644
--- a/app/src/main/java/com/rtbishop/look4sat/data/repository/PassesRepo.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/utility/PassesRepo.kt
@@ -15,13 +15,11 @@
* 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
+package com.rtbishop.look4sat.utility
import com.github.amsacode.predict4java.Satellite
import com.rtbishop.look4sat.data.model.SatPass
import com.rtbishop.look4sat.di.DefaultDispatcher
-import com.rtbishop.look4sat.utility.PrefsManager
-import com.rtbishop.look4sat.utility.getPredictor
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.SharedFlow
diff --git a/app/src/main/res/layout/fragment_info.xml b/app/src/main/res/layout/fragment_info.xml
index 6aaf2d64..5435fefc 100644
--- a/app/src/main/res/layout/fragment_info.xml
+++ b/app/src/main/res/layout/fragment_info.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".ui.infoScreen.InfoFragment">
+ tools:context=".presentation.infoScreen.InfoFragment">
+ android:name="com.rtbishop.look4sat.presentation.prefsScreen.PrefsFragment" />
diff --git a/core/src/main/java/com/rtbishop/look4sat/data/DefaultSatelliteRepo.kt b/core/src/main/java/com/rtbishop/look4sat/data/DefaultSatelliteRepo.kt
index 19e68a70..4c4063af 100644
--- a/core/src/main/java/com/rtbishop/look4sat/data/DefaultSatelliteRepo.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/data/DefaultSatelliteRepo.kt
@@ -1,9 +1,9 @@
package com.rtbishop.look4sat.data
+import com.rtbishop.look4sat.domain.SatelliteRepo
import com.rtbishop.look4sat.domain.model.SatEntry
import com.rtbishop.look4sat.domain.model.SatItem
-import com.rtbishop.look4sat.domain.SatelliteRepo
-import com.rtbishop.look4sat.domain.model.Transmitter
+import com.rtbishop.look4sat.domain.model.SatTrans
import com.rtbishop.look4sat.predict4kotlin.Satellite
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.coroutineScope
@@ -23,7 +23,7 @@ class DefaultSatelliteRepo(
return localSource.getSatItems()
}
- override fun getTransmittersForSat(catNum: Int): Flow> {
+ override fun getTransmittersForSat(catNum: Int): Flow> {
return localSource.getTransmittersForSat(catNum)
}
@@ -44,12 +44,13 @@ class DefaultSatelliteRepo(
val entries = mutableListOf()
val streams = mutableListOf()
sources.forEach { source ->
- val stream = remoteSource.fetchFileStream(source)
- if (source.contains(".zip", true)) {
- val zipStream = ZipInputStream(stream).apply { nextEntry }
- streams.add(zipStream)
- } else {
- streams.add(stream)
+ remoteSource.fetchFileStream(source)?.let { stream ->
+ if (source.contains(".zip", true)) {
+ val zipStream = ZipInputStream(stream).apply { nextEntry }
+ streams.add(zipStream)
+ } else {
+ streams.add(stream)
+ }
}
}
streams.forEach { stream ->
diff --git a/core/src/main/java/com/rtbishop/look4sat/data/LocalDataSource.kt b/core/src/main/java/com/rtbishop/look4sat/data/LocalDataSource.kt
index a96ba648..2afb6876 100644
--- a/core/src/main/java/com/rtbishop/look4sat/data/LocalDataSource.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/data/LocalDataSource.kt
@@ -2,7 +2,7 @@ package com.rtbishop.look4sat.data
import com.rtbishop.look4sat.domain.model.SatEntry
import com.rtbishop.look4sat.domain.model.SatItem
-import com.rtbishop.look4sat.domain.model.Transmitter
+import com.rtbishop.look4sat.domain.model.SatTrans
import com.rtbishop.look4sat.predict4kotlin.Satellite
import kotlinx.coroutines.flow.Flow
@@ -16,7 +16,7 @@ interface LocalDataSource {
suspend fun updateEntriesSelection(catNums: List, isSelected: Boolean)
- fun getTransmittersForSat(catNum: Int): Flow>
+ fun getTransmittersForSat(catNum: Int): Flow>
- suspend fun updateTransmitters(transmitters: List)
+ suspend fun updateTransmitters(satelliteTrans: List)
}
diff --git a/core/src/main/java/com/rtbishop/look4sat/data/RemoteDataSource.kt b/core/src/main/java/com/rtbishop/look4sat/data/RemoteDataSource.kt
index 29766462..cf922df7 100644
--- a/core/src/main/java/com/rtbishop/look4sat/data/RemoteDataSource.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/data/RemoteDataSource.kt
@@ -1,11 +1,11 @@
package com.rtbishop.look4sat.data
-import com.rtbishop.look4sat.domain.model.Transmitter
+import com.rtbishop.look4sat.domain.model.SatTrans
import java.io.InputStream
interface RemoteDataSource {
- fun fetchFileStream(url: String): InputStream
+ suspend fun fetchFileStream(url: String): InputStream?
- fun fetchTransmitters(): List
+ suspend fun fetchTransmitters(): List
}
diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/SatelliteRepo.kt b/core/src/main/java/com/rtbishop/look4sat/domain/SatelliteRepo.kt
index 1f9b193e..ad81afb7 100644
--- a/core/src/main/java/com/rtbishop/look4sat/domain/SatelliteRepo.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/domain/SatelliteRepo.kt
@@ -1,7 +1,7 @@
package com.rtbishop.look4sat.domain
import com.rtbishop.look4sat.domain.model.SatItem
-import com.rtbishop.look4sat.domain.model.Transmitter
+import com.rtbishop.look4sat.domain.model.SatTrans
import com.rtbishop.look4sat.predict4kotlin.Satellite
import kotlinx.coroutines.flow.Flow
import java.io.InputStream
@@ -10,7 +10,7 @@ interface SatelliteRepo {
fun getSatItems(): Flow>
- fun getTransmittersForSat(catNum: Int): Flow>
+ fun getTransmittersForSat(catNum: Int): Flow>
suspend fun getSelectedSatellites(): List
diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/model/SatEntry.kt b/core/src/main/java/com/rtbishop/look4sat/domain/model/SatEntry.kt
index 6db2f6f6..e92e1462 100644
--- a/core/src/main/java/com/rtbishop/look4sat/domain/model/SatEntry.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/domain/model/SatEntry.kt
@@ -4,7 +4,7 @@ import com.rtbishop.look4sat.predict4kotlin.TLE
data class SatEntry(
val tle: TLE,
- var isSelected: Boolean = false,
val catNum: Int = tle.catnum,
- val name: String = tle.name
+ val name: String = tle.name,
+ var isSelected: Boolean = false
)
diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/model/Transmitter.kt b/core/src/main/java/com/rtbishop/look4sat/domain/model/SatTrans.kt
similarity index 90%
rename from core/src/main/java/com/rtbishop/look4sat/domain/model/Transmitter.kt
rename to core/src/main/java/com/rtbishop/look4sat/domain/model/SatTrans.kt
index a7ccf6f4..5daaf9b5 100644
--- a/core/src/main/java/com/rtbishop/look4sat/domain/model/Transmitter.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/domain/model/SatTrans.kt
@@ -1,6 +1,6 @@
package com.rtbishop.look4sat.domain.model
-data class Transmitter(
+data class SatTrans(
val uuid: String,
val info: String,
val isAlive: Boolean,
diff --git a/core/src/main/java/com/rtbishop/look4sat/interactors/GetTransmittersForSat.kt b/core/src/main/java/com/rtbishop/look4sat/interactors/GetTransmittersForSat.kt
index 403c25ed..eac8da22 100644
--- a/core/src/main/java/com/rtbishop/look4sat/interactors/GetTransmittersForSat.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/interactors/GetTransmittersForSat.kt
@@ -1,12 +1,12 @@
package com.rtbishop.look4sat.interactors
import com.rtbishop.look4sat.domain.SatelliteRepo
-import com.rtbishop.look4sat.domain.model.Transmitter
+import com.rtbishop.look4sat.domain.model.SatTrans
import kotlinx.coroutines.flow.Flow
class GetTransmittersForSat(private val satelliteRepo: SatelliteRepo) {
- operator fun invoke(catNum: Int): Flow> {
+ operator fun invoke(catNum: Int): Flow> {
return satelliteRepo.getTransmittersForSat(catNum)
}
}
\ No newline at end of file
diff --git a/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/Satellite.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/Satellite.kt
index 5698e39e..5a65293f 100644
--- a/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/Satellite.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/Satellite.kt
@@ -349,9 +349,12 @@ abstract class Satellite(val tle: TLE) {
companion object {
- fun createSat(tle: TLE): Satellite {
- return if (tle.isDeepspace) DeepSpaceSat(tle)
- else NearEarthSat(tle)
+ fun createSat(tle: TLE?): Satellite? {
+ return when {
+ tle == null -> null
+ tle.isDeepspace -> DeepSpaceSat(tle)
+ else -> NearEarthSat(tle)
+ }
}
fun importTLE(tleStream: InputStream): List {