diff --git a/crates/buzz-db/src/store/relay_invite.rs b/crates/buzz-db/src/store/relay_invite.rs index 22167b85ac..f6df89c81e 100644 --- a/crates/buzz-db/src/store/relay_invite.rs +++ b/crates/buzz-db/src/store/relay_invite.rs @@ -361,6 +361,8 @@ pub async fn claim_relay_invite_with_owner( lock_admission(&mut tx, community).await?; if claim_owner::claimant_restricted(&mut tx, community, claimer_pubkey, verified_owner).await? { + tx.rollback().await?; + log_claim_outcome(community, None, "restricted", None, None); return Ok(ClaimOutcome::Restricted.into()); } @@ -405,11 +407,17 @@ pub async fn claim_relay_invite_with_owner( let revoked_at: Option> = invite.try_get("revoked_at")?; let issuer: String = invite.try_get("created_by")?; - if revoked_at.is_some() { - return Ok(ClaimOutcome::Revoked.into()); - } - if principal_restricted(&mut tx, community, &issuer).await? { - return Ok(ClaimOutcome::IssuerRestricted.into()); + let denial = if revoked_at.is_some() { + Some((ClaimOutcome::Revoked, "revoked")) + } else if principal_restricted(&mut tx, community, &issuer).await? { + Some((ClaimOutcome::IssuerRestricted, "issuer_restricted")) + } else { + None + }; + if let Some((outcome, label)) = denial { + tx.rollback().await?; + log_claim_outcome(community, Some(invite_id), label, max_uses, Some(use_count)); + return Ok(outcome.into()); } let uses_remaining = || max_uses.map(|mu| mu - use_count);