Should fix the impossible ViewModel with complex parameter issue

od
Laurent 6 years ago
parent 0b20482b21
commit 763efb13a9
  1. 32
      app/src/main/java/net/pokeranalytics/android/ui/activity/components/ReportActivity.kt
  2. 1
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ProgressReportFragment.kt
  3. 25
      app/src/main/java/net/pokeranalytics/android/ui/viewmodel/ReportViewModel.kt

@ -7,26 +7,24 @@ import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProviders
import net.pokeranalytics.android.calculus.Report
import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.ui.viewmodel.ReportViewModel
import net.pokeranalytics.android.ui.viewmodel.ReportViewModelFactory
import net.pokeranalytics.android.ui.viewmodel.ViewModelHolder
class ReportParameters(var report: Report, var title: String, var stat: Stat? = null, var showAggregationChoices: Boolean = true)
abstract class ReportActivity : PokerAnalyticsActivity(), ViewModelHolder {
private val viewModelFactory: ReportViewModelFactory by lazy {
ReportViewModel.parameters?.let {
val stat = it.stat ?: it.report.options.stats.first()
ReportViewModelFactory(it.report, stat, it.title, it.showAggregationChoices)
} ?: run {
throw PAIllegalStateException("null report parameters")
}
}
// private val viewModelFactory: ReportViewModelFactory by lazy {
// ReportViewModel.parameters?.let {
// val stat = it.stat ?: it.report.options.stats.first()
// ReportViewModelFactory(it.report, stat, it.title, it.showAggregationChoices)
// } ?: run {
// throw PAIllegalStateException("null report parameters")
// }
// }
override val viewModel: ReportViewModel by lazy {
ViewModelProviders.of(this, viewModelFactory).get(ReportViewModel::class.java)
ViewModelProviders.of(this).get(ReportViewModel::class.java)
}
companion object {
@ -54,7 +52,7 @@ abstract class ReportActivity : PokerAnalyticsActivity(), ViewModelHolder {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// this.initViewModelWithParameters()
this.initViewModelWithParameters()
}
override fun onStart() {
@ -65,11 +63,11 @@ abstract class ReportActivity : PokerAnalyticsActivity(), ViewModelHolder {
private fun initViewModelWithParameters() {
ReportViewModel.parameters?.let {
// this.viewModel.report = it.report
// this.viewModel.title = it.title
// val stat = it.stat ?: it.report.options.stats.first()
// this.viewModel.stat = stat
// this.viewModel.showAggregationChoices = it.showAggregationChoices
this.viewModel.report = it.report
this.viewModel.title = it.title
val stat = it.stat ?: it.report.options.stats.first()
this.viewModel.stat = stat
this.viewModel.showAggregationChoices = it.showAggregationChoices
// Crashlytics.log("initViewModelWithParameters, stat = ${stat.uniqueIdentifier}")

@ -26,7 +26,6 @@ import net.pokeranalytics.android.ui.extensions.hideWithAnimation
import net.pokeranalytics.android.ui.extensions.px
import net.pokeranalytics.android.ui.extensions.showWithAnimation
import net.pokeranalytics.android.ui.fragment.GraphFragment
import net.pokeranalytics.android.ui.viewmodel.ReportViewModelFactory
import timber.log.Timber
import java.util.*

@ -1,30 +1,17 @@
package net.pokeranalytics.android.ui.viewmodel
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.Report
import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.ui.activity.components.ReportParameters
class ReportViewModelFactory(val report: Report,
val stat: Stat,
val title: String,
val showAggregationChoices: Boolean = true) : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return ReportViewModel(report, stat, title, showAggregationChoices) as T
}
}
class ReportViewModel(
var report: Report,
var stat: Stat,
var title: String,
var showAggregationChoices: Boolean = true) : ViewModel() {
class ReportViewModel : ViewModel() {
// var report: Report? = null
// var title: String = ""
// var stat: Stat? = null
// var showAggregationChoices: Boolean = true
var report: Report = Report(Calculator.Options())
var stat: Stat = Stat.NET_RESULT
var title: String = ""
var showAggregationChoices: Boolean = true
companion object {

Loading…
Cancel
Save