refactor: wrap with try finally

This commit is contained in:
2026-06-10 16:54:53 +02:00
parent 8be9d8ea43
commit f9ddebac8a
@@ -103,44 +103,46 @@ class NwcViewModel(
Timber.d("[$TAG] createConnection description='$description' permissions=$permissions") Timber.d("[$TAG] createConnection description='$description' permissions=$permissions")
viewModelScope.launch { viewModelScope.launch {
_isCreating.value = true _isCreating.value = true
runCatching { try {
val keypair = NwcKeyGenerator.generate() runCatching {
Timber.d("[$TAG] generated keypair pubkey=${keypair.pubKeyHex.take(16)}") val keypair = NwcKeyGenerator.generate()
check(keypair.pubKeyHex.length == 64) { Timber.d("[$TAG] generated keypair pubkey=${keypair.pubKeyHex.take(16)}")
"pubKeyHex must be 64 hex chars, got ${keypair.pubKeyHex.length}" 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}" 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] generated keypair pubkey=${keypair.pubKeyHex.take(16)}… (${keypair.pubKeyHex.length} chars)")
Timber.d("[$TAG] PAIRING secret=${keypair.privKeyHex}") Timber.d("[$TAG] REGISTERING pubkey=${keypair.pubKeyHex}")
repo.registerNwcKey( repo.registerNwcKey(
pubkey = keypair.pubKeyHex, pubkey = keypair.pubKeyHex,
request = NwcRegistrationRequest( request = NwcRegistrationRequest(
description = description, description = description,
permissions = permissions, permissions = permissions,
expires_at = expiresAt, expires_at = expiresAt,
budgets = budgets budgets = budgets
)
) )
) Timber.i("[$TAG] registered key ✓")
Timber.i("[$TAG] registered key ✓")
val url = repo.getNwcPairingUrl(keypair.privKeyHex) val url = repo.getNwcPairingUrl(keypair.privKeyHex)
Timber.i("[$TAG] pairing URL fetched ✓") Timber.i("[$TAG] pairing URL fetched ✓")
Timber.d("[$TAG] URI=$url") Timber.d("[$TAG] URI=$url")
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) { fun deleteConnection(pubkey: String) {
Timber.d("[$TAG] deleteConnection pubkey=${pubkey.take(16)}") Timber.d("[$TAG] deleteConnection pubkey=${pubkey.take(16)}")
_isDeleting.value = true
viewModelScope.launch { viewModelScope.launch {
runCatching { repo.deleteNwcKey(pubkey) } _isDeleting.value = true
.onSuccess { try {
Timber.i("[$TAG] deleted connection pubkey=${pubkey.take(16)}… ✓") runCatching { repo.deleteNwcKey(pubkey) }
// Remove locally for instant feedback, then reload to sync .onSuccess {
val current = _uiState.value Timber.i("[$TAG] deleted connection pubkey=${pubkey.take(16)}… ✓")
if (current is NwcUiState.Success) { val current = _uiState.value
_uiState.value = NwcUiState.Success( if (current is NwcUiState.Success) {
current.connections.filter { it.data.pubkey != pubkey } _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() } finally {
} _isDeleting.value = false
.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 }
} }
} }
fun loadConnectionDetail(pubkey: String) { fun loadConnectionDetail(pubkey: String) {
Timber.d("[$TAG] loadConnectionDetail pubkey=${pubkey.take(16)}") Timber.d("[$TAG] loadConnectionDetail pubkey=${pubkey.take(16)}")
_connectionDetailState.value = ConnectionDetailState.Loading _connectionDetailState.value = ConnectionDetailState.Loading