From c0f3fed142da8be85b182c050dedc04ed6640e76 Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Tue, 6 Feb 2024 01:10:12 -0600 Subject: [PATCH] feat: F-Droid flavor --- app/build.gradle | 32 +++++++++++++------ .../res/drawable/anim_splash.xml} | 0 .../crashlytics/CrashlyticsFactory.kt | 9 ++++++ .../java/ani/dantotsu/others/AppUpdater.kt | 9 ++++++ .../crashlytics/CrashlyticsFactory.kt | 9 ++++++ .../crashlytics/FirebaseCrashlytics.kt | 28 ++++++++++++++++ .../java/ani/dantotsu/others/AppUpdater.kt | 2 +- app/src/main/java/ani/dantotsu/App.kt | 24 +++++++------- app/src/main/java/ani/dantotsu/Functions.kt | 6 ++-- .../aniyomi/anime/custom/InjektModules.kt | 7 ++++ .../connections/anilist/AnilistViewModel.kt | 5 ++- .../crashlytics/CrashlyticsInterface.kt | 9 ++++++ .../crashlytics/CrashlyticsStub.kt | 24 ++++++++++++++ .../download/anime/AnimeDownloaderService.kt | 6 ++-- .../download/anime/OfflineAnimeFragment.kt | 6 ++-- .../download/manga/MangaDownloaderService.kt | 6 ++-- .../download/manga/OfflineMangaFragment.kt | 6 ++-- .../download/novel/NovelDownloaderService.kt | 4 +-- .../java/ani/dantotsu/home/LoginFragment.kt | 3 -- .../ani/dantotsu/media/anime/ExoplayerView.kt | 6 ++-- .../media/anime/SelectorDialogFragment.kt | 6 ++-- .../manga/mangareader/MangaReaderActivity.kt | 10 +++--- .../novel/novelreader/NovelReaderActivity.kt | 8 +++-- .../ani/dantotsu/others/DisabledReports.kt | 2 +- .../ani/dantotsu/parsers/AniyomiAdapter.kt | 2 -- .../parsers/novel/NovelExtensionLoader.kt | 6 ++-- .../settings/AnimeExtensionsFragment.kt | 4 +-- .../InstalledAnimeExtensionsFragment.kt | 4 +-- .../InstalledMangaExtensionsFragment.kt | 4 +-- .../InstalledNovelExtensionsFragment.kt | 4 +-- .../settings/MangaExtensionsFragment.kt | 4 +-- .../settings/NovelExtensionsFragment.kt | 4 +-- .../settings/PlayerSettingsActivity.kt | 1 - .../ani/dantotsu/settings/SettingsActivity.kt | 23 +++++++------ app/src/main/res/layout/fragment_login.xml | 27 +++++++++------- build.gradle | 4 +-- gradle.properties | 1 - 37 files changed, 218 insertions(+), 97 deletions(-) rename app/src/{main/res/drawable/anim_splash_beta.xml => debug/res/drawable/anim_splash.xml} (100%) create mode 100644 app/src/fdroid/java/ani/dantotsu/connections/crashlytics/CrashlyticsFactory.kt create mode 100644 app/src/fdroid/java/ani/dantotsu/others/AppUpdater.kt create mode 100644 app/src/google/java/ani/dantotsu/connections/crashlytics/CrashlyticsFactory.kt create mode 100644 app/src/google/java/ani/dantotsu/connections/crashlytics/FirebaseCrashlytics.kt rename app/src/{main => google}/java/ani/dantotsu/others/AppUpdater.kt (99%) create mode 100644 app/src/main/java/ani/dantotsu/connections/crashlytics/CrashlyticsInterface.kt create mode 100644 app/src/main/java/ani/dantotsu/connections/crashlytics/CrashlyticsStub.kt diff --git a/app/build.gradle b/app/build.gradle index 1c725182..f5f81594 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,12 +1,9 @@ plugins { id 'com.android.application' - id 'com.google.gms.google-services' - id 'com.google.firebase.crashlytics' id 'kotlin-android' id 'kotlinx-serialization' id 'org.jetbrains.kotlin.android' id 'com.google.devtools.ksp' - } def gitCommitHash = providers.exec { @@ -22,15 +19,31 @@ android { targetSdk 34 versionCode ((System.currentTimeMillis() / 60000).toInteger()) versionName "2.1.0" + versionCode 210 signingConfig signingConfigs.debug } + flavorDimensions "store" + productFlavors { + fdroid { + // F-Droid specific configuration + dimension "store" + versionNameSuffix "-fdroid" + } + google { + // Google Play specific configuration + dimension "store" + isDefault true + } + } + buildTypes { alpha { - applicationIdSuffix ".beta" // keep as the same application by popular request + applicationIdSuffix ".beta" // keep as beta by popular request versionNameSuffix "-alpha01" manifestPlaceholders = [icon_placeholder: "@mipmap/ic_launcher_alpha", icon_placeholder_round: "@mipmap/ic_launcher_alpha_round"] debuggable System.getenv("CI") == null + isDefault true } debug { applicationIdSuffix ".beta" @@ -46,6 +59,7 @@ android { } buildFeatures { viewBinding true + buildConfig true } compileOptions { sourceCompatibility JavaVersion.VERSION_17 @@ -59,6 +73,11 @@ android { } dependencies { + + // FireBase + googleImplementation platform('com.google.firebase:firebase-bom:32.2.3') + googleImplementation 'com.google.firebase:firebase-analytics-ktx:21.5.0' + googleImplementation 'com.google.firebase:firebase-crashlytics-ktx:18.6.1' // Core implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.browser:browser:1.7.0' @@ -84,11 +103,6 @@ dependencies { implementation "com.github.bumptech.glide:okhttp3-integration:$glide_version" implementation 'jp.wasabeef:glide-transformations:4.3.0' -// FireBase - implementation platform('com.google.firebase:firebase-bom:32.2.3') - implementation 'com.google.firebase:firebase-analytics-ktx:21.5.0' - implementation 'com.google.firebase:firebase-crashlytics-ktx:18.6.1' - // Exoplayer ext.exo_version = '1.2.1' implementation "androidx.media3:media3-exoplayer:$exo_version" diff --git a/app/src/main/res/drawable/anim_splash_beta.xml b/app/src/debug/res/drawable/anim_splash.xml similarity index 100% rename from app/src/main/res/drawable/anim_splash_beta.xml rename to app/src/debug/res/drawable/anim_splash.xml diff --git a/app/src/fdroid/java/ani/dantotsu/connections/crashlytics/CrashlyticsFactory.kt b/app/src/fdroid/java/ani/dantotsu/connections/crashlytics/CrashlyticsFactory.kt new file mode 100644 index 00000000..467fe71a --- /dev/null +++ b/app/src/fdroid/java/ani/dantotsu/connections/crashlytics/CrashlyticsFactory.kt @@ -0,0 +1,9 @@ +package ani.dantotsu.connections.crashlytics + +class CrashlyticsFactory { + companion object { + fun createCrashlytics(): CrashlyticsInterface { + return CrashlyticsStub() + } + } +} \ No newline at end of file diff --git a/app/src/fdroid/java/ani/dantotsu/others/AppUpdater.kt b/app/src/fdroid/java/ani/dantotsu/others/AppUpdater.kt new file mode 100644 index 00000000..bb9893f6 --- /dev/null +++ b/app/src/fdroid/java/ani/dantotsu/others/AppUpdater.kt @@ -0,0 +1,9 @@ +package ani.dantotsu.others + +import androidx.fragment.app.FragmentActivity + +object AppUpdater { + suspend fun check(activity: FragmentActivity, post: Boolean = false) { + //no-op + } +} \ No newline at end of file diff --git a/app/src/google/java/ani/dantotsu/connections/crashlytics/CrashlyticsFactory.kt b/app/src/google/java/ani/dantotsu/connections/crashlytics/CrashlyticsFactory.kt new file mode 100644 index 00000000..2a3715d9 --- /dev/null +++ b/app/src/google/java/ani/dantotsu/connections/crashlytics/CrashlyticsFactory.kt @@ -0,0 +1,9 @@ +package ani.dantotsu.connections.crashlytics + +class CrashlyticsFactory { + companion object { + fun createCrashlytics(): CrashlyticsInterface { + return FirebaseCrashlytics() + } + } +} \ No newline at end of file diff --git a/app/src/google/java/ani/dantotsu/connections/crashlytics/FirebaseCrashlytics.kt b/app/src/google/java/ani/dantotsu/connections/crashlytics/FirebaseCrashlytics.kt new file mode 100644 index 00000000..c305f1b8 --- /dev/null +++ b/app/src/google/java/ani/dantotsu/connections/crashlytics/FirebaseCrashlytics.kt @@ -0,0 +1,28 @@ +package ani.dantotsu.connections.crashlytics + +import com.google.firebase.crashlytics.FirebaseCrashlytics +import com.google.firebase.crashlytics.ktx.crashlytics +import com.google.firebase.ktx.Firebase + +class FirebaseCrashlytics : CrashlyticsInterface { + override fun logException(e: Throwable) { + FirebaseCrashlytics.getInstance().recordException(e) + } + + override fun log(message: String) { + FirebaseCrashlytics.getInstance().log(message) + } + + override fun setUserId(id: String) { + Firebase.crashlytics.setUserId(id) + } + + override fun setCustomKey(key: String, value: String) { + FirebaseCrashlytics.getInstance().setCustomKey(key, value) + } + + override fun setCrashlyticsCollectionEnabled(enabled: Boolean) { + FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(enabled) + } + +} \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/others/AppUpdater.kt b/app/src/google/java/ani/dantotsu/others/AppUpdater.kt similarity index 99% rename from app/src/main/java/ani/dantotsu/others/AppUpdater.kt rename to app/src/google/java/ani/dantotsu/others/AppUpdater.kt index 655d66b1..3c64edbe 100644 --- a/app/src/main/java/ani/dantotsu/others/AppUpdater.kt +++ b/app/src/google/java/ani/dantotsu/others/AppUpdater.kt @@ -187,7 +187,7 @@ object AppUpdater { return true } - fun openApk(context: Context, uri: Uri) { + private fun openApk(context: Context, uri: Uri) { try { uri.path?.let { val contentUri = FileProvider.getUriForFile( diff --git a/app/src/main/java/ani/dantotsu/App.kt b/app/src/main/java/ani/dantotsu/App.kt index e31e36e2..d05db59a 100644 --- a/app/src/main/java/ani/dantotsu/App.kt +++ b/app/src/main/java/ani/dantotsu/App.kt @@ -8,6 +8,7 @@ import androidx.multidex.MultiDex import androidx.multidex.MultiDexApplication import ani.dantotsu.aniyomi.anime.custom.AppModule import ani.dantotsu.aniyomi.anime.custom.PreferenceModule +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.others.DisabledReports import ani.dantotsu.parsers.AnimeSources import ani.dantotsu.parsers.MangaSources @@ -17,9 +18,6 @@ import ani.dantotsu.settings.SettingsActivity import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.settings.saving.PrefManager import com.google.android.material.color.DynamicColors -import com.google.firebase.crashlytics.FirebaseCrashlytics -import com.google.firebase.crashlytics.ktx.crashlytics -import com.google.firebase.ktx.Firebase import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.extension.anime.AnimeExtensionManager import eu.kanade.tachiyomi.extension.manga.MangaExtensionManager @@ -55,28 +53,32 @@ class App : MultiDexApplication() { super.onCreate() PrefManager.init(this) + Injekt.importModule(AppModule(this)) + Injekt.importModule(PreferenceModule(this)) + + val crashlytics = Injekt.get() val useMaterialYou: Boolean = PrefManager.getVal(PrefName.UseMaterialYou) if (useMaterialYou) { DynamicColors.applyToActivitiesIfAvailable(this) - //TODO: HarmonizedColors } registerActivityLifecycleCallbacks(mFTActivityLifecycleCallbacks) - Firebase.crashlytics.setCrashlyticsCollectionEnabled(!DisabledReports) + crashlytics.setCrashlyticsCollectionEnabled(!DisabledReports) (PrefManager.getVal(PrefName.SharedUserID) as Boolean).let { if (!it) return@let val dUsername = PrefManager.getVal(PrefName.DiscordUserName, null as String?) val aUsername = PrefManager.getVal(PrefName.AnilistUserName, null as String?) - if (dUsername != null || aUsername != null) { - Firebase.crashlytics.setUserId("$dUsername - $aUsername") + if (dUsername != null) { + crashlytics.setCustomKey("dUsername", dUsername) + } + if (aUsername != null) { + crashlytics.setCustomKey("aUsername", aUsername) } } - FirebaseCrashlytics.getInstance() - .setCustomKey("device Info", SettingsActivity.getDeviceInfo()) + crashlytics.setCustomKey("device Info", SettingsActivity.getDeviceInfo()) + - Injekt.importModule(AppModule(this)) - Injekt.importModule(PreferenceModule(this)) initializeNetwork(baseContext) diff --git a/app/src/main/java/ani/dantotsu/Functions.kt b/app/src/main/java/ani/dantotsu/Functions.kt index 21e30610..ec1d4322 100644 --- a/app/src/main/java/ani/dantotsu/Functions.kt +++ b/app/src/main/java/ani/dantotsu/Functions.kt @@ -44,6 +44,7 @@ import androidx.viewpager2.widget.ViewPager2 import ani.dantotsu.BuildConfig.APPLICATION_ID import ani.dantotsu.connections.anilist.Genre import ani.dantotsu.connections.anilist.api.FuzzyDate +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.databinding.ItemCountDownBinding import ani.dantotsu.media.Media import ani.dantotsu.parsers.ShowResponse @@ -61,11 +62,12 @@ import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.internal.ViewUtils import com.google.android.material.snackbar.Snackbar -import com.google.firebase.crashlytics.FirebaseCrashlytics import com.google.gson.Gson import eu.kanade.tachiyomi.data.notification.Notifications import kotlinx.coroutines.* import nl.joery.animatedbottombar.AnimatedBottomBar +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get import java.io.* import java.lang.Runnable import java.lang.reflect.Field @@ -872,7 +874,7 @@ fun snackString(s: String?, activity: Activity? = null, clipboard: String? = nul } } catch (e: Exception) { logger(e.stackTraceToString()) - FirebaseCrashlytics.getInstance().recordException(e) + Injekt.get().logException(e) } } diff --git a/app/src/main/java/ani/dantotsu/aniyomi/anime/custom/InjektModules.kt b/app/src/main/java/ani/dantotsu/aniyomi/anime/custom/InjektModules.kt index 38032311..882a07db 100644 --- a/app/src/main/java/ani/dantotsu/aniyomi/anime/custom/InjektModules.kt +++ b/app/src/main/java/ani/dantotsu/aniyomi/anime/custom/InjektModules.kt @@ -7,6 +7,9 @@ import androidx.annotation.OptIn import androidx.core.content.ContextCompat import androidx.media3.common.util.UnstableApi import androidx.media3.database.StandaloneDatabaseProvider +import ani.dantotsu.BuildConfig +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface +import ani.dantotsu.connections.crashlytics.CrashlyticsStub import ani.dantotsu.download.DownloadsManager import ani.dantotsu.media.manga.MangaCache import ani.dantotsu.parsers.novel.NovelExtensionManager @@ -53,6 +56,10 @@ class AppModule(val app: Application) : InjektModule { addSingletonFactory { StandaloneDatabaseProvider(app) } + addSingletonFactory { + ani.dantotsu.connections.crashlytics.CrashlyticsFactory.createCrashlytics() + } + addSingletonFactory { MangaCache() } ContextCompat.getMainExecutor(app).execute { diff --git a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistViewModel.kt b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistViewModel.kt index 6a173584..9a2e6b2e 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistViewModel.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistViewModel.kt @@ -5,6 +5,7 @@ import androidx.fragment.app.FragmentActivity import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import ani.dantotsu.BuildConfig import ani.dantotsu.R import ani.dantotsu.connections.discord.Discord import ani.dantotsu.connections.mal.MAL @@ -100,7 +101,9 @@ class AnilistHomeViewModel : ViewModel() { Anilist.getSavedToken() MAL.getSavedToken(context) Discord.getSavedToken(context) - if (PrefManager.getVal(PrefName.CheckUpdate)) AppUpdater.check(context) + if (!BuildConfig.FLAVOR.contains("fdroid")) { + if (PrefManager.getVal(PrefName.CheckUpdate)) AppUpdater.check(context) + } genres.postValue(Anilist.query.getGenresAndTags(context)) } diff --git a/app/src/main/java/ani/dantotsu/connections/crashlytics/CrashlyticsInterface.kt b/app/src/main/java/ani/dantotsu/connections/crashlytics/CrashlyticsInterface.kt new file mode 100644 index 00000000..52752b4e --- /dev/null +++ b/app/src/main/java/ani/dantotsu/connections/crashlytics/CrashlyticsInterface.kt @@ -0,0 +1,9 @@ +package ani.dantotsu.connections.crashlytics + +interface CrashlyticsInterface { + fun logException(e: Throwable) + fun log(message: String) + fun setUserId(id: String) + fun setCustomKey(key: String, value: String) + fun setCrashlyticsCollectionEnabled(enabled: Boolean) +} \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/connections/crashlytics/CrashlyticsStub.kt b/app/src/main/java/ani/dantotsu/connections/crashlytics/CrashlyticsStub.kt new file mode 100644 index 00000000..2e6b255a --- /dev/null +++ b/app/src/main/java/ani/dantotsu/connections/crashlytics/CrashlyticsStub.kt @@ -0,0 +1,24 @@ +package ani.dantotsu.connections.crashlytics + +class CrashlyticsStub : CrashlyticsInterface { + override fun logException(e: Throwable) { + //no-op + } + + override fun log(message: String) { + //no-op + } + + override fun setUserId(id: String) { + //no-op + } + + override fun setCustomKey(key: String, value: String) { + //no-op + } + + override fun setCrashlyticsCollectionEnabled(enabled: Boolean) { + //no-op + } + +} \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/download/anime/AnimeDownloaderService.kt b/app/src/main/java/ani/dantotsu/download/anime/AnimeDownloaderService.kt index 1652443c..7d158a8a 100644 --- a/app/src/main/java/ani/dantotsu/download/anime/AnimeDownloaderService.kt +++ b/app/src/main/java/ani/dantotsu/download/anime/AnimeDownloaderService.kt @@ -21,6 +21,7 @@ import androidx.media3.exoplayer.offline.DownloadManager import androidx.media3.exoplayer.offline.DownloadService import ani.dantotsu.FileUrl import ani.dantotsu.R +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.currActivity import ani.dantotsu.download.DownloadedType import ani.dantotsu.download.DownloadsManager @@ -34,7 +35,6 @@ import ani.dantotsu.parsers.Subtitle import ani.dantotsu.parsers.Video import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.snackString -import com.google.firebase.crashlytics.FirebaseCrashlytics import com.google.gson.GsonBuilder import com.google.gson.InstanceCreator import eu.kanade.tachiyomi.animesource.model.SAnime @@ -277,7 +277,7 @@ class AnimeDownloaderService : Service() { DownloadedType.Type.ANIME, ) ) - FirebaseCrashlytics.getInstance().recordException( + Injekt.get().logException( Exception( "Anime Download failed:" + " ${download.failureReason}" + @@ -333,7 +333,7 @@ class AnimeDownloaderService : Service() { logger("Exception while downloading file: ${e.message}") snackString("Exception while downloading file: ${e.message}") e.printStackTrace() - FirebaseCrashlytics.getInstance().recordException(e) + Injekt.get().logException(e) } broadcastDownloadFailed(task.episode) } diff --git a/app/src/main/java/ani/dantotsu/download/anime/OfflineAnimeFragment.kt b/app/src/main/java/ani/dantotsu/download/anime/OfflineAnimeFragment.kt index 56f18048..459065da 100644 --- a/app/src/main/java/ani/dantotsu/download/anime/OfflineAnimeFragment.kt +++ b/app/src/main/java/ani/dantotsu/download/anime/OfflineAnimeFragment.kt @@ -27,6 +27,7 @@ import androidx.fragment.app.Fragment import androidx.media3.common.util.UnstableApi import ani.dantotsu.R import ani.dantotsu.bottomBar +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.currActivity import ani.dantotsu.currContext import ani.dantotsu.download.DownloadedType @@ -44,7 +45,6 @@ import ani.dantotsu.snackString import com.google.android.material.card.MaterialCardView import com.google.android.material.imageview.ShapeableImageView import com.google.android.material.textfield.TextInputLayout -import com.google.firebase.crashlytics.FirebaseCrashlytics import com.google.gson.GsonBuilder import com.google.gson.InstanceCreator import eu.kanade.tachiyomi.animesource.model.SAnime @@ -318,7 +318,7 @@ class OfflineAnimeFragment : Fragment(), OfflineAnimeSearchListener { } catch (e: Exception) { logger("Error loading media.json: ${e.message}") logger(e.printStackTrace()) - FirebaseCrashlytics.getInstance().recordException(e) + Injekt.get().logException(e) null } } @@ -374,7 +374,7 @@ class OfflineAnimeFragment : Fragment(), OfflineAnimeSearchListener { } catch (e: Exception) { logger("Error loading media.json: ${e.message}") logger(e.printStackTrace()) - FirebaseCrashlytics.getInstance().recordException(e) + Injekt.get().logException(e) return OfflineAnimeModel( "unknown", "0", diff --git a/app/src/main/java/ani/dantotsu/download/manga/MangaDownloaderService.kt b/app/src/main/java/ani/dantotsu/download/manga/MangaDownloaderService.kt index 014e2abb..de91960c 100644 --- a/app/src/main/java/ani/dantotsu/download/manga/MangaDownloaderService.kt +++ b/app/src/main/java/ani/dantotsu/download/manga/MangaDownloaderService.kt @@ -18,6 +18,7 @@ import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import androidx.core.content.ContextCompat import ani.dantotsu.R +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.download.DownloadedType import ani.dantotsu.download.DownloadsManager import ani.dantotsu.logger @@ -29,7 +30,6 @@ import ani.dantotsu.media.manga.MangaReadFragment.Companion.ACTION_DOWNLOAD_PROG import ani.dantotsu.media.manga.MangaReadFragment.Companion.ACTION_DOWNLOAD_STARTED import ani.dantotsu.media.manga.MangaReadFragment.Companion.EXTRA_CHAPTER_NUMBER import ani.dantotsu.snackString -import com.google.firebase.crashlytics.FirebaseCrashlytics import com.google.gson.GsonBuilder import com.google.gson.InstanceCreator import eu.kanade.tachiyomi.data.notification.Notifications.CHANNEL_DOWNLOADER_PROGRESS @@ -253,7 +253,7 @@ class MangaDownloaderService : Service() { } catch (e: Exception) { logger("Exception while downloading file: ${e.message}") snackString("Exception while downloading file: ${e.message}") - FirebaseCrashlytics.getInstance().recordException(e) + Injekt.get().logException(e) broadcastDownloadFailed(task.chapter) } } @@ -283,7 +283,7 @@ class MangaDownloaderService : Service() { } catch (e: Exception) { println("Exception while saving image: ${e.message}") snackString("Exception while saving image: ${e.message}") - FirebaseCrashlytics.getInstance().recordException(e) + Injekt.get().logException(e) } } diff --git a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt index 05f82fd3..daabe70a 100644 --- a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt +++ b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt @@ -24,6 +24,7 @@ import androidx.core.view.marginBottom import androidx.fragment.app.Fragment import ani.dantotsu.R import ani.dantotsu.bottomBar +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.currActivity import ani.dantotsu.currContext import ani.dantotsu.download.DownloadedType @@ -41,7 +42,6 @@ import ani.dantotsu.snackString import com.google.android.material.card.MaterialCardView import com.google.android.material.imageview.ShapeableImageView import com.google.android.material.textfield.TextInputLayout -import com.google.firebase.crashlytics.FirebaseCrashlytics import com.google.gson.GsonBuilder import com.google.gson.InstanceCreator import eu.kanade.tachiyomi.source.model.SChapter @@ -310,7 +310,7 @@ class OfflineMangaFragment : Fragment(), OfflineMangaSearchListener { } catch (e: Exception) { logger("Error loading media.json: ${e.message}") logger(e.printStackTrace()) - FirebaseCrashlytics.getInstance().recordException(e) + Injekt.get().logException(e) null } } @@ -360,7 +360,7 @@ class OfflineMangaFragment : Fragment(), OfflineMangaSearchListener { } catch (e: Exception) { logger("Error loading media.json: ${e.message}") logger(e.printStackTrace()) - FirebaseCrashlytics.getInstance().recordException(e) + Injekt.get().logException(e) return OfflineMangaModel( "unknown", "0", diff --git a/app/src/main/java/ani/dantotsu/download/novel/NovelDownloaderService.kt b/app/src/main/java/ani/dantotsu/download/novel/NovelDownloaderService.kt index 3df22fda..f6a7e2ed 100644 --- a/app/src/main/java/ani/dantotsu/download/novel/NovelDownloaderService.kt +++ b/app/src/main/java/ani/dantotsu/download/novel/NovelDownloaderService.kt @@ -17,13 +17,13 @@ import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import androidx.core.content.ContextCompat import ani.dantotsu.R +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.download.DownloadedType import ani.dantotsu.download.DownloadsManager import ani.dantotsu.logger import ani.dantotsu.media.Media import ani.dantotsu.media.novel.NovelReadFragment import ani.dantotsu.snackString -import com.google.firebase.crashlytics.FirebaseCrashlytics import com.google.gson.GsonBuilder import com.google.gson.InstanceCreator import eu.kanade.tachiyomi.data.notification.Notifications @@ -342,7 +342,7 @@ class NovelDownloaderService : Service() { } catch (e: Exception) { logger("Exception while downloading .epub: ${e.message}") snackString("Exception while downloading .epub: ${e.message}") - FirebaseCrashlytics.getInstance().recordException(e) + Injekt.get().logException(e) broadcastDownloadFailed(task.originalLink) } } diff --git a/app/src/main/java/ani/dantotsu/home/LoginFragment.kt b/app/src/main/java/ani/dantotsu/home/LoginFragment.kt index 9ca63137..fdddeef1 100644 --- a/app/src/main/java/ani/dantotsu/home/LoginFragment.kt +++ b/app/src/main/java/ani/dantotsu/home/LoginFragment.kt @@ -32,9 +32,6 @@ class LoginFragment : Fragment() { savedInstanceState: Bundle? ): View { _binding = FragmentLoginBinding.inflate(layoutInflater, container, false) - val layoutParams = binding.importSettingsButton.layoutParams as ViewGroup.MarginLayoutParams - layoutParams.topMargin += statusBarHeight - binding.importSettingsButton.layoutParams = layoutParams return binding.root } diff --git a/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt b/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt index f7f3bf10..888e6be9 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt @@ -65,6 +65,7 @@ import androidx.mediarouter.app.MediaRouteButton import ani.dantotsu.* import ani.dantotsu.R import ani.dantotsu.connections.anilist.Anilist +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.connections.discord.Discord import ani.dantotsu.connections.discord.DiscordService import ani.dantotsu.connections.discord.DiscordServiceRunningSingleton @@ -90,7 +91,6 @@ import com.google.android.gms.cast.framework.CastContext import com.google.android.gms.common.ConnectionResult import com.google.android.gms.common.GoogleApiAvailability import com.google.android.material.slider.Slider -import com.google.firebase.crashlytics.FirebaseCrashlytics import com.lagradost.nicehttp.ignoreAllSSLErrors import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -98,6 +98,8 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import okhttp3.internal.immutableListOf +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get import java.util.* import java.util.concurrent.* import kotlin.math.max @@ -1747,7 +1749,7 @@ class ExoplayerView : AppCompatActivity(), Player.Listener, SessionAvailabilityL else -> { toast("Player Error ${error.errorCode} (${error.errorCodeName}) : ${error.message}") - FirebaseCrashlytics.getInstance().recordException(error) + Injekt.get().logException(error) } } } diff --git a/app/src/main/java/ani/dantotsu/media/anime/SelectorDialogFragment.kt b/app/src/main/java/ani/dantotsu/media/anime/SelectorDialogFragment.kt index 70273a2c..9ac2e529 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/SelectorDialogFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/SelectorDialogFragment.kt @@ -17,6 +17,7 @@ import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import ani.dantotsu.* +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.databinding.BottomSheetSelectorBinding import ani.dantotsu.databinding.ItemStreamBinding import ani.dantotsu.databinding.ItemUrlBinding @@ -29,11 +30,12 @@ import ani.dantotsu.parsers.VideoExtractor import ani.dantotsu.parsers.VideoType import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.settings.saving.PrefManager -import com.google.firebase.crashlytics.FirebaseCrashlytics import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get import java.text.DecimalFormat @@ -266,7 +268,7 @@ class SelectorDialogFragment : BottomSheetDialogFragment() { media!!.anime!!.episodes!![media!!.anime!!.selectedEpisode!!]?.selectedVideo = 0 startExoplayer(media!!) } catch (e: Exception) { - FirebaseCrashlytics.getInstance().recordException(e) + Injekt.get().logException(e) } } diff --git a/app/src/main/java/ani/dantotsu/media/manga/mangareader/MangaReaderActivity.kt b/app/src/main/java/ani/dantotsu/media/manga/mangareader/MangaReaderActivity.kt index 02afd94f..8e59713e 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/mangareader/MangaReaderActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/mangareader/MangaReaderActivity.kt @@ -28,6 +28,7 @@ import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 import ani.dantotsu.* import ani.dantotsu.connections.anilist.Anilist +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.connections.discord.Discord import ani.dantotsu.connections.discord.DiscordService import ani.dantotsu.connections.discord.DiscordServiceRunningSingleton @@ -55,9 +56,6 @@ import ani.dantotsu.themes.ThemeManager import com.alexvasilkov.gestures.views.GestureFrameLayout import com.bumptech.glide.load.resource.bitmap.BitmapTransformation import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView -import com.google.firebase.crashlytics.FirebaseCrashlytics -import com.google.firebase.crashlytics.ktx.crashlytics -import com.google.firebase.ktx.Firebase import eu.kanade.tachiyomi.extension.manga.MangaExtensionManager import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -221,7 +219,7 @@ class MangaReaderActivity : AppCompatActivity() { } model.mangaReadSources = mangaSources } catch (e: Exception) { - Firebase.crashlytics.recordException(e) + Injekt.get().logException(e) logError(e) } } @@ -924,8 +922,8 @@ class MangaReaderActivity : AppCompatActivity() { try { a?.deleteFile(fileName) } catch (e: Exception) { - FirebaseCrashlytics.getInstance().log("Failed to delete file $fileName") - FirebaseCrashlytics.getInstance().recordException(e) + Injekt.get().log("Failed to delete file $fileName") + Injekt.get().logException(e) } e.printStackTrace() } diff --git a/app/src/main/java/ani/dantotsu/media/novel/novelreader/NovelReaderActivity.kt b/app/src/main/java/ani/dantotsu/media/novel/novelreader/NovelReaderActivity.kt index 5b305033..c45acaef 100644 --- a/app/src/main/java/ani/dantotsu/media/novel/novelreader/NovelReaderActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/novel/novelreader/NovelReaderActivity.kt @@ -29,6 +29,7 @@ import androidx.webkit.WebViewCompat import ani.dantotsu.GesturesListener import ani.dantotsu.NoPaddingArrayAdapter import ani.dantotsu.R +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.currContext import ani.dantotsu.databinding.ActivityNovelReaderBinding import ani.dantotsu.hideSystemBars @@ -42,7 +43,6 @@ import ani.dantotsu.snackString import ani.dantotsu.themes.ThemeManager import ani.dantotsu.tryWith import com.google.android.material.slider.Slider -import com.google.firebase.crashlytics.FirebaseCrashlytics import com.vipulog.ebookreader.Book import com.vipulog.ebookreader.EbookReaderEventListener import com.vipulog.ebookreader.ReaderError @@ -52,6 +52,8 @@ import com.vipulog.ebookreader.RelocationInfo import com.vipulog.ebookreader.TocItem import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get import java.io.File import java.io.FileInputStream import java.io.FileOutputStream @@ -502,8 +504,8 @@ class NovelReaderActivity : AppCompatActivity(), EbookReaderEventListener { try { a?.deleteFile(fileName) } catch (e: Exception) { - FirebaseCrashlytics.getInstance().log("Failed to delete file $fileName") - FirebaseCrashlytics.getInstance().recordException(e) + Injekt.get().log("Failed to delete file $fileName") + Injekt.get().logException(e) } e.printStackTrace() } diff --git a/app/src/main/java/ani/dantotsu/others/DisabledReports.kt b/app/src/main/java/ani/dantotsu/others/DisabledReports.kt index ed8f5813..c25956f0 100644 --- a/app/src/main/java/ani/dantotsu/others/DisabledReports.kt +++ b/app/src/main/java/ani/dantotsu/others/DisabledReports.kt @@ -1,5 +1,5 @@ package ani.dantotsu.others const val DisabledReports = false -//Setting this to false, will allow sending crash reports to Dantotsu's Firebase Crashlytics +//Setting this to false, will allow sending crash reports to Dantotsu's Firebase CrashlyticsInterface //if you want a custom build without crash reporting, set this to true \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/parsers/AniyomiAdapter.kt b/app/src/main/java/ani/dantotsu/parsers/AniyomiAdapter.kt index aad64d7d..761bd949 100644 --- a/app/src/main/java/ani/dantotsu/parsers/AniyomiAdapter.kt +++ b/app/src/main/java/ani/dantotsu/parsers/AniyomiAdapter.kt @@ -714,8 +714,6 @@ class VideoServerPassthrough(val videoServer: VideoServer) : VideoExtractor() { // If the format is still undetermined, log an error if (format == null) { logger("Unknown video format: $videoUrl") - //FirebaseCrashlytics.getInstance() - // .recordException(Exception("Unknown video format: $videoUrl")) format = VideoType.CONTAINER } val headersMap: Map = diff --git a/app/src/main/java/ani/dantotsu/parsers/novel/NovelExtensionLoader.kt b/app/src/main/java/ani/dantotsu/parsers/novel/NovelExtensionLoader.kt index 3c26530c..94574e20 100644 --- a/app/src/main/java/ani/dantotsu/parsers/novel/NovelExtensionLoader.kt +++ b/app/src/main/java/ani/dantotsu/parsers/novel/NovelExtensionLoader.kt @@ -6,12 +6,14 @@ import android.content.pm.PackageManager.GET_SIGNATURES import android.content.pm.PackageManager.GET_SIGNING_CERTIFICATES import android.os.Build import android.util.Log +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.logger import ani.dantotsu.parsers.NovelInterface import ani.dantotsu.snackString -import com.google.firebase.crashlytics.FirebaseCrashlytics import dalvik.system.PathClassLoader import eu.kanade.tachiyomi.util.lang.Hash +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get import java.io.File import java.util.Locale @@ -141,7 +143,7 @@ internal object NovelExtensionLoader { listOfNotNull(novelInterfaceInstance) } catch (e: Exception) { e.printStackTrace() - FirebaseCrashlytics.getInstance().recordException(e) + Injekt.get().logException(e) emptyList() } } diff --git a/app/src/main/java/ani/dantotsu/settings/AnimeExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/AnimeExtensionsFragment.kt index 2bed9224..a6d6c39e 100644 --- a/app/src/main/java/ani/dantotsu/settings/AnimeExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/AnimeExtensionsFragment.kt @@ -12,13 +12,13 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import ani.dantotsu.R +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.databinding.FragmentAnimeExtensionsBinding import ani.dantotsu.settings.paging.AnimeExtensionAdapter import ani.dantotsu.settings.paging.AnimeExtensionsViewModel import ani.dantotsu.settings.paging.AnimeExtensionsViewModelFactory import ani.dantotsu.settings.paging.OnAnimeInstallClickListener import ani.dantotsu.snackString -import com.google.firebase.crashlytics.FirebaseCrashlytics import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.extension.anime.AnimeExtensionManager import eu.kanade.tachiyomi.extension.anime.model.AnimeExtension @@ -97,7 +97,7 @@ class AnimeExtensionsFragment : Fragment(), notificationManager.notify(1, builder.build()) }, { error -> - FirebaseCrashlytics.getInstance().recordException(error) + Injekt.get().logException(error) val builder = NotificationCompat.Builder( context, Notifications.CHANNEL_DOWNLOADER_ERROR diff --git a/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt index 84ab4e82..044fc129 100644 --- a/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt @@ -23,6 +23,7 @@ import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 import ani.dantotsu.R +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.databinding.FragmentAnimeExtensionsBinding import ani.dantotsu.logger import ani.dantotsu.others.LanguageMapper @@ -33,7 +34,6 @@ import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.snackString import com.google.android.material.tabs.TabLayout import com.google.android.material.textfield.TextInputLayout -import com.google.firebase.crashlytics.FirebaseCrashlytics import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.extension.anime.AnimeExtensionManager @@ -145,7 +145,7 @@ class InstalledAnimeExtensionsFragment : Fragment(), SearchQueryHandler { notificationManager.notify(1, builder.build()) }, { error -> - FirebaseCrashlytics.getInstance().recordException(error) + Injekt.get().logException(error) Log.e("AnimeExtensionsAdapter", "Error: ", error) // Log the error val builder = NotificationCompat.Builder( context, diff --git a/app/src/main/java/ani/dantotsu/settings/InstalledMangaExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/InstalledMangaExtensionsFragment.kt index d46347e2..1a70fe82 100644 --- a/app/src/main/java/ani/dantotsu/settings/InstalledMangaExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/InstalledMangaExtensionsFragment.kt @@ -24,6 +24,7 @@ import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 import ani.dantotsu.R +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.databinding.FragmentMangaExtensionsBinding import ani.dantotsu.others.LanguageMapper import ani.dantotsu.parsers.MangaSources @@ -33,7 +34,6 @@ import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.snackString import com.google.android.material.tabs.TabLayout import com.google.android.material.textfield.TextInputLayout -import com.google.firebase.crashlytics.FirebaseCrashlytics import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.extension.manga.MangaExtensionManager import eu.kanade.tachiyomi.extension.manga.model.MangaExtension @@ -142,7 +142,7 @@ class InstalledMangaExtensionsFragment : Fragment(), SearchQueryHandler { notificationManager.notify(1, builder.build()) }, { error -> - FirebaseCrashlytics.getInstance().recordException(error) + Injekt.get().logException(error) Log.e("MangaExtensionsAdapter", "Error: ", error) // Log the error val builder = NotificationCompat.Builder( context, diff --git a/app/src/main/java/ani/dantotsu/settings/InstalledNovelExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/InstalledNovelExtensionsFragment.kt index 993f62f1..0f44d92a 100644 --- a/app/src/main/java/ani/dantotsu/settings/InstalledNovelExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/InstalledNovelExtensionsFragment.kt @@ -20,6 +20,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import ani.dantotsu.R +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.currContext import ani.dantotsu.databinding.FragmentNovelExtensionsBinding import ani.dantotsu.others.LanguageMapper @@ -29,7 +30,6 @@ import ani.dantotsu.parsers.novel.NovelExtensionManager import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.snackString -import com.google.firebase.crashlytics.FirebaseCrashlytics import eu.kanade.tachiyomi.data.notification.Notifications import kotlinx.coroutines.launch import rx.android.schedulers.AndroidSchedulers @@ -71,7 +71,7 @@ class InstalledNovelExtensionsFragment : Fragment(), SearchQueryHandler { notificationManager.notify(1, builder.build()) }, { error -> - FirebaseCrashlytics.getInstance().recordException(error) + Injekt.get().logException(error) Log.e("NovelExtensionsAdapter", "Error: ", error) // Log the error val builder = NotificationCompat.Builder( context, diff --git a/app/src/main/java/ani/dantotsu/settings/MangaExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/MangaExtensionsFragment.kt index 7aa30a6b..6f7276ad 100644 --- a/app/src/main/java/ani/dantotsu/settings/MangaExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/MangaExtensionsFragment.kt @@ -12,13 +12,13 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import ani.dantotsu.R +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.databinding.FragmentMangaExtensionsBinding import ani.dantotsu.settings.paging.MangaExtensionAdapter import ani.dantotsu.settings.paging.MangaExtensionsViewModel import ani.dantotsu.settings.paging.MangaExtensionsViewModelFactory import ani.dantotsu.settings.paging.OnMangaInstallClickListener import ani.dantotsu.snackString -import com.google.firebase.crashlytics.FirebaseCrashlytics import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.extension.manga.MangaExtensionManager import eu.kanade.tachiyomi.extension.manga.model.MangaExtension @@ -98,7 +98,7 @@ class MangaExtensionsFragment : Fragment(), notificationManager.notify(1, builder.build()) }, { error -> - FirebaseCrashlytics.getInstance().recordException(error) + Injekt.get().logException(error) val builder = NotificationCompat.Builder( context, Notifications.CHANNEL_DOWNLOADER_ERROR diff --git a/app/src/main/java/ani/dantotsu/settings/NovelExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/NovelExtensionsFragment.kt index a06505d0..ffcc17e9 100644 --- a/app/src/main/java/ani/dantotsu/settings/NovelExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/NovelExtensionsFragment.kt @@ -13,6 +13,7 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import ani.dantotsu.R +import ani.dantotsu.connections.crashlytics.CrashlyticsInterface import ani.dantotsu.databinding.FragmentNovelExtensionsBinding import ani.dantotsu.parsers.novel.NovelExtension import ani.dantotsu.parsers.novel.NovelExtensionManager @@ -21,7 +22,6 @@ import ani.dantotsu.settings.paging.NovelExtensionsViewModel import ani.dantotsu.settings.paging.NovelExtensionsViewModelFactory import ani.dantotsu.settings.paging.OnNovelInstallClickListener import ani.dantotsu.snackString -import com.google.firebase.crashlytics.FirebaseCrashlytics import eu.kanade.tachiyomi.data.notification.Notifications import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch @@ -99,7 +99,7 @@ class NovelExtensionsFragment : Fragment(), notificationManager.notify(1, builder.build()) }, { error -> - FirebaseCrashlytics.getInstance().recordException(error) + Injekt.get().logException(error) val builder = NotificationCompat.Builder( context, Notifications.CHANNEL_DOWNLOADER_ERROR diff --git a/app/src/main/java/ani/dantotsu/settings/PlayerSettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/PlayerSettingsActivity.kt index 822211e1..16e3c9fe 100644 --- a/app/src/main/java/ani/dantotsu/settings/PlayerSettingsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/PlayerSettingsActivity.kt @@ -85,7 +85,6 @@ class PlayerSettingsActivity : AppCompatActivity() { 2f ) val cursedSpeeds = arrayOf(1f, 1.25f, 1.5f, 1.75f, 2f, 2.5f, 3f, 4f, 5f, 10f, 25f, 50f) - //var curSpeedArr = if (settings.cursedSpeeds) cursedSpeeds else speeds var curSpeedArr = if (PrefManager.getVal(PrefName.CursedSpeeds)) cursedSpeeds else speeds var speedsName = curSpeedArr.map { "${it}x" }.toTypedArray() binding.playerSettingsSpeed.text = diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt index 63b29345..97684686 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt @@ -677,18 +677,23 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene } } - binding.settingsLogo.setOnLongClickListener { - lifecycleScope.launch(Dispatchers.IO) { - AppUpdater.check(this@SettingsActivity, true) + if (!BuildConfig.FLAVOR.contains("fdroid")) { + binding.settingsLogo.setOnLongClickListener { + lifecycleScope.launch(Dispatchers.IO) { + AppUpdater.check(this@SettingsActivity, true) + } + true } - true - } - binding.settingsCheckUpdate.setOnLongClickListener { - lifecycleScope.launch(Dispatchers.IO) { - AppUpdater.check(this@SettingsActivity, true) + binding.settingsCheckUpdate.setOnLongClickListener { + lifecycleScope.launch(Dispatchers.IO) { + AppUpdater.check(this@SettingsActivity, true) + } + true } - true + } else { + binding.settingsCheckUpdate.visibility = View.GONE + binding.settingsShareUsername.visibility = View.GONE } binding.settingsAccountHelp.setOnClickListener { diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml index 9e707eaa..60fab754 100644 --- a/app/src/main/res/layout/fragment_login.xml +++ b/app/src/main/res/layout/fragment_login.xml @@ -12,17 +12,6 @@ android:visibility="gone" tools:ignore="ContentDescription" /> -