Skip to content

Instantly share code, notes, and snippets.

View arnaudgiuliani's full-sized avatar

Arnaud Giuliani arnaudgiuliani

View GitHub Profile
@arnaudgiuliani
arnaudgiuliani / HelloApplication.kt
Created December 13, 2017 10:51
Koin sample Kotlin application
// A model class
class HelloModel(val who: String = "Koin")
// Service interface
interface HelloService {
fun hello(): String
}
// Service implementation with injected helloModel instance
class HelloServiceImpl(val helloModel: HelloModel) : HelloService {
@arnaudgiuliani
arnaudgiuliani / HelloController.kt
Created January 5, 2018 13:47
HelloController for Spark, Service & Repository
class HelloController(val service: HelloService) {
init {
get("/hello") {
service.sayHello()
}
}
}
@arnaudgiuliani
arnaudgiuliani / HelloController.kt
Created January 5, 2018 13:54
Start Spark with a controller
// A simple Spark controller
class HelloController {
init {
get("/hello") {
"Hello !"
}
}
}
@arnaudgiuliani
arnaudgiuliani / JavaApp.java
Created February 27, 2018 16:04
Koin for Android Java app
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// Call helper to start Koin
JavaAppKoinKt.start(this);
}
}
@arnaudgiuliani
arnaudgiuliani / DetailPresenter.kt
Created March 2, 2018 17:22
Koin 0.9.0 - Dynamic parameter setup
class DetailPresenter(val view : DetailContract.View) : DetailContract.Presenter {
override fun getDetail(id: String) {
// Get detail and notify it to view ...
}
}
@arnaudgiuliani
arnaudgiuliani / DetailActivity.kt
Created March 2, 2018 17:23
Koin 0.9.0 - Dynamic parameter from Activity
class DetailActivity : AppCompatActivity(), DetailContract.View {
val presenter: DetailContract.Presenter by inject(parameters =
mapOf("DETAIL_ACTIVITY" to this))
}
@arnaudgiuliani
arnaudgiuliani / module.kt
Created March 2, 2018 17:24
Koin 0.9.0 - Context isolation
val myModule = applicationContext {
context("A"){
context("B"){
}
}
context("C"){
@arnaudgiuliani
arnaudgiuliani / context.kt
Created March 2, 2018 17:26
Koin 0.9.0 - Context release callback
// Listen with ContextCallback
registerContextCallBack(object : ContextCallback{
// Notified on context dropped
override fun onContextReleased(contextName: String) {
println("Context $contextName has been dropped")
}
})
@arnaudgiuliani
arnaudgiuliani / DetailActivity.kt
Created March 2, 2018 17:41
Koin 0.9.0 - Dynamic parameter with ViewModel
class DetailActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
//...
val detailViewModel = getViewModel<DetailViewModel>(parameters = mapOf("id" to id))
detailViewModel.getDetail()
}
}
@arnaudgiuliani
arnaudgiuliani / MyActivity.kt
Created March 13, 2018 08:56
Koin 0.9.1 - create different ViewModel instances
class MyActivity() : AppCompatActivity(){
val myModel by viewModel<MyViewModel>()
}