Skip to content

Instantly share code, notes, and snippets.

@okalman
okalman / MainActivity.kt
Created May 28, 2020 06:06
MainActivity
val scopeMainActivity= ScopeSet(named<MainActivity>()).apply {
viewModel { (activity: Actitivty) ->
val data = activity.intent.getStringExtra("DATA")
MainViewModel(MainViewState(), data)
}
}
class MainActivity : BaseActivity<MainViewModel, MainViewState, ActivityMainBinding>(), MainView {
override var viewModelFactory: MainViewModelFactory = MainViewModelFactory(Provider {
currentScope.viewModel(
@okalman
okalman / App.kt
Created May 27, 2020 13:59
App with koin
class App : Application() {
override fun onCreate() {
super.onCreate()
startKoin {
androidContext(this@App)
modules(
listOf(
applicationModule,
interactorModule,
activityModule,
@okalman
okalman / modules.kt
Created May 27, 2020 13:58
koin modules
val applicationModule = module {
...
}
val activityModule = module {
declareScope(scopeMainActivity)
...
}
val interactorModule = module {
factory { SomeInteractor(get()) }
@okalman
okalman / MainViewModelFactory.kt
Created May 27, 2020 13:54
MainViewModelFactory modified
class MainViewModelFactory constructor(
override val viewModelProvider: Provider<MainViewModel>
) : BaseViewModelFactory<MainViewModel>() {
override val viewModelClass = MainViewModel::class
}
@okalman
okalman / MainActivity.kt
Created May 27, 2020 13:52
MainActivity modified
class MainActivity : BaseActivity<MainViewModel, MainViewState, ActivityMainBinding>(), MainView {
override var viewModelFactory: MainViewModelFactory = MainViewModelFactory(Provider {
currentScope.viewModel(this, MainViewModel::class).value
})
...
}
@okalman
okalman / MainViewModelFactory.kt
Created May 27, 2020 13:51
MainViewModelFactory
class MainViewModelFactory @Inject constructor(
override val viewModelProvider: Provider<MainViewModel>
) : BaseViewModelFactory<MainViewModel>() {
override val viewModelClass = MainViewModel::class
}
@okalman
okalman / MainActivity.kt
Created May 27, 2020 13:49
MainActivity
class MainActivity : BaseActivity<MainViewModel, MainViewState, ActivityMainBinding>(), MainView {
@Inject override lateinit var viewModelFactory: MainViewModelFactory
...
}
@okalman
okalman / App.kt
Created May 27, 2020 13:48
App modified
class App : Application() {
...
}
class App : DaggerApplication() {
...
}
@okalman
okalman / BaseBindingFragment.kt
Created May 27, 2020 13:42
BaseBindingFragment modified
abstract class BaseBindingFragment<VM : BaseViewModel<VS>, VS : ViewState, B : ViewDataBinding> :
BindingViewModelFragment<VM, VS, B>() {
override val brViewModelVariableId = BR.viewModel
override val brViewStateVariableId = BR.viewState
override val brViewVariableId = BR.view
}