From 30c4e3c6461571e0008e27846f39faa7861971b9 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 24 Apr 2025 16:52:25 -0400 Subject: [PATCH] Fixes deprecated URI parse function warnings --- .../vitorpamplona/amethyst/service/PackageUtils.kt | 6 ++++-- .../service/notifications/NotificationUtils.kt | 4 ++-- .../service/playback/websocket/WssStreamDataSource.kt | 3 ++- .../relayClient/reqCommand/event/EventObservers.kt | 1 - .../amethyst/service/uploads/ImageDownloader.kt | 2 +- .../amethyst/ui/components/CashuRedeem.kt | 4 ++-- .../vitorpamplona/amethyst/ui/note/ZapCustomDialog.kt | 4 ++-- .../nip55AndroidSigner/ExternalSignerLauncher.kt | 11 ++++++----- 8 files changed, 19 insertions(+), 16 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/PackageUtils.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/PackageUtils.kt index 736911a54..f70c395d0 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/PackageUtils.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/PackageUtils.kt @@ -20,11 +20,13 @@ */ package com.vitorpamplona.amethyst.service +import android.annotation.SuppressLint import android.content.Context import android.content.Intent -import android.net.Uri +import androidx.core.net.toUri object PackageUtils { + @SuppressLint("QueryPermissionsNeeded") private fun isPackageInstalled( context: Context, target: String, @@ -39,7 +41,7 @@ object PackageUtils { val intent = Intent().apply { action = Intent.ACTION_VIEW - data = Uri.parse("nostrsigner:") + data = "nostrsigner:".toUri() } val infos = context.packageManager.queryIntentActivities(intent, 0) return infos.size > 0 diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/NotificationUtils.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/NotificationUtils.kt index 016ca7817..251cbc9d4 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/NotificationUtils.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/NotificationUtils.kt @@ -26,9 +26,9 @@ import android.app.PendingIntent import android.content.Context import android.content.Intent import android.graphics.drawable.BitmapDrawable -import android.net.Uri import android.service.notification.StatusBarNotification import androidx.core.app.NotificationCompat +import androidx.core.net.toUri import coil3.ImageLoader import coil3.asDrawable import coil3.executeBlocking @@ -201,7 +201,7 @@ object NotificationUtils { } val contentIntent = - Intent(applicationContext, MainActivity::class.java).apply { data = Uri.parse(uri) } + Intent(applicationContext, MainActivity::class.java).apply { data = uri.toUri() } val contentPendingIntent = PendingIntent.getActivity( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/websocket/WssStreamDataSource.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/websocket/WssStreamDataSource.kt index 4f2b15089..fb3a4e43e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/websocket/WssStreamDataSource.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/websocket/WssStreamDataSource.kt @@ -22,6 +22,7 @@ package com.vitorpamplona.amethyst.service.playback.websocket import android.net.Uri import androidx.annotation.OptIn +import androidx.core.net.toUri import androidx.media3.common.util.UnstableApi import androidx.media3.datasource.BaseDataSource import androidx.media3.datasource.DataSource @@ -64,7 +65,7 @@ class WssStreamDataSource( override fun getUri(): Uri? { webSocketClient?.request()?.url?.let { - return Uri.parse(it.toString()) + return it.toString().toUri() } return null diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/event/EventObservers.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/event/EventObservers.kt index fa7a11cec..8fedff387 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/event/EventObservers.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/event/EventObservers.kt @@ -31,7 +31,6 @@ import com.vitorpamplona.quartz.nip01Core.core.Event import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged -import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.mapLatest import kotlinx.coroutines.flow.sample diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/ImageDownloader.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/ImageDownloader.kt index a515e5939..dde8add95 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/ImageDownloader.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/ImageDownloader.kt @@ -42,7 +42,7 @@ class ImageDownloader { var imageData: Blob? = null var tentatives = 0 - // Servers are usually not ready.. so tries to download it for 15 times/seconds. + // Servers are usually not ready, so tries to download it for 15 times/seconds. while (imageData == null && tentatives < 15) { imageData = try { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/CashuRedeem.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/CashuRedeem.kt index a7aa1d7f4..ab06c1e4a 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/CashuRedeem.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/CashuRedeem.kt @@ -22,7 +22,6 @@ package com.vitorpamplona.amethyst.ui.components import android.content.Context import android.content.Intent -import android.net.Uri import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row @@ -53,6 +52,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.core.content.ContextCompat.startActivity +import androidx.core.net.toUri import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.hashtags.Cashu import com.vitorpamplona.amethyst.commons.hashtags.CustomHashTagIcons @@ -209,7 +209,7 @@ fun CashuPreviewNew( FilledTonalButton( onClick = { try { - val intent = Intent(Intent.ACTION_VIEW, Uri.parse("cashu://${token.token}")) + val intent = Intent(Intent.ACTION_VIEW, "cashu://${token.token}".toUri()) intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK startActivity(context, intent, null) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapCustomDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapCustomDialog.kt index 364865fb5..e59ccb04e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapCustomDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapCustomDialog.kt @@ -22,7 +22,6 @@ package com.vitorpamplona.amethyst.ui.note import android.content.Context import android.content.Intent -import android.net.Uri import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -58,6 +57,7 @@ import androidx.compose.ui.unit.sp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties import androidx.core.content.ContextCompat +import androidx.core.net.toUri import androidx.lifecycle.ViewModel import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R @@ -388,7 +388,7 @@ fun payViaIntent( onError: (String) -> Unit, ) { try { - val intent = Intent(Intent.ACTION_VIEW, Uri.parse("lightning:$invoice")) + val intent = Intent(Intent.ACTION_VIEW, "lightning:$invoice".toUri()) intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK ContextCompat.startActivity(context, intent, null) diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip55AndroidSigner/ExternalSignerLauncher.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip55AndroidSigner/ExternalSignerLauncher.kt index fd59617c0..85f141d91 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip55AndroidSigner/ExternalSignerLauncher.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip55AndroidSigner/ExternalSignerLauncher.kt @@ -22,14 +22,15 @@ package com.vitorpamplona.quartz.nip55AndroidSigner import android.content.ContentResolver import android.content.Intent -import android.net.Uri import android.util.Log import android.util.LruCache +import androidx.core.net.toUri import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.core.JsonParser import com.fasterxml.jackson.databind.DeserializationContext import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.databind.JsonNode +import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.deser.std.StdDeserializer import com.fasterxml.jackson.databind.module.SimpleModule import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper @@ -63,7 +64,7 @@ class Result( @JsonProperty("id") val id: String?, ) { companion object { - val mapper = + val mapper: ObjectMapper = jacksonObjectMapper() .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) .registerModule( @@ -210,7 +211,7 @@ class ExternalSignerLauncher( id: String, onReady: (String) -> Unit, ) { - val intent = Intent(Intent.ACTION_VIEW, Uri.parse("nostrsigner:$data")) + val intent = Intent(Intent.ACTION_VIEW, "nostrsigner:$data".toUri()) val signerType = when (type) { SignerType.SIGN_EVENT -> "sign_event" @@ -287,7 +288,7 @@ class ExternalSignerLauncher( contentResolver ?.let { it() } ?.query( - Uri.parse("content://$signerPackageName.$signerType"), + "content://$signerPackageName.$signerType".toUri(), localData, "1", null, @@ -313,7 +314,7 @@ class ExternalSignerLauncher( } } } catch (e: Exception) { - Log.e("ExternalSignerLauncher", "Failed to query the Signer app in the background") + Log.e("ExternalSignerLauncher", "Failed to query the Signer app in the background", e) return kotlin.Result.success(null) }