Skip to content

Instantly share code, notes, and snippets.

@Elbar
Created November 26, 2020 05:24
Show Gist options
  • Save Elbar/73fcf1207a45081c3cfcaee2ad118268 to your computer and use it in GitHub Desktop.
Save Elbar/73fcf1207a45081c3cfcaee2ad118268 to your computer and use it in GitHub Desktop.
package me.sample
import android.content.Context
import androidx.multidex.MultiDex
import androidx.multidex.MultiDexApplication
import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.imagepipeline.core.ImagePipelineConfig
import com.facebook.stetho.Stetho
import com.treebo.internetavailabilitychecker.InternetAvailabilityChecker
import me.sample.auth.authModule
import me.sample.font.FontReplacer
import me.sample.network.networkModule
import me.sample.notifications.notificationsModule
import me.sample.pincode.pinCodeModule
import me.sample.settings.settingsModule
import me.sample.transaction.transactionModule
import me.sample.withdrawal.withdrawalModule
import org.koin.android.ext.koin.androidContext
import org.koin.core.context.startKoin
import timber.log.Timber
class App : MultiDexApplication() {
override fun onCreate() {
super.onCreate()
initCustomFont()
initFresco()
initStetho()
initLogger()
startKoin {
androidContext(this@App)
modules(
listOf(
mainModule,
networkModule,
authModule,
settingsModule,
transactionModule,
withdrawalModule,
notificationsModule,
pinCodeModule
)
)
}
InternetAvailabilityChecker.init(this)
}
private fun initFresco() {
val config = ImagePipelineConfig.newBuilder(this)
.setDownsampleEnabled(true)
.build()
Fresco.initialize(this, config)
}
private fun initStetho() {
val initializerBuilder = Stetho.newInitializerBuilder(this)
initializerBuilder.enableWebKitInspector(
Stetho.defaultInspectorModulesProvider(this)
)
initializerBuilder.enableDumpapp(
Stetho.defaultDumperPluginsProvider(this)
)
val initializer = initializerBuilder.build()
Stetho.initialize(initializer)
}
private fun initCustomFont() {
with(FontReplacer.build(applicationContext)) {
setDefaultFont("Poppins-Regular.ttf")
setBlackFont("Poppins-Black.ttf")
setMediumFont("Poppins-Medium.ttf")
setLightFont("Poppins-Light.ttf")
applyFont()
}
}
private fun initLogger() {
val tree = if (BuildConfig.DEBUG) Timber.DebugTree() else CrashlyticsTree()
Timber.plant(tree)
}
override fun attachBaseContext(base: Context?) {
super.attachBaseContext(base)
MultiDex.install(this)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment