From 954330064d019c9ac219f10a3e99a50601435a4f Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Wed, 22 Nov 2023 17:04:57 -0500 Subject: [PATCH] Trying to save from crashes on the signer --- .../quartz/signers/ExternalSignerLauncher.kt | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/signers/ExternalSignerLauncher.kt b/quartz/src/main/java/com/vitorpamplona/quartz/signers/ExternalSignerLauncher.kt index 4e0d38ed4..acb50e5ff 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/signers/ExternalSignerLauncher.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/signers/ExternalSignerLauncher.kt @@ -166,37 +166,41 @@ class ExternalSignerLauncher( } fun getDataFromResolver(signerType: SignerType, data: Array, columnName: String = "signature"): String? { - return contentResolver?.let { it() }?.let { - getDataFromResolver(signerType, data, columnName, it) - } + return getDataFromResolver(signerType, data, columnName, contentResolver) } - fun getDataFromResolver(signerType: SignerType, data: Array, columnName: String = "signature", contentResolver: ContentResolver): String? { + fun getDataFromResolver(signerType: SignerType, data: Array, columnName: String = "signature", contentResolver: (() -> ContentResolver)? = null): String? { val localData = if (signerType !== SignerType.GET_PUBLIC_KEY) { data.toList().plus(npub).toTypedArray() } else { data } - contentResolver.query( - Uri.parse("content://${signerPackageName}.$signerType"), - localData, - null, - null, - null - ).use { - if (it == null) { - return null - } - if (it.moveToFirst()) { - val index = it.getColumnIndex(columnName) - if (index < 0) { - Log.d("getDataFromResolver", "column '$columnName' not found") + try { + contentResolver?.let { it() }?.query( + Uri.parse("content://${signerPackageName}.$signerType"), + localData, + null, + null, + null + ).use { + if (it == null) { return null } - return it.getString(index) + if (it.moveToFirst()) { + val index = it.getColumnIndex(columnName) + if (index < 0) { + Log.d("getDataFromResolver", "column '$columnName' not found") + return null + } + return it.getString(index) + } } + } catch (e: Exception) { + Log.e("ExternalSignerLauncher", "Failed to query the Signer app in the background") + return null } + return null }