mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-04 19:47:22 +00:00
v2.2.1 - Hotfix for ClassCastException in SharedPrefs
This commit is contained in:
1 parent
dbae12a4e4
commit
6c78d17faf
7 files changed
+38
-39
No files matched your search
@@ -26,13 +26,13 @@ import com.squareup.moshi.Moshi
|
||||
import com.squareup.moshi.Types
|
||||
import javax.inject.Inject
|
||||
|
||||
class PrefsRepo @Inject constructor(val preferences: SharedPreferences, val moshi: Moshi) {
|
||||
class PrefsRepo @Inject constructor(val preferences: SharedPreferences, moshi: Moshi) {
|
||||
|
||||
private val sourcesType = Types.newParameterizedType(List::class.java, TleSource::class.java)
|
||||
private val sourcesAdapter = moshi.adapter<List<TleSource>>(sourcesType)
|
||||
|
||||
companion object {
|
||||
const val keySources = "tleSources"
|
||||
const val keySources = "sourcesListJson"
|
||||
const val keyLatitude = "latitude"
|
||||
const val keyLongitude = "longitude"
|
||||
const val keyAltitude = "altitude"
|
||||
@@ -99,16 +99,16 @@ class PrefsRepo @Inject constructor(val preferences: SharedPreferences, val mosh
|
||||
}
|
||||
|
||||
fun loadTleSources(): List<TleSource> {
|
||||
preferences.getString(keySources, null)?.let { sourcesJson ->
|
||||
sourcesAdapter.fromJson(sourcesJson)?.let { loadedSources ->
|
||||
return if (loadedSources.isNotEmpty()) {
|
||||
loadedSources
|
||||
} else {
|
||||
loadDefaultSources()
|
||||
}
|
||||
return try {
|
||||
val sourcesString = preferences.getString(keySources, String())
|
||||
if (sourcesString.isNullOrEmpty()) {
|
||||
loadDefaultSources()
|
||||
} else {
|
||||
sourcesAdapter.fromJson(sourcesString) ?: loadDefaultSources()
|
||||
}
|
||||
} catch (exception: ClassCastException) {
|
||||
loadDefaultSources()
|
||||
}
|
||||
return loadDefaultSources()
|
||||
}
|
||||
|
||||
fun saveTleSources(sources: List<TleSource>) {
|
||||
|
||||
@@ -56,7 +56,7 @@ class SharedViewModel @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
fun getSources() = liveData { emit(prefsRepo.loadTleSources()) }
|
||||
fun getSources() = prefsRepo.loadTleSources()
|
||||
fun getSatItems() = satelliteRepo.getSatItems().asLiveData()
|
||||
fun getPasses(): LiveData<Result<MutableList<SatPass>>> = _passes
|
||||
fun getTransmittersForSat(satId: Int) =
|
||||
|
||||
@@ -45,7 +45,9 @@ class InfoFragment : Fragment(R.layout.fragment_info) {
|
||||
infoBmc.setOnClickListener {
|
||||
gotoUrl("https://www.buymeacoffee.com/rtbishop")
|
||||
}
|
||||
infoThanks.movementMethod = LinkMovementMethod.getInstance()
|
||||
val moveMethod = LinkMovementMethod.getInstance()
|
||||
infoThanks.movementMethod = moveMethod
|
||||
infoWarranty.movementMethod = moveMethod
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -41,27 +41,24 @@ class SourcesDialog : AppCompatDialogFragment() {
|
||||
|
||||
override fun onViewCreated(view: View, state: Bundle?) {
|
||||
super.onViewCreated(view, state)
|
||||
viewModel.getSources().observe(viewLifecycleOwner, { sources ->
|
||||
val sourcesAdapter = SourcesAdapter()
|
||||
sourcesAdapter.setSources(sources)
|
||||
DialogSourcesBinding.bind(view).apply {
|
||||
dialog?.window?.setLayout(
|
||||
WindowManager.LayoutParams.MATCH_PARENT,
|
||||
WindowManager.LayoutParams.WRAP_CONTENT
|
||||
)
|
||||
tleSourcesRecycler.apply {
|
||||
adapter = sourcesAdapter
|
||||
layoutManager = LinearLayoutManager(requireContext())
|
||||
}
|
||||
tleSourceBtnAdd.setOnClickListener {
|
||||
sourcesAdapter.addSource()
|
||||
}
|
||||
tleSourcesBtnPos.setOnClickListener {
|
||||
viewModel.updateEntriesFromSources(sourcesAdapter.getSources())
|
||||
dismiss()
|
||||
}
|
||||
tleSourcesBtnNeg.setOnClickListener { dismiss() }
|
||||
val sourcesAdapter = SourcesAdapter().apply { setSources(viewModel.getSources()) }
|
||||
DialogSourcesBinding.bind(view).apply {
|
||||
dialog?.window?.setLayout(
|
||||
WindowManager.LayoutParams.MATCH_PARENT,
|
||||
WindowManager.LayoutParams.WRAP_CONTENT
|
||||
)
|
||||
tleSourcesRecycler.apply {
|
||||
adapter = sourcesAdapter
|
||||
layoutManager = LinearLayoutManager(requireContext())
|
||||
}
|
||||
})
|
||||
tleSourceBtnAdd.setOnClickListener {
|
||||
sourcesAdapter.addSource()
|
||||
}
|
||||
tleSourcesBtnPos.setOnClickListener {
|
||||
viewModel.updateEntriesFromSources(sourcesAdapter.getSources())
|
||||
dismiss()
|
||||
}
|
||||
tleSourcesBtnNeg.setOnClickListener { dismiss() }
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user