Show a dialog to select a signer when using multiple signers

This commit is contained in:
greenart7c3
2025-09-24 09:09:51 -03:00
parent ce81157dad
commit 6391ddbbaa
4 changed files with 131 additions and 2 deletions
@@ -29,9 +29,15 @@ import com.vitorpamplona.quartz.nip55AndroidSigner.api.foreground.intents.result
import com.vitorpamplona.quartz.nip55AndroidSigner.api.permission.Permission
object ExternalSignerLogin {
fun createIntent(permissions: List<Permission> = LoginRequest.DefaultPermissions): Intent {
fun createIntent(
permissions: List<Permission> = LoginRequest.DefaultPermissions,
packageName: String = "",
): Intent {
val intent = LoginRequest.assemble(permissions)
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP)
if (packageName.isNotBlank()) {
intent.`package` = packageName
}
return intent
}
@@ -23,6 +23,7 @@ package com.vitorpamplona.quartz.nip55AndroidSigner.client
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.content.pm.ResolveInfo
import androidx.core.net.toUri
@SuppressLint("QueryPermissionsNeeded")
@@ -35,3 +36,14 @@ fun isExternalSignerInstalled(context: Context): Boolean =
},
0,
).isNotEmpty()
@SuppressLint("QueryPermissionsNeeded")
fun getExternalSignersInstalled(context: Context): List<ResolveInfo> =
context.packageManager
.queryIntentActivities(
Intent().apply {
action = Intent.ACTION_VIEW
data = "nostrsigner:".toUri()
},
0,
)