diff --git a/mutiny-core/src/nostr/mod.rs b/mutiny-core/src/nostr/mod.rs index 33cbf29ed..dc45d9a56 100644 --- a/mutiny-core/src/nostr/mod.rs +++ b/mutiny-core/src/nostr/mod.rs @@ -318,6 +318,21 @@ impl NostrManager { Ok(with_nip05) } + /// Sets the user's nostr profile metadata as deleted + pub async fn delete_profile(&self) -> Result { + let metadata = Metadata::default() + .name("Deleted") + .display_name("Deleted") + .about("Deleted") + .custom_field("deleted", true); + + let event_id = self.client.set_metadata(&metadata).await?; + log_info!(self.logger, "New kind 0: {event_id}"); + self.storage.set_nostr_profile(metadata.clone())?; + + Ok(metadata) + } + pub fn get_profile(&self) -> Result { Ok(self.storage.get_nostr_profile()?.unwrap_or_default()) } diff --git a/mutiny-wasm/src/lib.rs b/mutiny-wasm/src/lib.rs index 78ce16b9a..7ef695b0c 100644 --- a/mutiny-wasm/src/lib.rs +++ b/mutiny-wasm/src/lib.rs @@ -1882,6 +1882,13 @@ impl MutinyWallet { Ok(JsValue::from_serde(&profile)?) } + /// Sets the user's nostr profile data to a "deleted" state + #[wasm_bindgen] + pub async fn delete_profile(&self) -> Result { + let profile = self.inner.nostr.delete_profile().await?; + Ok(JsValue::from_serde(&profile)?) + } + /// Syncs all of our nostr data from the configured primal instance pub async fn sync_nostr(&self) -> Result<(), MutinyJsError> { self.inner.sync_nostr().await?;