Skip to content

Instantly share code, notes, and snippets.

@manuelvicnt
manuelvicnt / LongLastingElement.kt
Created September 13, 2019 10:57
Make an object survive configuration changes. Replacement for onRetainCustomNonConfigurationInstance
/*
* Copyright 2019 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
@Provides
// configures a `Printer`
fun providePrinter(): Printer = NetworkPrinter()
@Provides
// configures a `NetworkPrinter`, not a plain `Printer`!
fun providePrinter() = NetworkPrinter()
@manuelvicnt
manuelvicnt / MyModule.kt
Created July 22, 2019 17:17
Inline method bodies Dagger
@Provides
fun provideNetworkPrinter() = NetworkPrinter()
@Provides
fun provideNetworkPrinter(): NetworkPrinter = NetworkPrinter()
@Provides
fun provideNetworkPrinter(): NetworkPrinter {
return NetworkPrinter()
}
@manuelvicnt
manuelvicnt / NetworkModule.kt
Last active July 23, 2019 15:33
Static @provides in different Dagger modules
@Module(includes = [OkHttpClientModule::java])
abstract class NetworkModule {
@Binds abstract fun provideService(retrofitService: RetrofitService): Service
}
@Module
object OkHttpClientModule {
@JvmStatic
@manuelvicnt
manuelvicnt / NetworkModule.kt
Last active July 23, 2019 15:33
Static @provides in an abstract Module
@Module
abstract class NetworkModule {
@Binds abstract fun provideService(retrofitService: RetrofitService): Service
@Module
companion object {
@JvmStatic
@Provides
@manuelvicnt
manuelvicnt / NetworkModule.kt
Last active July 23, 2019 15:33
Static @provides functions in Dagger with Kotlin
@Module
object NetworkModule {
@JvmStatic
@Provides
fun provideOkHttpClient(): OkHttpClient {
return OkHttpClient.Builder().build()
}
}
@manuelvicnt
manuelvicnt / build.gradle.kts
Last active August 9, 2019 15:45
Dagger kapt build improvements DSL kotlin
kapt {
arguments {
arg("dagger.formatGeneratedSource", "disabled")
arg("dagger.gradle.incremental", "enabled")
}
}
@manuelvicnt
manuelvicnt / build.gradle
Last active July 22, 2019 17:11
Dagger kapt build improvements
allprojects {
afterEvaluate {
extensions.findByName('kapt')?.arguments {
arg("dagger.formatGeneratedSource", "disabled")
arg("dagger.gradle.incremental", "enabled")
}
}
}
class MainViewModel(private val dependency: Any): ViewModel {
fun sampleMethod() {
viewModelScope.launch {
val hashCode = dependency.hashCode()
// TODO: do something with hashCode
}
}
class MainViewModelUnitTest {
@manuelvicnt
manuelvicnt / kotlinx-html-jvm-0.6.8-diff.txt
Created April 23, 2019 14:28
Adds devsite-heading to kotlinx-html-jvm-0.6.8 library
diff --git a/generate/src/main/resources/i18Languages.xsd b/generate/src/main/resources/i18Languages.xsd
index 4e3fc1b..6825a20 100644
--- a/generate/src/main/resources/i18Languages.xsd
+++ b/generate/src/main/resources/i18Languages.xsd
@@ -134,6 +134,7 @@
<xsd:enumeration value="de-lu"/>
<xsd:enumeration value="del"/>
+ <xsd:enumeration value="dheading"/>
<xsd:enumeration value="den"/>