From aca1a8236cdda14c821641b7c22bdb3dfa556afc Mon Sep 17 00:00:00 2001 From: trisua Date: Wed, 7 May 2025 21:54:21 -0400 Subject: [PATCH] fix: rate limiting fix: wait longer for invoice --- crates/app/src/macros.rs | 8 ++++++++ crates/app/src/main.rs | 4 ++-- crates/app/src/public/html/components.html | 2 +- .../app/src/routes/api/v1/auth/connections/stripe.rs | 12 ++++++++++-- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/crates/app/src/macros.rs b/crates/app/src/macros.rs index 721314d..c7410a0 100644 --- a/crates/app/src/macros.rs +++ b/crates/app/src/macros.rs @@ -157,6 +157,14 @@ macro_rules! check_user_blocked_or_private { .await .is_ok(), ); + context.insert( + "is_following", + &$data + .0 + .get_userfollow_by_initiator_receiver(ua.id, $other_user.id) + .await + .is_ok(), + ); return Ok(Html( $data.1.render("profile/private.html", &context).unwrap(), diff --git a/crates/app/src/main.rs b/crates/app/src/main.rs index 1f79837..5bb19c3 100644 --- a/crates/app/src/main.rs +++ b/crates/app/src/main.rs @@ -59,8 +59,8 @@ async fn main() { // governor let governor_config = Arc::new( GovernorConfigBuilder::default() - .per_millisecond(75) - .burst_size(32) + .per_millisecond(64) + .burst_size(128) .finish() .unwrap(), ); diff --git a/crates/app/src/public/html/components.html b/crates/app/src/public/html/components.html index 88d5d49..07042a2 100644 --- a/crates/app/src/public/html/components.html +++ b/crates/app/src/public/html/components.html @@ -1112,7 +1112,7 @@ show_kick=false, secondary=false) -%}
{{ self::full_username(user=user) }}
{{ self::user_status(other_user=user) }}
diff --git a/crates/app/src/routes/api/v1/auth/connections/stripe.rs b/crates/app/src/routes/api/v1/auth/connections/stripe.rs index 551c653..cf8b866 100644 --- a/crates/app/src/routes/api/v1/auth/connections/stripe.rs +++ b/crates/app/src/routes/api/v1/auth/connections/stripe.rs @@ -70,8 +70,8 @@ pub async fn stripe_webhook( let customer_id = invoice.customer.unwrap().id(); - // allow 10s for everything to finalize - tokio::time::sleep(Duration::from_secs(10)).await; + // allow 30s for everything to finalize + tokio::time::sleep(Duration::from_secs(30)).await; // pull user and update role let user = match data.get_user_by_stripe_id(customer_id.as_str()).await { @@ -79,6 +79,14 @@ pub async fn stripe_webhook( Err(e) => return Json(e.into()), }; + if user.permissions.check(FinePermission::SUPPORTER) { + return Json(ApiReturn { + ok: true, + message: "Already applied".to_string(), + payload: (), + }); + } + tracing::info!("invoice {} (stripe: {})", user.id, customer_id); let new_user_permissions = user.permissions | FinePermission::SUPPORTER;