refactor: wrap with try finally
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user