refactor: wrap with try finally
This commit is contained in:
@@ -103,44 +103,46 @@ class NwcViewModel(
|
||||
Timber.d("[$TAG] createConnection description='$description' permissions=$permissions")
|
||||
viewModelScope.launch {
|
||||
_isCreating.value = true
|
||||
runCatching {
|
||||
val keypair = NwcKeyGenerator.generate()
|
||||
Timber.d("[$TAG] generated keypair pubkey=${keypair.pubKeyHex.take(16)}…")
|
||||
check(keypair.pubKeyHex.length == 64) {
|
||||
"pubKeyHex must be 64 hex chars, got ${keypair.pubKeyHex.length}"
|
||||
}
|
||||
check(keypair.privKeyHex.length == 64) {
|
||||
"privKeyHex must be 64 hex chars, got ${keypair.privKeyHex.length}"
|
||||
}
|
||||
Timber.d("[$TAG] generated keypair pubkey=${keypair.pubKeyHex.take(16)}… (${keypair.pubKeyHex.length} chars)")
|
||||
Timber.d("[$TAG] REGISTERING pubkey=${keypair.pubKeyHex}")
|
||||
Timber.d("[$TAG] PAIRING secret=${keypair.privKeyHex}")
|
||||
try {
|
||||
runCatching {
|
||||
val keypair = NwcKeyGenerator.generate()
|
||||
Timber.d("[$TAG] generated keypair pubkey=${keypair.pubKeyHex.take(16)}…")
|
||||
check(keypair.pubKeyHex.length == 64) {
|
||||
"pubKeyHex must be 64 hex chars, got ${keypair.pubKeyHex.length}"
|
||||
}
|
||||
check(keypair.privKeyHex.length == 64) {
|
||||
"privKeyHex must be 64 hex chars, got ${keypair.privKeyHex.length}"
|
||||
}
|
||||
Timber.d("[$TAG] generated keypair pubkey=${keypair.pubKeyHex.take(16)}… (${keypair.pubKeyHex.length} chars)")
|
||||
Timber.d("[$TAG] REGISTERING pubkey=${keypair.pubKeyHex}")
|
||||
|
||||
repo.registerNwcKey(
|
||||
pubkey = keypair.pubKeyHex,
|
||||
request = NwcRegistrationRequest(
|
||||
description = description,
|
||||
permissions = permissions,
|
||||
expires_at = expiresAt,
|
||||
budgets = budgets
|
||||
repo.registerNwcKey(
|
||||
pubkey = keypair.pubKeyHex,
|
||||
request = NwcRegistrationRequest(
|
||||
description = description,
|
||||
permissions = permissions,
|
||||
expires_at = expiresAt,
|
||||
budgets = budgets
|
||||
)
|
||||
)
|
||||
)
|
||||
Timber.i("[$TAG] registered key ✓")
|
||||
Timber.i("[$TAG] registered key ✓")
|
||||
|
||||
val url = repo.getNwcPairingUrl(keypair.privKeyHex)
|
||||
Timber.i("[$TAG] pairing URL fetched ✓")
|
||||
Timber.d("[$TAG] URI=$url")
|
||||
url
|
||||
val url = repo.getNwcPairingUrl(keypair.privKeyHex)
|
||||
Timber.i("[$TAG] pairing URL fetched ✓")
|
||||
Timber.d("[$TAG] URI=$url")
|
||||
url
|
||||
}
|
||||
.onSuccess { url ->
|
||||
_pairingUrl.value = url
|
||||
loadConnections()
|
||||
}
|
||||
.onFailure { e ->
|
||||
Timber.e(e, "[$TAG] createConnection failed")
|
||||
_uiState.value = NwcUiState.Error(e.message ?: "Failed to create connection")
|
||||
}
|
||||
} finally {
|
||||
_isCreating.value = false
|
||||
}
|
||||
.onSuccess { url ->
|
||||
_pairingUrl.value = url
|
||||
loadConnections()
|
||||
}
|
||||
.onFailure { e ->
|
||||
Timber.e(e, "[$TAG] createConnection failed")
|
||||
_uiState.value = NwcUiState.Error(e.message ?: "Failed to create connection")
|
||||
}
|
||||
.also { _isCreating.value = false }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,30 +156,33 @@ class NwcViewModel(
|
||||
|
||||
fun deleteConnection(pubkey: String) {
|
||||
Timber.d("[$TAG] deleteConnection pubkey=${pubkey.take(16)}…")
|
||||
_isDeleting.value = true
|
||||
viewModelScope.launch {
|
||||
runCatching { repo.deleteNwcKey(pubkey) }
|
||||
.onSuccess {
|
||||
Timber.i("[$TAG] deleted connection pubkey=${pubkey.take(16)}… ✓")
|
||||
// Remove locally for instant feedback, then reload to sync
|
||||
val current = _uiState.value
|
||||
if (current is NwcUiState.Success) {
|
||||
_uiState.value = NwcUiState.Success(
|
||||
current.connections.filter { it.data.pubkey != pubkey }
|
||||
_isDeleting.value = true
|
||||
try {
|
||||
runCatching { repo.deleteNwcKey(pubkey) }
|
||||
.onSuccess {
|
||||
Timber.i("[$TAG] deleted connection pubkey=${pubkey.take(16)}… ✓")
|
||||
val current = _uiState.value
|
||||
if (current is NwcUiState.Success) {
|
||||
_uiState.value = NwcUiState.Success(
|
||||
current.connections.filter { it.data.pubkey != pubkey }
|
||||
)
|
||||
}
|
||||
loadConnections()
|
||||
}
|
||||
.onFailure { e ->
|
||||
Timber.e(e, "[$TAG] failed to delete connection pubkey=${pubkey.take(16)}…")
|
||||
_uiState.value = NwcUiState.Error(
|
||||
e.message ?: "Failed to delete connection"
|
||||
)
|
||||
}
|
||||
loadConnections()
|
||||
}
|
||||
.onFailure { e ->
|
||||
Timber.e(e, "[$TAG] failed to delete connection pubkey=${pubkey.take(16)}…")
|
||||
_uiState.value = NwcUiState.Error(
|
||||
e.message ?: "Failed to delete connection"
|
||||
)
|
||||
}
|
||||
.also { _isDeleting.value = false }
|
||||
} finally {
|
||||
_isDeleting.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun loadConnectionDetail(pubkey: String) {
|
||||
Timber.d("[$TAG] loadConnectionDetail pubkey=${pubkey.take(16)}…")
|
||||
_connectionDetailState.value = ConnectionDetailState.Loading
|
||||
|
||||
Reference in New Issue
Block a user