diff --git a/app/build.gradle b/app/build.gradle index 45f3e2cc..93d3ba89 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -73,7 +73,6 @@ dependencies { implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" - implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" implementation "androidx.room:room-runtime:$room_version" implementation "androidx.room:room-ktx:$room_version" kapt "androidx.room:room-compiler:$room_version" diff --git a/app/src/main/java/com/rtbishop/look4sat/SharedViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/SharedViewModel.kt index 2737ccf8..3609df08 100644 --- a/app/src/main/java/com/rtbishop/look4sat/SharedViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/SharedViewModel.kt @@ -28,7 +28,9 @@ import com.rtbishop.look4sat.data.Result import com.rtbishop.look4sat.data.SatEntry import com.rtbishop.look4sat.data.SatPass import com.rtbishop.look4sat.data.TleSource -import com.rtbishop.look4sat.repo.Repository +import com.rtbishop.look4sat.repo.EntriesRepo +import com.rtbishop.look4sat.repo.SourcesRepo +import com.rtbishop.look4sat.repo.TransmittersRepo import com.rtbishop.look4sat.utility.PassPredictor import com.rtbishop.look4sat.utility.PrefsManager import kotlinx.coroutines.Dispatchers @@ -39,7 +41,9 @@ import javax.inject.Singleton @Singleton class SharedViewModel @ViewModelInject constructor( private val prefsManager: PrefsManager, - private val repository: Repository, + private val sourcesRepo: SourcesRepo, + private val entriesRepo: EntriesRepo, + private val transmittersRepo: TransmittersRepo, @Assisted private val savedStateHandle: SavedStateHandle ) : ViewModel() { @@ -53,10 +57,10 @@ class SharedViewModel @ViewModelInject constructor( } } - fun getSources() = repository.getSources() - fun getEntries() = repository.getEntries() + fun getSources() = sourcesRepo.getSources() + fun getEntries() = entriesRepo.getEntries() fun getPasses(): LiveData>> = _passes - fun getTransmittersForSat(satId: Int) = repository.getTransmittersForSat(satId) + fun getTransmittersForSat(satId: Int) = transmittersRepo.getTransmittersForSat(satId) fun triggerCalculation() { if (shouldTriggerCalculation) { @@ -71,15 +75,15 @@ class SharedViewModel @ViewModelInject constructor( fun updateEntriesFromFile(uri: Uri) { viewModelScope.launch { - repository.updateEntriesFromFile(uri) + entriesRepo.updateEntriesFromFile(uri) } } fun updateEntriesFromSources(sources: List) { viewModelScope.launch { - repository.updateSources(sources) - repository.updateEntriesFromSources(sources) - repository.updateTransmitters() + sourcesRepo.updateSources(sources) + entriesRepo.updateEntriesFromSources(sources) + transmittersRepo.updateTransmitters() } } @@ -87,7 +91,7 @@ class SharedViewModel @ViewModelInject constructor( viewModelScope.launch { selectedEntries = entries.filter { it.isSelected } calculatePasses() - repository.updateEntriesSelection(selectedEntries.map { it.catNum }) + entriesRepo.updateEntriesSelection(selectedEntries.map { it.catNum }) } } @@ -111,7 +115,7 @@ class SharedViewModel @ViewModelInject constructor( TleSource("https://celestrak.com/NORAD/elements/active.txt"), TleSource("https://amsat.org/tle/current/nasabare.txt") ) - repository.updateSources(defaultTleSources) + sourcesRepo.updateSources(defaultTleSources) } } diff --git a/app/src/main/java/com/rtbishop/look4sat/di/RepoModule.kt b/app/src/main/java/com/rtbishop/look4sat/di/RepoModule.kt index fa2508bb..c1a0aaff 100644 --- a/app/src/main/java/com/rtbishop/look4sat/di/RepoModule.kt +++ b/app/src/main/java/com/rtbishop/look4sat/di/RepoModule.kt @@ -21,8 +21,7 @@ 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.* import com.rtbishop.look4sat.repo.local.EntriesDao import com.rtbishop.look4sat.repo.local.SourcesDao import com.rtbishop.look4sat.repo.local.TransmittersDao @@ -47,21 +46,26 @@ class RepoModule { @ActivityScoped @Provides - fun provideDefaultRepository( + fun provideEntriesRepo( resolver: ContentResolver, client: OkHttpClient, - transmittersApi: TransmittersApi, - entriesDao: EntriesDao, + entriesDao: EntriesDao + ): EntriesRepo { + return DefaultEntriesRepo(resolver, client, entriesDao) + } + + @ActivityScoped + @Provides + fun provideSourcesRepo(sourcesDao: SourcesDao): SourcesRepo { + return DefaultSourcesRepo(sourcesDao) + } + + @ActivityScoped + @Provides + fun provideTransmittersRepo( transmittersDao: TransmittersDao, - sourcesDao: SourcesDao - ): Repository { - return DefaultRepository( - resolver, - client, - transmittersApi, - entriesDao, - sourcesDao, - transmittersDao - ) + transmittersApi: TransmittersApi + ): TransmittersRepo { + return DefaultTransmittersRepo(transmittersDao, transmittersApi) } } diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/DefaultRepository.kt b/app/src/main/java/com/rtbishop/look4sat/repo/DefaultEntriesRepo.kt similarity index 54% rename from app/src/main/java/com/rtbishop/look4sat/repo/DefaultRepository.kt rename to app/src/main/java/com/rtbishop/look4sat/repo/DefaultEntriesRepo.kt index 35e7d554..66d52fce 100644 --- a/app/src/main/java/com/rtbishop/look4sat/repo/DefaultRepository.kt +++ b/app/src/main/java/com/rtbishop/look4sat/repo/DefaultEntriesRepo.kt @@ -1,22 +1,3 @@ -/* - * 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.repo import android.content.ContentResolver @@ -24,12 +5,8 @@ import android.net.Uri import androidx.lifecycle.LiveData 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.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 kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import okhttp3.OkHttpClient @@ -37,22 +14,11 @@ import okhttp3.Request import java.io.InputStream import javax.inject.Inject -class DefaultRepository @Inject constructor( +class DefaultEntriesRepo @Inject constructor( private val resolver: ContentResolver, private val client: OkHttpClient, - private val api: TransmittersApi, - private val entriesDao: EntriesDao, - private val sourcesDao: SourcesDao, - private val transmittersDao: TransmittersDao -) : Repository { - - override fun getSources(): LiveData> { - return sourcesDao.getSources() - } - - override suspend fun updateSources(sources: List) { - sourcesDao.updateSources(sources) - } + private val entriesDao: EntriesDao +) : EntriesRepo { override fun getEntries(): LiveData> { return entriesDao.getEntries() @@ -91,12 +57,4 @@ class DefaultRepository @Inject constructor( override suspend fun updateEntriesSelection(satIds: List) { entriesDao.updateEntriesSelection(satIds) } - - override fun getTransmittersForSat(satId: Int): LiveData> { - return transmittersDao.getTransmittersForSat(satId) - } - - override suspend fun updateTransmitters() { - transmittersDao.updateTransmitters(api.getTransmitters()) - } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/DefaultSourcesRepo.kt b/app/src/main/java/com/rtbishop/look4sat/repo/DefaultSourcesRepo.kt new file mode 100644 index 00000000..a03af1ac --- /dev/null +++ b/app/src/main/java/com/rtbishop/look4sat/repo/DefaultSourcesRepo.kt @@ -0,0 +1,18 @@ +package com.rtbishop.look4sat.repo + +import androidx.lifecycle.LiveData +import com.rtbishop.look4sat.data.TleSource +import com.rtbishop.look4sat.repo.local.SourcesDao +import javax.inject.Inject + +class DefaultSourcesRepo @Inject constructor(private val sourcesDao: SourcesDao) : + SourcesRepo { + + override fun getSources(): LiveData> { + return sourcesDao.getSources() + } + + override suspend fun updateSources(sources: List) { + sourcesDao.updateSources(sources) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/DefaultTransmittersRepo.kt b/app/src/main/java/com/rtbishop/look4sat/repo/DefaultTransmittersRepo.kt new file mode 100644 index 00000000..648b690f --- /dev/null +++ b/app/src/main/java/com/rtbishop/look4sat/repo/DefaultTransmittersRepo.kt @@ -0,0 +1,21 @@ +package com.rtbishop.look4sat.repo + +import androidx.lifecycle.LiveData +import com.rtbishop.look4sat.data.SatTrans +import com.rtbishop.look4sat.repo.local.TransmittersDao +import com.rtbishop.look4sat.repo.remote.TransmittersApi +import javax.inject.Inject + +class DefaultTransmittersRepo @Inject constructor( + private val transmittersDao: TransmittersDao, + private val transmittersApi: TransmittersApi +) : TransmittersRepo { + + override fun getTransmittersForSat(satId: Int): LiveData> { + return transmittersDao.getTransmittersForSat(satId) + } + + override suspend fun updateTransmitters() { + transmittersDao.updateTransmitters(transmittersApi.getTransmitters()) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/EntriesRepo.kt b/app/src/main/java/com/rtbishop/look4sat/repo/EntriesRepo.kt new file mode 100644 index 00000000..3592d987 --- /dev/null +++ b/app/src/main/java/com/rtbishop/look4sat/repo/EntriesRepo.kt @@ -0,0 +1,17 @@ +package com.rtbishop.look4sat.repo + +import android.net.Uri +import androidx.lifecycle.LiveData +import com.rtbishop.look4sat.data.SatEntry +import com.rtbishop.look4sat.data.TleSource + +interface EntriesRepo { + + fun getEntries(): LiveData> + + suspend fun updateEntriesFromFile(fileUri: Uri) + + suspend fun updateEntriesFromSources(sources: List) + + suspend fun updateEntriesSelection(satIds: List) +} \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/Repository.kt b/app/src/main/java/com/rtbishop/look4sat/repo/Repository.kt deleted file mode 100644 index 745c6133..00000000 --- a/app/src/main/java/com/rtbishop/look4sat/repo/Repository.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.rtbishop.look4sat.repo - -import android.net.Uri -import androidx.lifecycle.LiveData -import com.rtbishop.look4sat.data.SatEntry -import com.rtbishop.look4sat.data.SatTrans -import com.rtbishop.look4sat.data.TleSource - -interface Repository { - - fun getSources(): LiveData> - - suspend fun updateSources(sources: List) - - //////////////////////////////////////////////////////////////////////////////////////////////// - - fun getEntries(): LiveData> - - suspend fun updateEntriesFromFile(fileUri: Uri) - - suspend fun updateEntriesFromSources(sources: List) - - suspend fun updateEntriesSelection(satIds: List) - - //////////////////////////////////////////////////////////////////////////////////////////////// - - suspend fun updateTransmitters() - - fun getTransmittersForSat(satId: Int): LiveData> -} diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/SourcesRepo.kt b/app/src/main/java/com/rtbishop/look4sat/repo/SourcesRepo.kt new file mode 100644 index 00000000..63cb9268 --- /dev/null +++ b/app/src/main/java/com/rtbishop/look4sat/repo/SourcesRepo.kt @@ -0,0 +1,11 @@ +package com.rtbishop.look4sat.repo + +import androidx.lifecycle.LiveData +import com.rtbishop.look4sat.data.TleSource + +interface SourcesRepo { + + fun getSources(): LiveData> + + suspend fun updateSources(sources: List) +} \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/TransmittersRepo.kt b/app/src/main/java/com/rtbishop/look4sat/repo/TransmittersRepo.kt new file mode 100644 index 00000000..c665ab4b --- /dev/null +++ b/app/src/main/java/com/rtbishop/look4sat/repo/TransmittersRepo.kt @@ -0,0 +1,11 @@ +package com.rtbishop.look4sat.repo + +import androidx.lifecycle.LiveData +import com.rtbishop.look4sat.data.SatTrans + +interface TransmittersRepo { + + suspend fun updateTransmitters() + + fun getTransmittersForSat(satId: Int): LiveData> +} \ No newline at end of file