From 05f8001ee904315b7fd7582832894522f9b62736 Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Mon, 19 May 2025 14:26:54 -0400 Subject: [PATCH] collab: Only subscribe to Zed Free if there isn't an existing active subscription (#30967) This PR adds a sanity check to ensure that we only subscribe the user to Zed Free if they don't already have an active subscription. Release Notes: - N/A --- crates/collab/src/api/billing.rs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/crates/collab/src/api/billing.rs b/crates/collab/src/api/billing.rs index f1ed25ed88a2aeedaf322d5b122ca77e3547ae81..3852b028119234316240bf403588c567a60bbf5e 100644 --- a/crates/collab/src/api/billing.rs +++ b/crates/collab/src/api/billing.rs @@ -1183,14 +1183,20 @@ async fn sync_subscription( if subscription.status == SubscriptionStatus::Canceled || subscription.status == SubscriptionStatus::Paused { - let stripe_customer_id = billing_customer - .stripe_customer_id - .parse::() - .context("failed to parse Stripe customer ID from database")?; - - stripe_billing - .subscribe_to_zed_free(stripe_customer_id) + let already_has_active_billing_subscription = app + .db + .has_active_billing_subscription(billing_customer.user_id) .await?; + if !already_has_active_billing_subscription { + let stripe_customer_id = billing_customer + .stripe_customer_id + .parse::() + .context("failed to parse Stripe customer ID from database")?; + + stripe_billing + .subscribe_to_zed_free(stripe_customer_id) + .await?; + } } }