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

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

Loading…
Cancel
Save