From 763efb13a935c64975c90286333730d8f212a5b0 Mon Sep 17 00:00:00 2001 From: Laurent Date: Wed, 20 Nov 2019 15:50:01 +0100 Subject: [PATCH] Should fix the impossible ViewModel with complex parameter issue --- .../ui/activity/components/ReportActivity.kt | 32 +++++++++---------- .../fragment/report/ProgressReportFragment.kt | 1 - .../android/ui/viewmodel/ReportViewModel.kt | 27 ++++------------ 3 files changed, 22 insertions(+), 38 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/components/ReportActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/components/ReportActivity.kt index d2214c11..2970abfd 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/components/ReportActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/components/ReportActivity.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}") diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ProgressReportFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ProgressReportFragment.kt index 7de14353..08841c75 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ProgressReportFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ProgressReportFragment.kt @@ -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.* diff --git a/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/ReportViewModel.kt b/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/ReportViewModel.kt index 9b9a067c..1e7a9a5e 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/ReportViewModel.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/ReportViewModel.kt @@ -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 create(modelClass: Class): 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() { - -// var report: Report? = null -// var title: String = "" -// var stat: Stat? = null -// var showAggregationChoices: Boolean = true +class ReportViewModel : ViewModel() { + + var report: Report = Report(Calculator.Options()) + var stat: Stat = Stat.NET_RESULT + var title: String = "" + var showAggregationChoices: Boolean = true companion object {