Check for the result field when using external signer
This commit is contained in:
@@ -58,6 +58,7 @@ class Permission(
|
|||||||
class Result(
|
class Result(
|
||||||
@JsonProperty("package") val `package`: String?,
|
@JsonProperty("package") val `package`: String?,
|
||||||
@JsonProperty("signature") val signature: String?,
|
@JsonProperty("signature") val signature: String?,
|
||||||
|
@JsonProperty("result") val result: String?,
|
||||||
@JsonProperty("id") val id: String?,
|
@JsonProperty("id") val id: String?,
|
||||||
) {
|
) {
|
||||||
companion object {
|
companion object {
|
||||||
@@ -76,7 +77,8 @@ class Result(
|
|||||||
val jsonObject: JsonNode = jp.codec.readTree(jp)
|
val jsonObject: JsonNode = jp.codec.readTree(jp)
|
||||||
return Result(
|
return Result(
|
||||||
jsonObject.get("package").asText().intern(),
|
jsonObject.get("package").asText().intern(),
|
||||||
jsonObject.get("signature").asText().intern(),
|
jsonObject.get("signature")?.asText()?.intern(),
|
||||||
|
jsonObject.get("result")?.asText()?.intern(),
|
||||||
jsonObject.get("id").asText().intern(),
|
jsonObject.get("id").asText().intern(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -120,7 +122,7 @@ class ExternalSignerLauncher(
|
|||||||
if (results != null) {
|
if (results != null) {
|
||||||
val localResults: Array<Result> = Result.fromJsonArray(results)
|
val localResults: Array<Result> = Result.fromJsonArray(results)
|
||||||
localResults.forEach {
|
localResults.forEach {
|
||||||
val signature = it.signature ?: ""
|
val signature = it.result ?: it.signature ?: ""
|
||||||
val packageName = it.`package`?.let { "-$it" } ?: ""
|
val packageName = it.`package`?.let { "-$it" } ?: ""
|
||||||
val id = it.id ?: ""
|
val id = it.id ?: ""
|
||||||
if (id.isNotBlank()) {
|
if (id.isNotBlank()) {
|
||||||
@@ -130,7 +132,7 @@ class ExternalSignerLauncher(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
val signature = data.getStringExtra("signature") ?: ""
|
val signature = data.getStringExtra("result") ?: data.getStringExtra("signature") ?: ""
|
||||||
val packageName = data.getStringExtra("package")?.let { "-$it" } ?: ""
|
val packageName = data.getStringExtra("package")?.let { "-$it" } ?: ""
|
||||||
val id = data.getStringExtra("id") ?: ""
|
val id = data.getStringExtra("id") ?: ""
|
||||||
if (id.isNotBlank()) {
|
if (id.isNotBlank()) {
|
||||||
@@ -239,13 +241,11 @@ class ExternalSignerLauncher(
|
|||||||
|
|
||||||
fun openSigner(
|
fun openSigner(
|
||||||
event: EventInterface,
|
event: EventInterface,
|
||||||
columnName: String = "signature",
|
|
||||||
onReady: (String) -> Unit,
|
onReady: (String) -> Unit,
|
||||||
) {
|
) {
|
||||||
getDataFromResolver(
|
getDataFromResolver(
|
||||||
SignerType.SIGN_EVENT,
|
SignerType.SIGN_EVENT,
|
||||||
arrayOf(event.toJson(), event.pubKey()),
|
arrayOf(event.toJson(), event.pubKey()),
|
||||||
columnName,
|
|
||||||
).fold(
|
).fold(
|
||||||
onFailure = { },
|
onFailure = { },
|
||||||
onSuccess = {
|
onSuccess = {
|
||||||
@@ -267,13 +267,11 @@ class ExternalSignerLauncher(
|
|||||||
private fun getDataFromResolver(
|
private fun getDataFromResolver(
|
||||||
signerType: SignerType,
|
signerType: SignerType,
|
||||||
data: Array<out String>,
|
data: Array<out String>,
|
||||||
columnName: String = "signature",
|
): kotlin.Result<String?> = getDataFromResolver(signerType, data, contentResolver)
|
||||||
): kotlin.Result<String?> = getDataFromResolver(signerType, data, columnName, contentResolver)
|
|
||||||
|
|
||||||
private fun getDataFromResolver(
|
private fun getDataFromResolver(
|
||||||
signerType: SignerType,
|
signerType: SignerType,
|
||||||
data: Array<out String>,
|
data: Array<out String>,
|
||||||
columnName: String = "signature",
|
|
||||||
contentResolver: (() -> ContentResolver)? = null,
|
contentResolver: (() -> ContentResolver)? = null,
|
||||||
): kotlin.Result<String?> {
|
): kotlin.Result<String?> {
|
||||||
val localData =
|
val localData =
|
||||||
@@ -301,9 +299,12 @@ class ExternalSignerLauncher(
|
|||||||
Log.d("getDataFromResolver", "Permission denied")
|
Log.d("getDataFromResolver", "Permission denied")
|
||||||
return kotlin.Result.failure(Exception("Permission denied"))
|
return kotlin.Result.failure(Exception("Permission denied"))
|
||||||
}
|
}
|
||||||
val index = it.getColumnIndex(columnName)
|
var index = it.getColumnIndex("result")
|
||||||
if (index < 0) {
|
if (index < 0) {
|
||||||
Log.d("getDataFromResolver", "column '$columnName' not found")
|
index = it.getColumnIndex("signature")
|
||||||
|
}
|
||||||
|
if (index < 0) {
|
||||||
|
Log.d("getDataFromResolver", "column 'signature' not found")
|
||||||
return kotlin.Result.success(null)
|
return kotlin.Result.success(null)
|
||||||
}
|
}
|
||||||
return kotlin.Result.success(it.getString(index))
|
return kotlin.Result.success(it.getString(index))
|
||||||
|
|||||||
Reference in New Issue
Block a user