Replace Stetho with Flipper, add LeakCanary

This commit is contained in:
Kirill Kamakin
2021-11-28 21:55:29 +03:00
parent 81fb1ae984
commit 25f14226df
8 changed files with 182 additions and 39 deletions

View File

@@ -1,14 +0,0 @@
package gq.kirmanak.mealient
import android.app.Application
import dagger.hilt.android.HiltAndroidApp
import timber.log.Timber
@HiltAndroidApp
class App : Application() {
override fun onCreate() {
super.onCreate()
if (BuildConfig.DEBUG) Timber.plant(Timber.DebugTree())
Timber.v("onCreate() called")
}
}

View File

@@ -1,27 +1,21 @@
package gq.kirmanak.mealient.data.impl
import gq.kirmanak.mealient.BuildConfig
import gq.kirmanak.mealient.data.auth.impl.AuthOkHttpInterceptor
import okhttp3.Interceptor
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import timber.log.Timber
import javax.inject.Inject
class OkHttpBuilder @Inject constructor(
private val authOkHttpInterceptor: AuthOkHttpInterceptor
class OkHttpBuilder
@Inject
constructor(
// Use @JvmSuppressWildcards because otherwise dagger can't inject it (https://stackoverflow.com/a/43149382)
private val interceptors: Set<@JvmSuppressWildcards Interceptor>
) {
fun buildOkHttp(): OkHttpClient {
Timber.v("buildOkHttp() called")
val builder = OkHttpClient.Builder()
if (BuildConfig.DEBUG) builder.addNetworkInterceptor(buildLoggingInterceptor())
builder.addNetworkInterceptor(authOkHttpInterceptor)
return builder.build()
return OkHttpClient.Builder()
.apply { for (interceptor in interceptors) addNetworkInterceptor(interceptor) }
.build()
}
private fun buildLoggingInterceptor(): Interceptor {
val interceptor = HttpLoggingInterceptor { message -> Timber.tag("OkHttp").v(message) }
interceptor.level = HttpLoggingInterceptor.Level.BODY
return interceptor
}
}
}

View File

@@ -4,26 +4,33 @@ import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import dagger.multibindings.IntoSet
import gq.kirmanak.mealient.data.auth.AuthDataSource
import gq.kirmanak.mealient.data.auth.AuthRepo
import gq.kirmanak.mealient.data.auth.AuthStorage
import gq.kirmanak.mealient.data.auth.impl.AuthDataSourceImpl
import gq.kirmanak.mealient.data.auth.impl.AuthOkHttpInterceptor
import gq.kirmanak.mealient.data.auth.impl.AuthRepoImpl
import gq.kirmanak.mealient.data.auth.impl.AuthStorageImpl
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.serialization.ExperimentalSerializationApi
import okhttp3.Interceptor
@ExperimentalCoroutinesApi
@ExperimentalSerializationApi
@Module
@InstallIn(SingletonComponent::class)
interface AuthModule {
@Binds
fun bindAuthDataSource(authDataSourceImpl: AuthDataSourceImpl): AuthDataSource
@Binds
fun bindAuthDataSource(authDataSourceImpl: AuthDataSourceImpl): AuthDataSource
@Binds
fun bindAuthStorage(authStorageImpl: AuthStorageImpl): AuthStorage
@Binds
fun bindAuthStorage(authStorageImpl: AuthStorageImpl): AuthStorage
@Binds
fun bindAuthRepo(authRepo: AuthRepoImpl): AuthRepo
}
@Binds
fun bindAuthRepo(authRepo: AuthRepoImpl): AuthRepo
@Binds
@IntoSet
fun bindAuthInterceptor(authOkHttpInterceptor: AuthOkHttpInterceptor): Interceptor
}