Delete nwc events after not needed

This commit is contained in:
Tony Giorgio
2023-06-02 16:51:44 -05:00
parent 4e794cc9bf
commit cad4dfee28

View File

@@ -446,6 +446,12 @@ pub async fn get_nwc_events(
.await? .await?
.unwrap_or_default(); .unwrap_or_default();
for nwc_event in nwc_events { for nwc_event in nwc_events {
// delete responses since we don't care after sending
if kind == Kind::WalletConnectResponse {
if let Err(e) = delete_nwc_response(&nwc_event, ctx).await {
console_log!("failed to delete nwc response: {e}");
}
}
events.push(nwc_event); events.push(nwc_event);
} }
} }
@@ -497,7 +503,7 @@ pub async fn handle_nwc_event(
/// When a NWC request has been fulfilled, delete the request from KV /// When a NWC request has been fulfilled, delete the request from KV
pub async fn delete_nwc_request(event: Event, ctx: &RouteContext<()>) -> Result<()> { pub async fn delete_nwc_request(event: Event, ctx: &RouteContext<()>) -> Result<()> {
let kv_store = match event.kind { let kv_store = match event.kind {
Kind::WalletConnectResponse => ctx.kv("NWC_RESPONSES")?, Kind::WalletConnectResponse => ctx.kv("NWC_REQUESTS")?,
_ => return Ok(()), // skip other event types _ => return Ok(()), // skip other event types
}; };
@@ -514,7 +520,7 @@ pub async fn delete_nwc_request(event: Event, ctx: &RouteContext<()>) -> Result<
// save new vector of events // save new vector of events
kv_store.put(key, new_events)?.execute().await?; kv_store.put(key, new_events)?.execute().await?;
console_log!("deleted nwc event: {}", event_id); console_log!("deleted nwc request event: {}", event_id);
} }
Ok(None) => return Ok(()), Ok(None) => return Ok(()),
Err(e) => { Err(e) => {
@@ -528,6 +534,31 @@ pub async fn delete_nwc_request(event: Event, ctx: &RouteContext<()>) -> Result<
Ok(()) Ok(())
} }
pub async fn delete_nwc_response(event: &Event, ctx: &RouteContext<()>) -> Result<()> {
let kv_store = match event.kind {
Kind::WalletConnectResponse => ctx.kv("NWC_RESPONSES")?,
_ => return Ok(()), // skip other event types
};
let key = &event.pubkey.to_string();
match kv_store.get(key).json::<Vec<Event>>().await {
Ok(Some(current)) => {
let new_events: Vec<Event> = current.into_iter().filter(|e| e.id != event.id).collect();
// save new vector of events
kv_store.put(key, new_events)?.execute().await?;
console_log!("deleted nwc response event: {}", event.id);
}
Ok(None) => return Ok(()),
Err(e) => {
console_log!("error getting nwc events from KV: {e}");
return Ok(());
}
};
Ok(())
}
fn relay_response(msg: RelayMessage) -> worker::Result<Response> { fn relay_response(msg: RelayMessage) -> worker::Result<Response> {
Response::from_json(&msg)?.with_cors(&cors()) Response::from_json(&msg)?.with_cors(&cors())
} }