## Description Now that Jellyfin 12 has been out for over six weeks, it's time to start considering dropping support for Jellyfin 10 & 11 as part of #1640. This PR adds a warning message on the switch server, switch user, & preferences pages if the current server version is <12. ### Related issues See https://github.com/damontecres/Wholphin/discussions/1640 for further discussion! ### Testing Emulator w/ faked data ## Screenshots N/A, reuses the same error message space ## AI or LLM usage None
128 lines
4.1 KiB
Kotlin
128 lines
4.1 KiB
Kotlin
package com.github.damontecres.wholphin
|
|
|
|
import android.app.Application
|
|
import android.os.Build
|
|
import android.os.StrictMode
|
|
import android.util.Log
|
|
import androidx.compose.runtime.Composer
|
|
import androidx.compose.runtime.ExperimentalComposeRuntimeApi
|
|
import androidx.hilt.work.HiltWorkerFactory
|
|
import androidx.work.Configuration
|
|
import dagger.hilt.android.HiltAndroidApp
|
|
import org.acra.ACRA
|
|
import org.acra.ReportField
|
|
import org.acra.config.dialog
|
|
import org.acra.data.StringFormat
|
|
import org.acra.ktx.initAcra
|
|
import org.jellyfin.sdk.Jellyfin
|
|
import org.jellyfin.sdk.model.ServerVersion
|
|
import timber.log.Timber
|
|
import javax.inject.Inject
|
|
|
|
@OptIn(ExperimentalComposeRuntimeApi::class)
|
|
@HiltAndroidApp
|
|
class WholphinApplication :
|
|
Application(),
|
|
Configuration.Provider {
|
|
init {
|
|
instance = this
|
|
|
|
if (BuildConfig.DEBUG) {
|
|
Timber.plant(Timber.DebugTree())
|
|
} else {
|
|
Timber.plant(
|
|
object : Timber.Tree() {
|
|
override fun isLoggable(
|
|
tag: String?,
|
|
priority: Int,
|
|
): Boolean = priority >= Log.INFO
|
|
|
|
override fun log(
|
|
priority: Int,
|
|
tag: String?,
|
|
message: String,
|
|
t: Throwable?,
|
|
) {
|
|
Log.println(priority, tag ?: "Wholphin", message)
|
|
}
|
|
},
|
|
)
|
|
}
|
|
|
|
Composer.setDiagnosticStackTraceEnabled(BuildConfig.DEBUG)
|
|
}
|
|
|
|
override fun onCreate() {
|
|
super.onCreate()
|
|
if (BuildConfig.DEBUG) {
|
|
StrictMode.setThreadPolicy(
|
|
StrictMode.ThreadPolicy
|
|
.Builder()
|
|
.detectNetwork()
|
|
.penaltyLog()
|
|
.penaltyDeathOnNetwork()
|
|
.build(),
|
|
)
|
|
// StrictMode.setVmPolicy(
|
|
// StrictMode.VmPolicy
|
|
// .Builder()
|
|
// .detectAll()
|
|
// .penaltyLog()
|
|
// .build(),
|
|
// )
|
|
}
|
|
initAcra {
|
|
buildConfigClass = BuildConfig::class.java
|
|
reportFormat = StringFormat.JSON
|
|
excludeMatchingSharedPreferencesKeys = listOf()
|
|
reportContent =
|
|
listOf(
|
|
ReportField.ANDROID_VERSION,
|
|
ReportField.APP_VERSION_CODE,
|
|
ReportField.APP_VERSION_NAME,
|
|
ReportField.BRAND,
|
|
// ReportField.BUILD_CONFIG,
|
|
// ReportField.BUILD,
|
|
ReportField.CUSTOM_DATA,
|
|
ReportField.LOGCAT,
|
|
ReportField.PHONE_MODEL,
|
|
ReportField.PRODUCT,
|
|
ReportField.REPORT_ID,
|
|
ReportField.SHARED_PREFERENCES,
|
|
ReportField.STACK_TRACE,
|
|
ReportField.USER_COMMENT,
|
|
ReportField.USER_CRASH_DATE,
|
|
)
|
|
dialog {
|
|
text =
|
|
"Wholphin has crashed! Would you like to attempt to " +
|
|
"send a crash report to your Jellyfin server?"
|
|
title = "Wholphin Crash Report"
|
|
positiveButtonText = "Send"
|
|
negativeButtonText = "Do not send"
|
|
}
|
|
reportSendFailureToast = "Crash report failed to send"
|
|
reportSendSuccessToast = "Sent crash report!"
|
|
}
|
|
ACRA.errorReporter.putCustomData("SDK_INT", Build.VERSION.SDK_INT.toString())
|
|
}
|
|
|
|
@Inject
|
|
lateinit var workerFactory: HiltWorkerFactory
|
|
|
|
override val workManagerConfiguration: Configuration
|
|
get() =
|
|
Configuration
|
|
.Builder()
|
|
.setWorkerFactory(workerFactory)
|
|
.build()
|
|
|
|
companion object {
|
|
lateinit var instance: WholphinApplication
|
|
private set
|
|
|
|
val minimumServerVersion: ServerVersion = Jellyfin.minimumVersion
|
|
|
|
val newMinimumServerVersion: ServerVersion = ServerVersion(12, 0, 0)
|
|
}
|
|
}
|