Skip to content

Commit

Permalink
Swapped WorkManager for manual update check
Browse files Browse the repository at this point in the history
  • Loading branch information
rt-bishop committed Oct 23, 2022
1 parent 1685691 commit baf61ca
Show file tree
Hide file tree
Showing 11 changed files with 62 additions and 131 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,12 @@ import javax.inject.Singleton
class SettingsManager @Inject constructor(private val prefs: SharedPreferences) : ISettingsManager {

companion object {
const val keyFirstEverLaunch = "isFirstEverLaunch"
const val keyModes = "satModes"
const val keyCompass = "compass"
const val keyRadarSweep = "radarSweep"
const val keyTimeUTC = "timeUTC"
const val keyUpdateTime = "updateTime"
const val keyAutoUpdate = "autoUpdate"
const val keyLastUpdateTime = "lastUpdateTime"
const val keyAutoUpdateEnabled = "autoUpdateEnabled"
const val keyHoursAhead = "hoursAhead"
const val keyMinElevation = "minElevation"
const val keyRotator = "isRotatorEnabled"
Expand All @@ -50,14 +49,6 @@ class SettingsManager @Inject constructor(private val prefs: SharedPreferences)
const val keySelection = "selection"
}

override fun isFirstEverLaunchDone(): Boolean {
return prefs.getBoolean(keyFirstEverLaunch, false)
}

override fun setFirstEverLaunchDone() {
prefs.edit { putBoolean(keyFirstEverLaunch, true) }
}

override fun loadStationLocator(): String {
return prefs.getString(keyLocator, null) ?: "null"
}
Expand Down Expand Up @@ -124,20 +115,20 @@ class SettingsManager @Inject constructor(private val prefs: SharedPreferences)
prefs.edit { putBoolean(keyTimeUTC, value) }
}

