Skip to content

Instantly share code, notes, and snippets.

View marcinOz's full-sized avatar
💙

Marcin marcinOz

💙
View GitHub Profile
getKoin().createScope("session")
module {
// Shared user session data
scope("session") { UserSession() }
}
class MyActivity : AppCompatActivity() {
// inject Presenter instance, tied to current MyActivity's scope
val presenter : Presenter by inject()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// bind current lifecycle to Activity's scope
bindScope(createScope("activity"))
// A scoped Presenter
module {
scope("activity") { Presenter() }
}
// Inject MyPresenter
val presenter : MyPresenter by inject()
companion object {
fun getComponent(context: Context) =
(context.applicationContext as WTWApplication).appComponent
}
lateinit var appComponent: AppComponent
override fun onCreate() {
super.onCreate()
appComponent = DaggerAppComponent
override fun onCreate() {
super.onCreate()
// start Koin context
startKoin(this, listOf(appModule))
}
val appModule = module {
// single instance of HelloRepository
singleBy<HelloRepository, HelloRepositoryImpl>()
// Simple Presenter Factory
factory<MySimplePresenter>()
}
val appModule = module {
// single instance of HelloRepository (which will be reused)
single { HelloRepositoryImpl() }
// Simple Presenter Factory (creates every time new)
factory { MySimplePresenter(get()) }
}
sealed class ResourceState<T>
class LoadingState<T> : ResourceState<T>() {
override fun hashCode(): Int = javaClass.hashCode()
override fun equals(other: Any?) = equalz(other)
}
class EmptyState<T> : ResourceState<T>() {
override fun hashCode(): Int = javaClass.hashCode()
override fun equals(other: Any?) = equalz(other)
}