Fix various linter and compiler warnings

This commit is contained in:
Niels van Velzen
2025-05-27 15:48:23 +02:00
committed by Niels van Velzen
parent 0d36d61626
commit bb473ce9e3
13 changed files with 18 additions and 19 deletions
-1
View File
@@ -85,7 +85,6 @@ android {
} }
} }
@Suppress("UnstableApiUsage")
buildFeatures { buildFeatures {
buildConfig = true buildConfig = true
viewBinding = true viewBinding = true
@@ -45,7 +45,7 @@ import org.jellyfin.sdk.api.client.ApiClient
import org.jellyfin.sdk.api.client.util.AuthorizationHeaderBuilder import org.jellyfin.sdk.api.client.util.AuthorizationHeaderBuilder
import org.koin.android.ext.koin.androidApplication import org.koin.android.ext.koin.androidApplication
import org.koin.androidx.fragment.dsl.fragment import org.koin.androidx.fragment.dsl.fragment
import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.core.module.dsl.viewModel
import org.koin.core.qualifier.named import org.koin.core.qualifier.named
import org.koin.dsl.module import org.koin.dsl.module
import java.io.File import java.io.File
@@ -4,11 +4,11 @@ import android.app.Activity
import android.content.ComponentName import android.content.ComponentName
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri
import android.webkit.JavascriptInterface import android.webkit.JavascriptInterface
import android.widget.Toast import android.widget.Toast
import androidx.activity.result.ActivityResultRegistry import androidx.activity.result.ActivityResultRegistry
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.net.toUri
import androidx.core.text.isDigitsOnly import androidx.core.text.isDigitsOnly
import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleOwner
import kotlinx.coroutines.MainScope import kotlinx.coroutines.MainScope
@@ -137,7 +137,7 @@ class ExternalPlayer(
if (context.packageManager.isPackageInstalled(appPreferences.externalPlayerApp)) { if (context.packageManager.isPackageInstalled(appPreferences.externalPlayerApp)) {
component = getComponent(appPreferences.externalPlayerApp) component = getComponent(appPreferences.externalPlayerApp)
} }
setDataAndType(Uri.parse(url), "video/*") setDataAndType(url.toUri(), "video/*")
putExtra("title", source.name) putExtra("title", source.name)
putExtra("position", source.startTimeMs.toInt()) putExtra("position", source.startTimeMs.toInt())
putExtra("return_result", true) putExtra("return_result", true)
@@ -155,12 +155,12 @@ class ExternalPlayer(
// MX Player API / MPV // MX Player API / MPV
val subtitleUris = externalSubs.map { stream -> val subtitleUris = externalSubs.map { stream ->
Uri.parse(apiClient.createUrl(stream.deliveryUrl)) apiClient.createUrl(stream.deliveryUrl).toUri()
} }
putExtra("subs", subtitleUris.toTypedArray()) putExtra("subs", subtitleUris.toTypedArray())
putExtra("subs.name", externalSubs.map(ExternalSubtitleStream::displayTitle).toTypedArray()) putExtra("subs.name", externalSubs.map(ExternalSubtitleStream::displayTitle).toTypedArray())
putExtra("subs.filename", externalSubs.map(ExternalSubtitleStream::language).toTypedArray()) putExtra("subs.filename", externalSubs.map(ExternalSubtitleStream::language).toTypedArray())
putExtra("subs.enable", enabledSubUrl?.let { url -> arrayOf(Uri.parse(url)) } ?: emptyArray()) putExtra("subs.enable", enabledSubUrl?.let { url -> arrayOf(url.toUri()) } ?: emptyArray())
// VLC // VLC
if (enabledSubUrl != null) putExtra("subtitles_location", enabledSubUrl) if (enabledSubUrl != null) putExtra("subtitles_location", enabledSubUrl)
@@ -4,9 +4,9 @@ import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.media.session.PlaybackState import android.media.session.PlaybackState
import android.net.Uri
import android.webkit.JavascriptInterface import android.webkit.JavascriptInterface
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import org.jellyfin.mobile.events.ActivityEvent import org.jellyfin.mobile.events.ActivityEvent
import org.jellyfin.mobile.events.ActivityEventHandler import org.jellyfin.mobile.events.ActivityEventHandler
import org.jellyfin.mobile.utils.Constants import org.jellyfin.mobile.utils.Constants
@@ -134,7 +134,7 @@ class NativeInterface(private val context: Context) : KoinComponent {
val filename: String = file.getString("filename") val filename: String = file.getString("filename")
val url: String = file.getString("url") val url: String = file.getString("url")
emitEvent(ActivityEvent.DownloadFile(Uri.parse(url), title, filename)) emitEvent(ActivityEvent.DownloadFile(url.toUri(), title, filename))
} }
} catch (e: JSONException) { } catch (e: JSONException) {
Timber.e("Download failed: %s", e.message) Timber.e("Download failed: %s", e.message)
@@ -9,7 +9,6 @@ import androidx.room.Index
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import androidx.room.TypeConverter import androidx.room.TypeConverter
import androidx.room.TypeConverters import androidx.room.TypeConverters
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
import kotlinx.serialization.json.Json.Default.decodeFromString import kotlinx.serialization.json.Json.Default.decodeFromString
import org.jellyfin.mobile.data.entity.DownloadEntity.Key.ITEM_ID import org.jellyfin.mobile.data.entity.DownloadEntity.Key.ITEM_ID
@@ -135,7 +135,7 @@ class DownloadUtils(
) )
} }
private fun isNetworkMetered(): Boolean = connectivityManager?.isActiveNetworkMetered ?: false private fun isNetworkMetered(): Boolean = connectivityManager?.isActiveNetworkMetered == true
private fun isNetworkRoamingCompat(): Boolean = connectivityManager?.activeNetworkInfo?.isRoaming ?: throw AndroidException() private fun isNetworkRoamingCompat(): Boolean = connectivityManager?.activeNetworkInfo?.isRoaming ?: throw AndroidException()
@@ -3,8 +3,8 @@ package org.jellyfin.mobile.events
import android.content.ActivityNotFoundException import android.content.ActivityNotFoundException
import android.content.Intent import android.content.Intent
import android.content.pm.ActivityInfo import android.content.pm.ActivityInfo
import android.net.Uri
import android.os.Bundle import android.os.Bundle
import androidx.core.net.toUri
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle import androidx.lifecycle.repeatOnLifecycle
@@ -68,7 +68,7 @@ class ActivityEventHandler(
} }
is ActivityEvent.OpenUrl -> { is ActivityEvent.OpenUrl -> {
try { try {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(event.uri)) val intent = Intent(Intent.ACTION_VIEW, event.uri.toUri())
startActivity(intent) startActivity(intent)
} catch (e: ActivityNotFoundException) { } catch (e: ActivityNotFoundException) {
Timber.e("openIntent: %s", e.message) Timber.e("openIntent: %s", e.message)
@@ -325,7 +325,7 @@ class QueueManager(
): Array<MediaSource> { ): Array<MediaSource> {
val factory = get<SingleSampleMediaSource.Factory>() val factory = get<SingleSampleMediaSource.Factory>()
return source.externalSubtitleStreams.map { stream -> return source.externalSubtitleStreams.map { stream ->
val uri = Uri.parse(apiClient.createUrl(stream.deliveryUrl)) val uri = apiClient.createUrl(stream.deliveryUrl).toUri()
val mediaItem = MediaItem.SubtitleConfiguration.Builder(uri).apply { val mediaItem = MediaItem.SubtitleConfiguration.Builder(uri).apply {
setId("${ExternalSubtitleStream.ID_PREFIX}${stream.index}") setId("${ExternalSubtitleStream.ID_PREFIX}${stream.index}")
setLabel(stream.displayTitle) setLabel(stream.displayTitle)
@@ -353,7 +353,7 @@ class QueueManager(
source: JellyfinMediaSource, source: JellyfinMediaSource,
fileUri: String, fileUri: String,
): Array<MediaSource> { ): Array<MediaSource> {
val downloadDir: String = File(fileUri).parent val downloadDir = File(fileUri).parent
val factory = get<SingleSampleMediaSource.Factory>() val factory = get<SingleSampleMediaSource.Factory>()
return source.externalSubtitleStreams.map { stream -> return source.externalSubtitleStreams.map { stream ->
val uri: Uri = File(downloadDir, "${stream.index}.subrip").toUri() val uri: Uri = File(downloadDir, "${stream.index}.subrip").toUri()
@@ -1,5 +1,6 @@
package org.jellyfin.mobile.player.source package org.jellyfin.mobile.player.source
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.KSerializer import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerializationException import kotlinx.serialization.SerializationException
import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.descriptors.SerialDescriptor
@@ -15,6 +16,7 @@ import org.jellyfin.sdk.model.api.MediaSourceInfo
import org.jellyfin.sdk.model.serializer.toUUID import org.jellyfin.sdk.model.serializer.toUUID
import java.util.UUID import java.util.UUID
@OptIn(ExperimentalSerializationApi::class)
class JellyfinMediaSourceSerializer : KSerializer<LocalJellyfinMediaSource> { class JellyfinMediaSourceSerializer : KSerializer<LocalJellyfinMediaSource> {
override val descriptor: SerialDescriptor = buildClassSerialDescriptor("JellyfinMediaSource") { override val descriptor: SerialDescriptor = buildClassSerialDescriptor("JellyfinMediaSource") {
element<String>("itemId") element<String>("itemId")
@@ -68,7 +68,7 @@ class ImageProvider : ContentProvider(), KoinComponent {
selectionArgs: Array<out String?>?, selectionArgs: Array<out String?>?,
sortOrder: String?, sortOrder: String?,
): Cursor = MatrixCursor(arrayOf("_id", MediaMetadata.METADATA_KEY_ART_URI)).apply { ): Cursor = MatrixCursor(arrayOf("_id", MediaMetadata.METADATA_KEY_ART_URI)).apply {
addRow(arrayOf(0, uri.toString())) addRow(arrayOf<Any?>(0, uri.toString()))
} }
override fun openTypedAssetFile(uri: Uri, mimeTypeFilter: String, opts: Bundle?): AssetFileDescriptor { override fun openTypedAssetFile(uri: Uri, mimeTypeFilter: String, opts: Bundle?): AssetFileDescriptor {
@@ -27,7 +27,7 @@ import androidx.compose.material.MaterialTheme
import androidx.compose.material.OutlinedTextField import androidx.compose.material.OutlinedTextField
import androidx.compose.material.Text import androidx.compose.material.Text
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.ArrowBack import androidx.compose.material.icons.automirrored.outlined.ArrowBack
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.MutableState import androidx.compose.runtime.MutableState
@@ -278,7 +278,7 @@ private fun ServerDiscoveryList(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
IconButton(onClick = onGoBack) { IconButton(onClick = onGoBack) {
Icon(imageVector = Icons.Outlined.ArrowBack, contentDescription = null) Icon(imageVector = Icons.AutoMirrored.Outlined.ArrowBack, contentDescription = null)
} }
Text( Text(
modifier = Modifier modifier = Modifier
+1 -1
View File
@@ -17,6 +17,6 @@ allprojects {
} }
} }
tasks.create<Delete>("clean") { tasks.register<Delete>("clean") {
delete(rootProject.layout.buildDirectory) delete(rootProject.layout.buildDirectory)
} }
-1
View File
@@ -1,5 +1,4 @@
import org.gradle.api.Project import org.gradle.api.Project
import java.util.*
/** /**
* Get the version name from the current environment or use the fallback. * Get the version name from the current environment or use the fallback.