override fun getUpdateTime(): Long {
return prefs.getLong(keyUpdateTime, 0L)
override fun getLastUpdateTime(): Long {
return prefs.getLong(keyLastUpdateTime, 0L)
}

override fun setUpdateTime(updateTime: Long) {
prefs.edit { putLong(keyUpdateTime, updateTime) }
override fun setLastUpdateTime(updateTime: Long) {
prefs.edit { putLong(keyLastUpdateTime, updateTime) }
}

override fun getUpdateEnabled(): Boolean {
return prefs.getBoolean(keyAutoUpdate, false)
override fun getAutoUpdateEnabled(): Boolean {
return prefs.getBoolean(keyAutoUpdateEnabled, true)
}

override fun setUpdateEnabled(value: Boolean) {
prefs.edit { putBoolean(keyAutoUpdate, value) }
override fun setAutoUpdateEnabled(value: Boolean) {
prefs.edit { putBoolean(keyAutoUpdateEnabled, value) }
}

override fun getUseCompass(): Boolean {
Expand Down
63 changes: 0 additions & 63 deletions app/src/main/java/com/rtbishop/look4sat/framework/UpdateManager.kt

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,36 @@
package com.rtbishop.look4sat.presentation

import android.app.Application
import android.util.Log
import com.rtbishop.look4sat.domain.IDataRepository
import com.rtbishop.look4sat.framework.SettingsManager
import dagger.hilt.android.HiltAndroidApp
import java.text.SimpleDateFormat
import java.util.*
import javax.inject.Inject

@HiltAndroidApp
class MainApplication : Application() {

@Inject
lateinit var repository: IDataRepository

@Inject
lateinit var settingsManager: SettingsManager

override fun onCreate() {
super.onCreate()
checkAutoUpdate()
}

private fun checkAutoUpdate() {
if (settingsManager.getAutoUpdateEnabled()) {
val timeDelta = System.currentTimeMillis() - settingsManager.getLastUpdateTime()
if (timeDelta > 172800000) { // 48 hours in ms
val sdf = SimpleDateFormat("d MMM yyyy - HH:mm:ss", Locale.getDefault())
Log.d("AutoUpdate", "Started periodic data update on ${sdf.format(Date())}")
repository.updateFromWeb()
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,6 @@ class PassesViewModel @Inject constructor(
val entriesTotal: LiveData<Int> = repository.getEntriesTotal().asLiveData()

init {
viewModelScope.launch {
if (!settings.isFirstEverLaunchDone()) {
repository.updateFromWeb()
settings.setFirstEverLaunchDone()
}
}
viewModelScope.launch {
satelliteManager.calculatedPasses.collect { passes ->
passesProcessing?.cancelAndJoin()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {
}
private val contentContract = ActivityResultContracts.GetContent()
private val contentRequest = registerForActivityResult(contentContract) { uri ->
uri?.let { viewModel.updateDataFromFile(uri.toString()) }
uri?.let { viewModel.updateFromFile(uri.toString()) }
}
private lateinit var binding: FragmentSettingsBinding

Expand Down Expand Up @@ -134,14 +134,10 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {

private fun setupDataCard() {
binding.run {
setUpdateTime(viewModel.getUpdateTime())
settingsData.dataBtnWeb.clickWithDebounce {
// val action = SettingsFragmentDirections.settingsToSources()
// findNavController().navigate(action)
viewModel.updateDataFromWeb()
}
setUpdateTime(viewModel.getLastUpdateTime())
settingsData.dataBtnWeb.clickWithDebounce { viewModel.updateFromWeb() }
settingsData.dataBtnFile.clickWithDebounce { contentRequest.launch("*/*") }
settingsData.dataBtnClear.clickWithDebounce { viewModel.clearData() }
settingsData.dataBtnClear.clickWithDebounce { viewModel.clearAllData() }
viewModel.entriesTotal.observe(viewLifecycleOwner) { number ->
val entriesFormat = getString(R.string.data_entries)
settingsData.dataEntries.text = String.format(entriesFormat, number)
Expand All @@ -151,7 +147,7 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {
settingsData.dataRadios.text = String.format(radiosFormat, number)
}
getNavResult<List<String>>(R.id.nav_settings, "sources") {
viewModel.updateDataFromWeb()
viewModel.updateFromWeb()
}
}
}
Expand Down Expand Up @@ -217,8 +213,8 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {
setOnCheckedChangeListener { _, isChecked -> viewModel.setUseUTC(isChecked) }
}
settingsOther.otherSwitchUpdate.apply {
isChecked = viewModel.getUpdateEnabled()
setOnCheckedChangeListener { _, isChecked -> viewModel.setUpdateEnabled(isChecked) }
isChecked = viewModel.getAutoUpdateEnabled()
setOnCheckedChangeListener { _, isChecked -> viewModel.setAutoUpdateEnabled(isChecked) }
}
settingsOther.otherSwitchSweep.apply {
isChecked = viewModel.getShowSweep()
Expand Down Expand Up @@ -273,7 +269,11 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {
binding.settingsData.dataProgress.isIndeterminate = false
setUpdateTime(state.data)
viewModel.setUpdateHandled()
showToast(getString(R.string.data_success))
if (state.data == 0L) {
showToast(getString(R.string.data_clear_success))
} else {
showToast(getString(R.string.data_success))
}
}
is DataState.Error -> {
binding.settingsData.dataProgress.isIndeterminate = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import com.rtbishop.look4sat.domain.ILocationManager
import com.rtbishop.look4sat.domain.ISettingsManager
import com.rtbishop.look4sat.domain.model.DataState
import com.rtbishop.look4sat.domain.predict.GeoPos
import com.rtbishop.look4sat.framework.UpdateManager
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.SharedFlow
import javax.inject.Inject
Expand All @@ -33,39 +32,27 @@ import javax.inject.Inject
class SettingsViewModel @Inject constructor(
private val locationManager: ILocationManager,
private val repository: IDataRepository,
private val settings: ISettingsManager,
private val updateManager: UpdateManager
private val settings: ISettingsManager
) : ViewModel() {

val entriesTotal = repository.getEntriesTotal().asLiveData()
val radiosTotal = repository.getRadiosTotal().asLiveData()

fun updateDataFromFile(uri: String) {
repository.updateFromFile(uri)
}
fun updateFromFile(uri: String) = repository.updateFromFile(uri)

fun updateDataFromWeb() {
// settings.saveDataSources(sources)
// repository.updateFromWeb(sources)
repository.updateFromWeb()
}
fun updateFromWeb() = repository.updateFromWeb()

fun clearData() {
repository.clearAllData()
}
fun clearAllData() = repository.clearAllData()

fun getUseUTC(): Boolean = settings.getUseUTC()

fun setUseUTC(value: Boolean) = settings.setUseUTC(value)

fun getUpdateTime(): Long = settings.getUpdateTime()
fun getLastUpdateTime(): Long = settings.getLastUpdateTime()

fun getUpdateEnabled(): Boolean = settings.getUpdateEnabled()
fun getAutoUpdateEnabled(): Boolean = settings.getAutoUpdateEnabled()

fun setUpdateEnabled(value: Boolean) {
updateManager.toggleAutoUpdate(value)
settings.setUpdateEnabled(value)
}
fun setAutoUpdateEnabled(value: Boolean) = settings.setAutoUpdateEnabled(value)

fun getUseCompass(): Boolean = settings.getUseCompass()

Expand Down Expand Up @@ -95,9 +82,9 @@ class SettingsViewModel @Inject constructor(

fun setBTFormat(value: String) = settings.setBTFormat(value)

fun getBTDeviceName(): String = settings.getBTDeviceName()
// fun getBTDeviceName(): String = settings.getBTDeviceName()

fun setBTDeviceName(value: String) = settings.setBTDeviceName(value)
// fun setBTDeviceName(value: String) = settings.setBTDeviceName(value)

fun getBTDeviceAddr(): String = settings.getBTDeviceAddr()

Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@
<string name="data_entries">Спутников: %s</string>
<string name="data_radios">Трансиверов: %s</string>
<string name="data_success">Обновление прошло успешно</string>
<string name="data_clear_success">Очистка прошла успешно</string>

<string name="remote_title">Настройки ротатора</string>
<string name="remote_switch">Удаленное управление</string>
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values-zh-rCN/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@
<string name="data_entries">卫星:%s</string>
<string name="data_radios">收发器:%s</string>
<string name="data_success">更新成功完成</string>
<string name="data_clear_success">Update completed successfully</string>
<string name="remote_title">旋转器首选项</string>
<string name="remote_switch">启用远程控制</string>
</resources>
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@
<string name="data_entries">Satellites: %s</string>
<string name="data_radios">Transceivers: %s</string>
<string name="data_success">Update completed successfully</string>
<string name="data_clear_success">Data was cleared successfully</string>

<string name="remote_title">Rotator preferences</string>
<string name="remote_switch">Enable remote control</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,6 @@ interface ISettingsManager {
"X-Comm" to "https://celestrak.com/NORAD/elements/gp.php?GROUP=x-comm&FORMAT=csv"
)

fun isFirstEverLaunchDone(): Boolean

fun setFirstEverLaunchDone()

fun loadStationLocator(): String

fun saveStationLocator(locator: String)
Expand All @@ -75,13 +71,13 @@ interface ISettingsManager {

fun setUseUTC(value: Boolean)

fun getUpdateTime(): Long
fun getLastUpdateTime(): Long

fun setUpdateTime(updateTime: Long)
fun setLastUpdateTime(updateTime: Long)

fun getUpdateEnabled(): Boolean
fun getAutoUpdateEnabled(): Boolean

fun setUpdateEnabled(value: Boolean)
fun setAutoUpdateEnabled(value: Boolean)

fun getUseCompass(): Boolean

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ class DataRepository(
}

private fun setUpdateSuccessful(updateTime: Long = System.currentTimeMillis()) {
settingsManager.setUpdateTime(updateTime)
settingsManager.setLastUpdateTime(updateTime)
_updateState.value = DataState.Success(updateTime)
}

Expand Down

0 comments on commit baf61ca

Please sign in to comment.