Skip to content

Commit

Permalink
Update getViewModel methods
Browse files Browse the repository at this point in the history
  • Loading branch information
Sub6Resources committed Oct 8, 2018
1 parent 904dd3e commit e430cc5
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
8 changes: 6 additions & 2 deletions app/src/main/java/com/sub6resources/utilities/BaseActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import com.google.android.material.navigation.NavigationView
import org.koin.androidx.viewmodel.ext.android.getViewModelByClass
import org.koin.core.parameter.emptyParameterDefinition


abstract class BaseActivity(private val activityLayout: Int) : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
Expand Down Expand Up @@ -301,6 +303,8 @@ abstract class BaseActivity(private val activityLayout: Int) : AppCompatActivity
app.savedCallbacks[requestCode](resultCode, data)
}

inline fun <reified T : ViewModel> getViewModel(): Lazy<T> = lazy { ViewModelProvider(this, ViewModelProvider.NewInstanceFactory()).get(T::class.java) }
inline fun <reified T : ViewModel> getGlobalViewModel(): Lazy<T> = lazy { ViewModelProvider(app, ViewModelProvider.NewInstanceFactory()).get(T::class.java) }
// inline fun <reified T : ViewModel> getViewModel(): Lazy<T> = lazy { ViewModelProvider(this, ViewModelFactory).get(T::class.java) }
inline fun <reified T : ViewModel> getViewModel(): Lazy<T> = lazy { getViewModelByClass(T::class, null, null, {this}, emptyParameterDefinition()) }
// inline fun <reified T : ViewModel> getGlobalViewModel(): Lazy<T> = lazy { ViewModelProvider(app, ViewModelFactory).get(T::class.java) }
inline fun <reified T : ViewModel> getGlobalViewModel(): Lazy<T> = lazy { getViewModelByClass(T::class, null, null, {app}, emptyParameterDefinition()) }
}
10 changes: 8 additions & 2 deletions app/src/main/java/com/sub6resources/utilities/BaseFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import org.koin.androidx.viewmodel.ext.android.getViewModel
import org.koin.androidx.viewmodel.ext.android.getViewModelByClass
import org.koin.core.parameter.emptyParameterDefinition


abstract class BaseFragment : Fragment() {
Expand Down Expand Up @@ -79,7 +81,11 @@ abstract class BaseFragment : Fragment() {

inline fun <reified T : ViewModel> getViewModel(): Lazy<T> = lazy { (this as Fragment).getViewModel<T>() }

inline fun <reified T : ViewModel> Fragment.getSharedViewModel(): Lazy<T> = lazy { ViewModelProvider(baseActivity, ViewModelProvider.NewInstanceFactory()).get(T::class.java) }
// inline fun <reified T : ViewModel> Fragment.getSharedViewModel(): Lazy<T> = lazy { ViewModelProvider(baseActivity, ViewModelFactory).get(T::class.java) }

inline fun <reified T : ViewModel> getGlobalViewModel(): Lazy<T> = lazy { ViewModelProvider(baseActivity.app, ViewModelProvider.NewInstanceFactory()).get(T::class.java) }
inline fun <reified T : ViewModel> Fragment.getSharedViewModel(): Lazy<T> = lazy { getViewModelByClass(T::class, null, null, {baseActivity}, emptyParameterDefinition()) }

// inline fun <reified T : ViewModel> getGlobalViewModel(): Lazy<T> = lazy { ViewModelProvider(baseActivity.app, ViewModelFactory).get(T::class.java) }

inline fun <reified T : ViewModel> getGlobalViewModel(): Lazy<T> = lazy { getViewModelByClass(T::class, null, null, {baseActivity.app}, emptyParameterDefinition()) }
}

0 comments on commit e430cc5

Please sign in to comment.