v0.15-WORKINGV3

This commit is contained in:
2022-12-04 12:26:02 +05:30
parent 32fb36623b
commit c8fba74480
4 changed files with 103 additions and 57 deletions

View File

@@ -160,20 +160,22 @@ impl Books {
impl BookUI { impl BookUI {
async fn set_descriptions(&mut self) { async fn set_descriptions(&mut self) {
let query = format!("https://openlibrary.org/{}.json", self.open_library_key.as_ref().unwrap().clone()); if self.open_library_key.is_some() {
let res = reqwest::get(query).await.expect("Unable to request"); let query = format!("https://openlibrary.org/{}.json", self.open_library_key.as_ref().unwrap().clone());
let resjson = res.json::<BookPageOL>().await.expect("Unable to return value"); let res = reqwest::get(query).await.expect("Unable to request");
let description = resjson.description; let resjson = res.json::<BookPageOL>().await.expect("Unable to return value");
let description = resjson.description;
if !description.is_none() { if !description.is_none() {
if let DescriptionOL::DescriptionString(desc_string) = description.clone().unwrap() { if let DescriptionOL::DescriptionString(desc_string) = description.clone().unwrap() {
self.description = Some(desc_string); self.description = Some(desc_string);
}
if let DescriptionOL::DescriptionValueString(desc_val) = description.clone().unwrap() {
self.description = Some(desc_val.value);
}
} }
if let DescriptionOL::DescriptionValueString(desc_val) = description.clone().unwrap() {
self.description = Some(desc_val.value);
} }
} }
}
} }
@@ -666,12 +668,14 @@ async fn create_book(
} }
if !doc_sent.cover.is_none() { if !doc_sent.cover.is_none() {
let img_bytes = reqwest::get(cover.unwrap()).await.unwrap().bytes().await.unwrap(); if !doc_sent.cover.clone().unwrap().is_empty() {
let image = image::load_from_memory(&img_bytes).unwrap(); let img_bytes = reqwest::get(cover.unwrap()).await.unwrap().bytes().await.unwrap();
let temp_cover = doc_sent.cover.clone().unwrap(); let image = image::load_from_memory(&img_bytes).unwrap();
let img_id = format!("{}{}",temp_cover.split("/").last().unwrap(),Local::now().format("%Y-%m-%d-%H-%M-%S")); let temp_cover = doc_sent.cover.clone().unwrap();
image.save(format!("{}/{}",images_dir,img_id)).expect("Failed to save image"); let img_id = format!("{}{}",Local::now().format("%Y-%m-%d-%H-%M-%S"),temp_cover.split("/").last().unwrap());
cover = Some(img_id.to_string()); image.save(format!("{}/{}",images_dir,img_id)).expect("Failed to save image");
cover = Some(img_id.to_string());
}
} }
let book: book::Model = book::Model{ let book: book::Model = book::Model{
@@ -800,17 +804,18 @@ println!("Updating book");
let mut cover = doc_sent.cover.clone(); let mut cover = doc_sent.cover.clone();
if !doc_sent.cover.is_none() { if !doc_sent.cover.is_none() {
if doc_sent.cover.clone().unwrap().contains(&backend_url) { if !doc_sent.cover.clone().unwrap().is_empty() {
cover = Some(doc_sent.cover.clone().unwrap().split("/").last().unwrap().to_string()); if doc_sent.cover.clone().unwrap().contains(&backend_url) {
} else { cover = Some(doc_sent.cover.clone().unwrap().split("/").last().unwrap().to_string());
let img_bytes = reqwest::get(cover.unwrap()).await.unwrap().bytes().await.unwrap(); }
//.expect("Could not fetch image"); else {
//let img_bytes = img_resp.unwrap().bytes(); let img_bytes = reqwest::get(cover.unwrap()).await.unwrap().bytes().await.unwrap();
let image = image::load_from_memory(&img_bytes).unwrap(); let image = image::load_from_memory(&img_bytes).unwrap();
let temp_cover = doc_sent.cover.clone().unwrap(); let temp_cover = doc_sent.cover.clone().unwrap();
let img_id = format!("{}{}",temp_cover.split("/").last().unwrap(),Local::now().format("%Y-%m-%d-%H-%M-%S")); let img_id = format!("{}{}",Local::now().format("%Y-%m-%d-%H-%M-%S"),temp_cover.split("/").last().unwrap());
image.save(format!("{}/{}",images_dir,img_id)).expect("Failed to save image"); image.save(format!("{}/{}",images_dir,img_id)).expect("Failed to save image");
cover = Some(img_id.to_string()); cover = Some(img_id.to_string());
}
} }
} }
let book: book::Model = book::Model{ let book: book::Model = book::Model{

View File

@@ -11,6 +11,7 @@ console_error_panic_hook = "0.1.7"
dotenv_codegen = "0.15.0" dotenv_codegen = "0.15.0"
env_logger = "0.9.0" env_logger = "0.9.0"
gloo-net = "^0.2" gloo-net = "^0.2"
#gloo-timers = "^0.2"
#gloo-utils = {version = "0.1.5", features =["serde"]} #gloo-utils = {version = "0.1.5", features =["serde"]}
log = "0.4" log = "0.4"
itertools = "0.10" itertools = "0.10"

View File

@@ -34,7 +34,7 @@ body {
width: 80%; /* Could be more or less, depending on screen size */ width: 80%; /* Could be more or less, depending on screen size */
height: 90%; height: 90%;
overflow: auto; /* Enable scroll if needed */ overflow: auto; /* Enable scroll if needed */
background-color: rgb(0,0,0); /* Fallback color */ background-color: rgb(1,1,1); /* Fallback color */
} }
/* Float three header columns side by side */ /* Float three header columns side by side */

View File

@@ -12,6 +12,7 @@ use wasm_bindgen::JsCast;
use web_sys::{Event, HtmlInputElement, KeyboardEvent}; // 0.3.5 use web_sys::{Event, HtmlInputElement, KeyboardEvent}; // 0.3.5
use dotenv_codegen::dotenv; use dotenv_codegen::dotenv;
use itertools::Itertools; use itertools::Itertools;
//use gloo_timers::future::TimeoutFuture;
//#[macro_use] //#[macro_use]
//extern crate dotenv_codegen; //extern crate dotenv_codegen;
@@ -63,6 +64,11 @@ pub struct AppState {
pub addingbook: RcSignal<BookUI>, pub addingbook: RcSignal<BookUI>,
pub displayingbook: RcSignal<BookUI>, pub displayingbook: RcSignal<BookUI>,
pub refreshing: RcSignal<bool>, pub refreshing: RcSignal<bool>,
pub apibook: RcSignal<BookUI>,
pub updatingrequest: RcSignal<bool>,
pub addingrequest: RcSignal<bool>,
pub deleteid: RcSignal<i32>,
pub deleterequest: RcSignal<bool>
} }
#[derive(Route)] #[derive(Route)]
@@ -227,8 +233,9 @@ pub fn Header<G: Html>(cx: Scope) -> View<G> {
}; };
let click_addbook = |_| { let click_addbook = |_| {
app_state.adding.set(true); app_state.adding.set(true);
app_state.addingbook.set(BookUI::default()); app_state.updating.set(false);
app_state.addingbook.set(BookUI::default());
}; };
@@ -257,6 +264,7 @@ pub fn Header<G: Html>(cx: Scope) -> View<G> {
spawn_local(async move { spawn_local(async move {
let _temp = add_books_isbns(task).await.unwrap(); let _temp = add_books_isbns(task).await.unwrap();
}); });
} }
}; };
@@ -311,14 +319,17 @@ async fn ListDB<G: Html>(cx: Scope<'_>) -> View<G> {
app_state.openlibrary.track(); app_state.openlibrary.track();
app_state.internalsearch.track(); app_state.internalsearch.track();
app_state.refreshing.track(); app_state.refreshing.track();
//let tempb = app_state.books.get();
info!( //spawn_local( async move { info!(
"The state changed. New value: {}", // "The state changed. Old value: {:?}",
app_state.search.get(), // app_state.books.get()
); //)});
if *app_state.openlibrary.get() == false { if *app_state.openlibrary.get() == false {
app_state.refreshing.set(false); if *app_state.refreshing.get() == true {
app_state.refreshing.set(false);
//TimeoutFuture::new(1000).await;
}
if *app_state.internalsearch.get() == false { if *app_state.internalsearch.get() == false {
spawn_local(async move { spawn_local(async move {
@@ -358,6 +369,8 @@ async fn ListDB<G: Html>(cx: Scope<'_>) -> View<G> {
}); });
} }
} }
info!("List Refreshing Done");
}); });
let docs = create_memo(cx, || app_state.books.get().iter().cloned().collect::<Vec<_>>()); let docs = create_memo(cx, || app_state.books.get().iter().cloned().collect::<Vec<_>>());
@@ -393,23 +406,33 @@ pub fn BookDB<G: Html>(cx: Scope, bookitem: BookUIProp) -> View<G> {
let locdesc = bookitem.bookitem.clone().description.unwrap_or("".to_string()); let locdesc = bookitem.bookitem.clone().description.unwrap_or("".to_string());
let locloc = bookitem.bookitem.clone().location.unwrap_or("".to_string()); let locloc = bookitem.bookitem.clone().location.unwrap_or("".to_string());
//let locref = create_rc_signal(false);
let coverurl = bookdisplay.clone().cover.clone().unwrap_or("None".to_string()); let coverurl = bookdisplay.clone().cover.clone().unwrap_or("None".to_string());
let handle_delete = move |_| { let handle_delete = move |_| {
spawn_local(async move { app_state.deleteid.set(bookdelete.id);
let temp = delete_book(bookdelete.id).await.unwrap(); app_state.deleterequest.set(true);
println!("{}",temp.status());
});
app_state.refreshing.set(true);
}; };
create_effect(cx, || {
let app_state = app_state.clone();
if *app_state.deleterequest.get() == true {
spawn_local(async move {
let temp = delete_book(*app_state.deleteid.get()).await.unwrap();
println!("{}",temp.status());
app_state.refreshing.set(true);
});
}
app_state.deleterequest.set(false);
});
let handle_update = move |_| { let handle_update = move |_| {
app_state.adding.set(false); app_state.adding.set(false);
app_state.updating.set(true); app_state.updating.set(true);
app_state.addingbook.set(bookupdate.clone()); app_state.addingbook.set(bookupdate.clone());
app_state.refreshing.set(true);
}; };
let handle_display = move |_| { let handle_display = move |_| {
@@ -612,28 +635,40 @@ info!("Adding book");
time: Some(times), time: Some(times),
isbn: Some(isbns), isbn: Some(isbns),
}; };
if *app_state.adding.get() == true {
app_state.addingrequest.set(true);
if *app_state.updating.get() == false { } else if *app_state.updating.get() == true{
spawn_local(async move { app_state.updatingrequest.set(true);
let temp = add_book(record).await.unwrap();
println!("{}",temp.status());
});
} else {
spawn_local(async move {
let temp = update_book(record).await.unwrap();
println!("{}",temp.status());
});
} }
app_state.apibook.set(record);
app_state.addingbook.set(BookUI::default()); app_state.addingbook.set(BookUI::default());
app_state.updating.set(false); app_state.updating.set(false);
app_state.adding.set(false); app_state.adding.set(false);
//app_state.books.set(vec![BookUI::default()]); //app_state.books.set(vec![BookUI::default()]);
app_state.refreshing.set(true);
}; };
create_effect(cx, || {
let app_state = app_state.clone();
let record = (*app_state.apibook.get()).clone();
if *app_state.addingrequest.get() == true {
spawn_local(async move {
let temp = add_book(record).await.unwrap();
info!("Adding Done{}",temp.status());
app_state.refreshing.set(true);
app_state.addingrequest.set(false);
});
} else if *app_state.updatingrequest.get() == true{
spawn_local(async move {
let temp = update_book(record).await.unwrap();
info!("Updating Done{}",temp.status());
app_state.refreshing.set(true);
app_state.updatingrequest.set(false);
});
}
});
create_effect(cx, || { create_effect(cx, || {
if *app_state.updating.get() == true || *app_state.adding.get() == true { if *app_state.updating.get() == true || *app_state.adding.get() == true {
@@ -956,6 +991,11 @@ fn App<G: Html>(cx: Scope) -> View<G> {
displaying: create_rc_signal(bool::default()), displaying: create_rc_signal(bool::default()),
displayingbook: create_rc_signal(BookUI::default()), displayingbook: create_rc_signal(BookUI::default()),
refreshing: create_rc_signal(bool::default()), refreshing: create_rc_signal(bool::default()),
apibook: create_rc_signal(BookUI::default()),
updatingrequest: create_rc_signal(bool::default()),
addingrequest: create_rc_signal(bool::default()),
deleteid: create_rc_signal(-1),
deleterequest: create_rc_signal(bool::default()),
}; };
provide_context(cx, app_state); provide_context(cx, app_state);
view! { view! {