SpotiFlyer/android/src/main/java/com/shabinder/spotiflyer/App.kt

98 lines
3.4 KiB
Kotlin
Raw Normal View History

2021-01-26 13:54:28 +01:00
/*
* Copyright (c) 2021 Shabinder Singh
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
2021-02-25 14:28:33 +01:00
package com.shabinder.spotiflyer
2021-01-26 13:54:28 +01:00
2021-01-31 12:33:41 +01:00
import android.app.Application
import android.content.Context
2021-02-09 13:31:50 +01:00
import com.shabinder.common.di.initKoin
2021-02-25 14:28:33 +01:00
import com.shabinder.spotiflyer.di.appModule
import org.acra.config.httpSender
import org.acra.config.notification
import org.acra.data.StringFormat
import org.acra.ktx.initAcra
import org.acra.sender.HttpSender
2021-01-31 12:33:41 +01:00
import org.koin.android.ext.koin.androidContext
import org.koin.android.ext.koin.androidLogger
2021-03-18 01:59:29 +01:00
import org.koin.core.component.KoinComponent
2021-04-28 15:38:08 +02:00
import org.koin.core.logger.Level
import org.matomo.sdk.Matomo
import org.matomo.sdk.Tracker
import org.matomo.sdk.TrackerBuilder
2021-01-26 13:54:28 +01:00
2021-01-31 12:33:41 +01:00
class App: Application(), KoinComponent {
companion object {
const val SIGNATURE_HEX = "53304f6d75736a2f30484230334c454b714753525763724259444d3d0a"
}
val tracker: Tracker by lazy {
TrackerBuilder.createDefault(
"https://matomo.spotiflyer.ml/matomo.php", 1)
.build(Matomo.getInstance(this)).apply {
if (BuildConfig.DEBUG) {
/*Timber.plant(DebugTree())
addTrackingCallback {
Timber.d(it.toMap().toString())
it
}*/
}
}
}
2021-01-31 12:33:41 +01:00
override fun onCreate() {
super.onCreate()
2021-04-28 11:24:56 +02:00
val loggingEnabled = true
// KOIN - DI
2021-04-28 11:24:56 +02:00
initKoin(loggingEnabled) {
2021-04-28 19:22:33 +02:00
androidLogger(Level.NONE) // No virtual method elapsedNow
2021-01-31 12:33:41 +01:00
androidContext(this@App)
2021-04-28 11:24:56 +02:00
modules(appModule(loggingEnabled))
2021-01-31 12:33:41 +01:00
}
}
@Suppress("SpellCheckingInspection")
override fun attachBaseContext(base: Context?) {
super.attachBaseContext(base)
// Crashlytics
initAcra {
buildConfigClass = BuildConfig::class.java
reportFormat = StringFormat.JSON
/*
* Prompt User Before Sending Any Crash Report
* Obeying `F-Droid Inclusion Privacy Rules`
* */
notification {
title = getString(R.string.acra_notification_title)
text = getString(R.string.acra_notification_text)
channelName = getString(R.string.acra_notification_channel)
channelDescription = getString(R.string.acra_notification_channel_desc)
sendOnClick = true
}
// Send Crash Report to self hosted Acrarium (FOSS)
httpSender {
uri = "https://acrarium.spotiflyer.ml/report"
basicAuthLogin = "sDj2xCKQIxw0dujf"
basicAuthPassword = "O83du0TsgsDJ69zN"
httpMethod = HttpSender.Method.POST
connectionTimeout = 15000
socketTimeout = 20000
compress = true
}
}
}
2021-01-31 12:33:41 +01:00
}