Skip to content
This repository was archived by the owner on Feb 3, 2025. It is now read-only.

Commit 12d3a05

Browse files
Merge pull request #1205 from MutinyWallet/better-disable-zaps
Only disable zaps if no federations left
2 parents d2f25c9 + faa3107 commit 12d3a05

File tree

3 files changed

+23
-16
lines changed

3 files changed

+23
-16
lines changed

mutiny-core/src/federation.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ pub trait FedimintClient {
241241
pub(crate) struct FederationClient<S: MutinyStorage> {
242242
pub(crate) uuid: String,
243243
pub(crate) fedimint_client: ClientHandleArc,
244-
invite_code: InviteCode,
244+
pub(crate) invite_code: InviteCode,
245245
storage: S,
246246
#[allow(dead_code)]
247247
fedimint_storage: FedimintStorage<S>,

mutiny-core/src/hermes.rs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use bitcoin::hashes::hex::FromHex;
1111
use bitcoin::key::Parity;
1212
use bitcoin::secp256k1::ThirtyTwoByteHash;
1313
use bitcoin::{bip32::ExtendedPrivKey, secp256k1::Secp256k1};
14+
use fedimint_core::api::InviteCode;
1415
use fedimint_core::config::FederationId;
1516
use futures::{pin_mut, select, FutureExt};
1617
use lightning::util::logger::Logger;
@@ -193,7 +194,7 @@ impl<S: MutinyStorage> HermesClient<S> {
193194
&base_url_check_clone,
194195
nostr_client_check_clone,
195196
current_address_check_clone,
196-
f,
197+
&f.invite_code,
197198
&logger_check_clone,
198199
)
199200
.await
@@ -321,14 +322,14 @@ impl<S: MutinyStorage> HermesClient<S> {
321322

322323
pub async fn change_federation_info(
323324
&self,
324-
federation: FederationIdentity,
325+
invite_code: &InviteCode,
325326
) -> Result<(), MutinyError> {
326327
change_federation_info(
327328
&self.http_client,
328329
&self.base_url,
329330
self.client.clone(),
330331
self.current_address.clone(),
331-
federation,
332+
invite_code,
332333
&self.logger,
333334
)
334335
.await
@@ -434,7 +435,7 @@ async fn change_federation_info(
434435
base_url: &str,
435436
nostr_client: Client,
436437
current_address: Arc<RwLock<(Option<String>, bool)>>,
437-
federation: FederationIdentity,
438+
invite_code: &InviteCode,
438439
logger: &MutinyLogger,
439440
) -> Result<(), MutinyError> {
440441
// make sure name is registered already
@@ -444,11 +445,7 @@ async fn change_federation_info(
444445

445446
// create nostr event
446447
let signer = nostr_client.signer().await?;
447-
let event_builder = EventBuilder::new(
448-
NEW_FEDERATION_EVENT_KIND,
449-
federation.invite_code.to_string(),
450-
[],
451-
);
448+
let event_builder = EventBuilder::new(NEW_FEDERATION_EVENT_KIND, invite_code.to_string(), []);
452449
let event = signer.sign_event_builder(event_builder).await?;
453450

454451
// send request

mutiny-core/src/lib.rs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2836,12 +2836,22 @@ impl<S: MutinyStorage> MutinyWallet<S> {
28362836
return Err(MutinyError::NotFound);
28372837
}
28382838

2839-
// remove the federation from hermes
2839+
// update hermes to change the federation
28402840
if let Some(h) = self.hermes_client.as_ref() {
2841-
match h.disable_zaps().await {
2842-
Ok(_) => (),
2843-
Err(e) => {
2844-
log_error!(self.logger, "could not disable hermes zaps: {e}")
2841+
match federations_guard.values().next() {
2842+
None => {
2843+
log_debug!(self.logger, "No federations left, disabling hermes zaps");
2844+
match h.disable_zaps().await {
2845+
Ok(_) => (),
2846+
Err(e) => {
2847+
log_error!(self.logger, "could not disable hermes zaps: {e}")
2848+
}
2849+
}
2850+
}
2851+
Some(f) => {
2852+
if let Err(e) = h.change_federation_info(&f.invite_code).await {
2853+
log_error!(self.logger, "could not change hermes federation: {e}")
2854+
}
28452855
}
28462856
}
28472857
}
@@ -3547,7 +3557,7 @@ pub(crate) async fn create_new_federation<S: MutinyStorage>(
35473557
// change the federation with hermes, if available
35483558
if let Some(h) = hermes_client {
35493559
match h
3550-
.change_federation_info(new_federation_identity.clone())
3560+
.change_federation_info(&new_federation_identity.invite_code)
35513561
.await
35523562
{
35533563
Ok(_) => (),

0 commit comments

Comments
 (0)