From 02cae3c97d737956ce09e7d3599e6bf30de4f24f Mon Sep 17 00:00:00 2001 From: Kirill Nayduik Date: Thu, 1 Jul 2021 12:50:43 +0300 Subject: [PATCH] MVI fix: add another way of providing screen arguments --- .../ru/touchin/roboswag/mvi_arch/core/Extensions.kt | 9 +++++++++ .../ru/touchin/roboswag/mvi_arch/core/MviFragment.kt | 11 ++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 mvi-arch/src/main/java/ru/touchin/roboswag/mvi_arch/core/Extensions.kt diff --git a/mvi-arch/src/main/java/ru/touchin/roboswag/mvi_arch/core/Extensions.kt b/mvi-arch/src/main/java/ru/touchin/roboswag/mvi_arch/core/Extensions.kt new file mode 100644 index 0000000..ae46f6e --- /dev/null +++ b/mvi-arch/src/main/java/ru/touchin/roboswag/mvi_arch/core/Extensions.kt @@ -0,0 +1,9 @@ +package ru.touchin.roboswag.mvi_arch.core + +import android.os.Parcelable + +/** + * Used for setting arguments and initial state into Fragments + */ +fun > + TFragment.withArgs(navArgs: NavArgs) = apply { initArgs(navArgs) } diff --git a/mvi-arch/src/main/java/ru/touchin/roboswag/mvi_arch/core/MviFragment.kt b/mvi-arch/src/main/java/ru/touchin/roboswag/mvi_arch/core/MviFragment.kt index 80e7758..e373227 100644 --- a/mvi-arch/src/main/java/ru/touchin/roboswag/mvi_arch/core/MviFragment.kt +++ b/mvi-arch/src/main/java/ru/touchin/roboswag/mvi_arch/core/MviFragment.kt @@ -46,8 +46,7 @@ import javax.inject.Inject * @author Created by Max Bachinsky and Ivan Vlasov at Touch Instinct. */ abstract class MviFragment( - @LayoutRes layout: Int, - navArgs: NavArgs = EmptyState as NavArgs + @LayoutRes layout: Int ) : BaseFragment(layout) where NavArgs : Parcelable, State : ViewState, @@ -70,9 +69,11 @@ abstract class MviFragment( lateinit var viewModelMap: MutableMap, ViewModelAssistedFactory> init { - arguments?.putParcelable(INIT_ARGS_KEY, navArgs) ?: let { - arguments = bundleOf(INIT_ARGS_KEY to navArgs) - } + arguments = bundleOf(INIT_ARGS_KEY to EmptyState) + } + + fun initArgs(navArgs: NavArgs) { + arguments?.putParcelable(INIT_ARGS_KEY, navArgs) } @CallSuper