From 22edb04ce2aba5e95914036dae0cdb41f17fca36 Mon Sep 17 00:00:00 2001 From: Aravinth Manivannan Date: Fri, 30 Jun 2023 16:48:53 +0530 Subject: [PATCH] feat: advance sitekey edit now allows modifying publication status --- src/api/v1/mcaptcha/easy.rs | 17 ++--------------- src/api/v1/mcaptcha/update.rs | 11 +++++++++++ src/pages/panel/sitekey/edit.rs | 19 +++++++++++-------- templates/panel/sitekey/edit/advance.html | 16 ++++++++++++++++ templates/panel/sitekey/edit/index.ts | 8 ++++++++ 5 files changed, 48 insertions(+), 23 deletions(-) diff --git a/src/api/v1/mcaptcha/easy.rs b/src/api/v1/mcaptcha/easy.rs index d169bba2..9707dfc0 100644 --- a/src/api/v1/mcaptcha/easy.rs +++ b/src/api/v1/mcaptcha/easy.rs @@ -130,6 +130,7 @@ async fn create( levels, duration: data.settings.captcha.default_difficulty_strategy.duration, description: payload.description, + publish_benchmarks: payload.publish_benchmarks, }; let mcaptcha_config = create_runner(&msg, &data, &username).await?; @@ -137,11 +138,6 @@ async fn create( .add_traffic_pattern(&username, &mcaptcha_config.key, &pattern) .await?; - if payload.publish_benchmarks { - data.db - .analytics_create_psuedo_id_if_not_exists(&mcaptcha_config.key) - .await?; - } Ok(HttpResponse::Ok().json(mcaptcha_config)) } @@ -166,21 +162,12 @@ async fn update( let levels = calculate(&pattern, &data.settings.captcha.default_difficulty_strategy)?; - if payload.pattern.publish_benchmarks { - data.db - .analytics_create_psuedo_id_if_not_exists(&payload.key) - .await?; - } else { - data.db - .analytics_delete_all_records_for_campaign(&payload.key) - .await?; - } - let msg = UpdateCaptcha { levels, duration: data.settings.captcha.default_difficulty_strategy.duration, description: payload.pattern.description, key: payload.key, + publish_benchmarks: payload.pattern.publish_benchmarks, }; update_captcha_runner(&msg, &data, &username).await?; diff --git a/src/api/v1/mcaptcha/update.rs b/src/api/v1/mcaptcha/update.rs index 198cc8de..0416338d 100644 --- a/src/api/v1/mcaptcha/update.rs +++ b/src/api/v1/mcaptcha/update.rs @@ -76,6 +76,7 @@ pub struct UpdateCaptcha { pub duration: u32, pub description: String, pub key: String, + pub publish_benchmarks: bool, } #[my_codegen::post( @@ -139,6 +140,16 @@ pub mod runner { e ); } + + if payload.publish_benchmarks { + data.db + .analytics_create_psuedo_id_if_not_exists(&payload.key) + .await?; + } else { + data.db + .analytics_delete_all_records_for_campaign(&payload.key) + .await?; + } Ok(()) } } diff --git a/src/pages/panel/sitekey/edit.rs b/src/pages/panel/sitekey/edit.rs index 748fdcd1..6b6c2a95 100644 --- a/src/pages/panel/sitekey/edit.rs +++ b/src/pages/panel/sitekey/edit.rs @@ -35,15 +35,22 @@ struct AdvanceEditPage { name: String, key: String, levels: Vec, + publish_benchmarks: bool, } impl AdvanceEditPage { - fn new(config: Captcha, levels: Vec, key: String) -> Self { + fn new( + config: Captcha, + levels: Vec, + key: String, + publish_benchmarks: bool, + ) -> Self { AdvanceEditPage { duration: config.duration as u32, name: config.description, levels, key, + publish_benchmarks, } } } @@ -63,8 +70,9 @@ pub async fn advance( let config = data.db.get_captcha_config(&username, &key).await?; let levels = data.db.get_captcha_levels(Some(&username), &key).await?; + let publish_benchmarks = data.db.analytics_captcha_is_published(&key).await?; - let body = AdvanceEditPage::new(config, levels, key) + let body = AdvanceEditPage::new(config, levels, key, publish_benchmarks) .render_once() .unwrap(); Ok(HttpResponse::Ok() @@ -107,12 +115,7 @@ pub async fn easy( Ok(c) => { let config = data.db.get_captcha_config(&username, &key).await?; let publish_benchmarks = - match data.db.analytics_get_psuedo_id_from_capmaign_id(&key).await { - Ok(_) => Ok(true), - Err(db_core::errors::DBError::CaptchaNotFound) => Ok(false), - Err(e) => Err(e), - }?; - println!("publish_benchmarks psot edit: {publish_benchmarks}"); + data.db.analytics_captcha_is_published(&key).await?; let pattern = TrafficPatternRequest { peak_sustainable_traffic: c.peak_sustainable_traffic as u32, avg_traffic: c.avg_traffic as u32, diff --git a/templates/panel/sitekey/edit/advance.html b/templates/panel/sitekey/edit/advance.html index afddd455..f357e023 100644 --- a/templates/panel/sitekey/edit/advance.html +++ b/templates/panel/sitekey/edit/advance.html @@ -16,6 +16,22 @@ <. } .> <. let level = levels.len() + 1; .> <. include!("../add/advance/add-level.html"); .> + + + + +