fix
This commit is contained in:
@@ -69,7 +69,7 @@ class AuthViewModel(
|
|||||||
}
|
}
|
||||||
|
|
||||||
runCatching {
|
runCatching {
|
||||||
val signer = createSigner(secret)
|
val (signer, _) = createSigner(secret)
|
||||||
nostr.setSigner(signer)
|
nostr.setSigner(signer)
|
||||||
}.onSuccess {
|
}.onSuccess {
|
||||||
_state.update { it.copy(signerRequired = false) }
|
_state.update { it.copy(signerRequired = false) }
|
||||||
@@ -121,22 +121,27 @@ class AuthViewModel(
|
|||||||
return keys
|
return keys
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun createSigner(secret: String, password: String? = null): AsyncNostrSigner {
|
private suspend fun createSigner(
|
||||||
|
secret: String,
|
||||||
|
password: String? = null
|
||||||
|
): Pair<AsyncNostrSigner, String?> {
|
||||||
return when {
|
return when {
|
||||||
secret.startsWith("nsec1") -> Keys.parse(secret)
|
secret.startsWith("nsec1") -> Keys.parse(secret) to null
|
||||||
|
|
||||||
secret.startsWith("ncryptsec1") -> {
|
secret.startsWith("ncryptsec1") -> {
|
||||||
if (password == null) throw IllegalArgumentException("Password is required")
|
if (password == null) throw IllegalArgumentException("Password is required")
|
||||||
val enc = EncryptedSecretKey.fromBech32(secret)
|
val enc = EncryptedSecretKey.fromBech32(secret)
|
||||||
val secret = enc.decrypt(password)
|
val secret = enc.decrypt(password)
|
||||||
Keys(secret)
|
val keys = Keys(secret)
|
||||||
|
|
||||||
|
keys to keys.secretKey().toBech32()
|
||||||
}
|
}
|
||||||
|
|
||||||
secret.startsWith("bunker://") -> {
|
secret.startsWith("bunker://") -> {
|
||||||
val appKeys = getOrInitAppKeys()
|
val appKeys = getOrInitAppKeys()
|
||||||
val bunker = NostrConnectUri.parse(secret)
|
val bunker = NostrConnectUri.parse(secret)
|
||||||
val timeout = 50.seconds
|
val timeout = 50.seconds
|
||||||
NostrConnect(uri = bunker, appKeys, timeout, null)
|
NostrConnect(uri = bunker, appKeys, timeout, null) to null
|
||||||
}
|
}
|
||||||
|
|
||||||
secret.startsWith("nip55://") -> {
|
secret.startsWith("nip55://") -> {
|
||||||
@@ -149,7 +154,7 @@ class AuthViewModel(
|
|||||||
val pubkey = PublicKey.parse(parts[1])
|
val pubkey = PublicKey.parse(parts[1])
|
||||||
|
|
||||||
handler.setPackageName(packageName)
|
handler.setPackageName(packageName)
|
||||||
ExternalSignerProxy(handler, pubkey)
|
ExternalSignerProxy(handler, pubkey) to null
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> throw IllegalArgumentException("Invalid secret format")
|
else -> throw IllegalArgumentException("Invalid secret format")
|
||||||
@@ -157,11 +162,13 @@ class AuthViewModel(
|
|||||||
}
|
}
|
||||||
|
|
||||||
suspend fun importIdentity(secret: String, password: String? = null) {
|
suspend fun importIdentity(secret: String, password: String? = null) {
|
||||||
val signer = createSigner(secret, password)
|
val (signer, decryptedSecret) = createSigner(secret, password)
|
||||||
// Update signer
|
// Update signer
|
||||||
nostr.setSigner(signer)
|
nostr.setSigner(signer)
|
||||||
// Persist the secret in the secret storage
|
// Persist the secret in the secret storage
|
||||||
secretStore.set(KEY_USER_SIGNER, secret)
|
secretStore.set(KEY_USER_SIGNER, decryptedSecret ?: secret)
|
||||||
|
// Update local states
|
||||||
|
_state.update { it.copy(signerRequired = false) }
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun connectExternalSigner() {
|
suspend fun connectExternalSigner() {
|
||||||
@@ -206,7 +213,7 @@ class AuthViewModel(
|
|||||||
val keys = Keys.generate()
|
val keys = Keys.generate()
|
||||||
val secret = keys.secretKey().toBech32()
|
val secret = keys.secretKey().toBech32()
|
||||||
val avatarUrl = picture?.let {
|
val avatarUrl = picture?.let {
|
||||||
mediaRepository.blossomUpload(nostr.signer.get(), it, contentType ?: "image/jpeg")
|
mediaRepository.blossomUpload(keys, it, contentType ?: "image/jpeg")
|
||||||
}
|
}
|
||||||
// Create identity
|
// Create identity
|
||||||
nostr.profiles.createIdentity(keys = keys, name = name, bio = bio, picture = avatarUrl)
|
nostr.profiles.createIdentity(keys = keys, name = name, bio = bio, picture = avatarUrl)
|
||||||
|
|||||||
Reference in New Issue
Block a user