Skip to content

Commit

Permalink
basic saving
Browse files Browse the repository at this point in the history
  • Loading branch information
joshrmcdaniel committed May 28, 2024
1 parent 5abd2af commit 8227caf
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 6 deletions.
33 changes: 29 additions & 4 deletions web_frontend/src/filterlists.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@

use crate::{save_button, submit_banner, get_api_host};

Check warning on line 2 in web_frontend/src/filterlists.rs

View workflow job for this annotation

GitHub Actions / CI Desktop (linux, ubuntu-latest, stable)

unused imports: `save_button`, `submit_banner`

Check warning on line 2 in web_frontend/src/filterlists.rs

View workflow job for this annotation

GitHub Actions / CI Desktop (linux, ubuntu-latest, stable)

unused imports: `save_button`, `submit_banner`

Check warning on line 2 in web_frontend/src/filterlists.rs

View workflow job for this annotation

GitHub Actions / Run clippy check

unused imports: `save_button` and `submit_banner`

Check warning on line 2 in web_frontend/src/filterlists.rs

View workflow job for this annotation

GitHub Actions / Run clippy check

unused imports: `save_button` and `submit_banner`
use crate::save_button::BASE_BUTTON_CSS;
use reqwasm::http::Request;

use crate::filters::{AddFilterRequest,FilterGroup};
use serde::{Deserialize, Serialize};
use std::fmt::Debug;
use wasm_bindgen_futures::spawn_local;
Expand All @@ -10,6 +11,7 @@ use yew::prelude::*;
use web_sys::HtmlInputElement;
use yew::InputEvent;
use yew::html::Scope;
use url::Url;


#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)]
Expand Down Expand Up @@ -220,8 +222,31 @@ impl Component for SearchFilterList {
},
SearchFilterMessage::Save => {
if let Some(filter) = &self.selected_filter {
// todo: add logic to save the selected filter to the database using the API
// similar to the `AddFilterComponent` save logic
let parsed_url = match Url::parse(&filter.primary_view_url.clone().unwrap()) {
Ok(url) => url,
Err(err) => {
log::error!("Failed to parse URL: {}", err);
return false;
}
};
let request_body: AddFilterRequest = AddFilterRequest::new(self.selected_filter.clone().unwrap().name, FilterGroup::Malware, parsed_url);
let request = Request::post(&format!("http://{}/filters", get_api_host()))
.header("Content-Type", "application/json")
.body(serde_json::to_string(&request_body).unwrap());
spawn_local(async move {
match request.send().await {
Ok(response) => {
if response.ok() {
log::info!("Filter added successfully");
} else {
log::error!("Failed to add filter: {:?}", response.status());
}
}
Err(err) => {
log::error!("Request error: {:?}", err);
}
}
})
}
self.is_open = false;
},
Expand Down Expand Up @@ -255,7 +280,7 @@ impl Component for SearchFilterList {


let filtered_filters: Vec<&FilterEntry> = self.filters.iter()
.filter(|filter| filter.name.contains(&self.filter_query))
.filter(|filter| filter.name.to_lowercase().contains(&self.filter_query.to_lowercase()))
.collect();
let total_pages = (filtered_filters.len() as f64 / self.results_per_page as f64).ceil() as usize;
let start_index = (self.current_page - 1) * self.results_per_page;
Expand Down
15 changes: 13 additions & 2 deletions web_frontend/src/filters.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use yew::InputEvent;
use url::Url;

#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq)]
enum FilterGroup {
pub enum FilterGroup {
Default,
Regional,
Ads,
Expand Down Expand Up @@ -64,14 +64,25 @@ pub enum AddFilterMessage {

#[serde_as]
#[derive(Serialize)]
struct AddFilterRequest {
pub struct AddFilterRequest {
enabled: bool,
title: String,
group: FilterGroup,
#[serde_as(as = "DisplayFromStr")]
url: Url,
}

impl AddFilterRequest {
pub fn new(title: String, group: FilterGroup, url: Url) -> Self {
Self {
enabled: true,
title,
group,
url,
}
}
}


pub struct AddFilterComponent {
link: yew::html::Scope<Self>,
Expand Down

0 comments on commit 8227caf

Please sign in to comment.