121 lines
No EOL
4.3 KiB
Kotlin
121 lines
No EOL
4.3 KiB
Kotlin
package ani.dantotsu
|
|
|
|
import android.annotation.SuppressLint
|
|
import android.app.Activity
|
|
import android.content.Context
|
|
import android.os.Bundle
|
|
import androidx.multidex.MultiDex
|
|
import androidx.multidex.MultiDexApplication
|
|
import ani.dantotsu.aniyomi.anime.custom.AppModule
|
|
import ani.dantotsu.aniyomi.anime.custom.PreferenceModule
|
|
import eu.kanade.tachiyomi.data.notification.Notifications
|
|
import tachiyomi.core.util.system.logcat
|
|
import ani.dantotsu.others.DisabledReports
|
|
import ani.dantotsu.parsers.AnimeSources
|
|
import ani.dantotsu.parsers.MangaSources
|
|
import com.google.android.material.color.DynamicColors
|
|
import com.google.firebase.crashlytics.ktx.crashlytics
|
|
import com.google.firebase.ktx.Firebase
|
|
import eu.kanade.tachiyomi.extension.anime.AnimeExtensionManager
|
|
import eu.kanade.tachiyomi.extension.manga.MangaExtensionManager
|
|
import kotlinx.coroutines.CoroutineScope
|
|
import kotlinx.coroutines.Dispatchers
|
|
import kotlinx.coroutines.flow.first
|
|
import kotlinx.coroutines.launch
|
|
import logcat.AndroidLogcatLogger
|
|
import logcat.LogPriority
|
|
import logcat.LogcatLogger
|
|
import uy.kohesive.injekt.Injekt
|
|
import uy.kohesive.injekt.api.get
|
|
import java.util.Locale
|
|
|
|
@SuppressLint("StaticFieldLeak")
|
|
class App : MultiDexApplication() {
|
|
private lateinit var animeExtensionManager: AnimeExtensionManager
|
|
private lateinit var mangaExtensionManager: MangaExtensionManager
|
|
override fun attachBaseContext(base: Context?) {
|
|
super.attachBaseContext(base)
|
|
MultiDex.install(this)
|
|
}
|
|
|
|
init {
|
|
instance = this
|
|
}
|
|
|
|
val mFTActivityLifecycleCallbacks = FTActivityLifecycleCallbacks()
|
|
|
|
override fun onCreate() {
|
|
super.onCreate()
|
|
val sharedPreferences = getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)
|
|
val useMaterialYou = sharedPreferences.getBoolean("use_material_you", false)
|
|
if(useMaterialYou) {
|
|
DynamicColors.applyToActivitiesIfAvailable(this)
|
|
}
|
|
registerActivityLifecycleCallbacks(mFTActivityLifecycleCallbacks)
|
|
|
|
Firebase.crashlytics.setCrashlyticsCollectionEnabled(!DisabledReports)
|
|
initializeNetwork(baseContext)
|
|
|
|
Injekt.importModule(AppModule(this))
|
|
Injekt.importModule(PreferenceModule(this))
|
|
|
|
setupNotificationChannels()
|
|
if (!LogcatLogger.isInstalled) {
|
|
LogcatLogger.install(AndroidLogcatLogger(LogPriority.VERBOSE))
|
|
}
|
|
|
|
animeExtensionManager = Injekt.get()
|
|
mangaExtensionManager = Injekt.get()
|
|
|
|
val animeScope = CoroutineScope(Dispatchers.Default)
|
|
animeScope.launch {
|
|
animeExtensionManager.findAvailableExtensions()
|
|
logger("Anime Extensions: ${animeExtensionManager.installedExtensionsFlow.first()}")
|
|
AnimeSources.init(animeExtensionManager.installedExtensionsFlow)
|
|
}
|
|
val mangaScope = CoroutineScope(Dispatchers.Default)
|
|
mangaScope.launch {
|
|
mangaExtensionManager.findAvailableExtensions()
|
|
logger("Manga Extensions: ${mangaExtensionManager.installedExtensionsFlow.first()}")
|
|
MangaSources.init(mangaExtensionManager.installedExtensionsFlow)
|
|
}
|
|
|
|
}
|
|
|
|
private fun setupNotificationChannels() {
|
|
try {
|
|
Notifications.createChannels(this)
|
|
} catch (e: Exception) {
|
|
logcat(LogPriority.ERROR, e) { "Failed to modify notification channels" }
|
|
}
|
|
}
|
|
|
|
inner class FTActivityLifecycleCallbacks : ActivityLifecycleCallbacks {
|
|
var currentActivity: Activity? = null
|
|
override fun onActivityCreated(p0: Activity, p1: Bundle?) {}
|
|
override fun onActivityStarted(p0: Activity) {
|
|
currentActivity = p0
|
|
}
|
|
|
|
override fun onActivityResumed(p0: Activity) {
|
|
currentActivity = p0
|
|
}
|
|
|
|
override fun onActivityPaused(p0: Activity) {}
|
|
override fun onActivityStopped(p0: Activity) {}
|
|
override fun onActivitySaveInstanceState(p0: Activity, p1: Bundle) {}
|
|
override fun onActivityDestroyed(p0: Activity) {}
|
|
}
|
|
|
|
companion object {
|
|
private var instance: App? = null
|
|
var context : Context? = null
|
|
fun currentContext(): Context? {
|
|
return instance?.mFTActivityLifecycleCallbacks?.currentActivity ?: context
|
|
}
|
|
|
|
fun currentActivity(): Activity? {
|
|
return instance?.mFTActivityLifecycleCallbacks?.currentActivity
|
|
}
|
|
}
|
|
} |