mirror of
https://github.com/jellyfin/jellyfin-android.git
synced 2026-09-02 21:04:10 +03:00
Fix various linter and compiler warnings
This commit is contained in:
committed by
Niels van Velzen
parent
0d36d61626
commit
bb473ce9e3
@@ -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
@@ -17,6 +17,6 @@ allprojects {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.create<Delete>("clean") {
|
tasks.register<Delete>("clean") {
|
||||||
delete(rootProject.layout.buildDirectory)
|
delete(rootProject.layout.buildDirectory)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user