Added date validation for agent shortcode links
This commit is contained in:
parent
e63f2eb515
commit
e1bf4c3ea4
@ -34,3 +34,10 @@ chrono = "0.4.23"
|
|||||||
|
|
||||||
# Core
|
# Core
|
||||||
jl-types = { path = "../jl-types", features = ["wasm"] }
|
jl-types = { path = "../jl-types", features = ["wasm"] }
|
||||||
|
|
||||||
|
|
||||||
|
[profile.release]
|
||||||
|
lto = true
|
||||||
|
codegen-units = 1
|
||||||
|
panic = "abort"
|
||||||
|
opt-level = "z"
|
@ -1,3 +1,6 @@
|
|||||||
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
use chrono::{Utc, DateTime};
|
||||||
use jl_types::{
|
use jl_types::{
|
||||||
domain::{agent::Agent, unit::Unit, unit_type::UnitType},
|
domain::{agent::Agent, unit::Unit, unit_type::UnitType},
|
||||||
dto::listing::Listing,
|
dto::listing::Listing,
|
||||||
@ -30,7 +33,7 @@ pub fn details_page(props: &DetailsPageProps) -> Html {
|
|||||||
for query_param in query_params {
|
for query_param in query_params {
|
||||||
if query_param.0 == String::from("shortcode") {
|
if query_param.0 == String::from("shortcode") {
|
||||||
// Store shortcode in localstorage
|
// Store shortcode in localstorage
|
||||||
match storage::store_in_local_storage(StorageKey::AgentShortcode, &query_param.1) {
|
match storage::store_in_local_storage(StorageKey::AgentShortcode, &format!("{}|{}", &query_param.1, Utc::now().to_string())) {
|
||||||
Ok(_) => {}
|
Ok(_) => {}
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
log::error!("Error storing agent shortcode in localstorage\n: {}", error)
|
log::error!("Error storing agent shortcode in localstorage\n: {}", error)
|
||||||
@ -43,17 +46,27 @@ pub fn details_page(props: &DetailsPageProps) -> Html {
|
|||||||
match persisted_shortcode_res {
|
match persisted_shortcode_res {
|
||||||
Ok(persisted_shortcode_opt) => {
|
Ok(persisted_shortcode_opt) => {
|
||||||
match persisted_shortcode_opt {
|
match persisted_shortcode_opt {
|
||||||
Some(persisted_shortcode) => {
|
Some(persisted_shortcode_with_date) => {
|
||||||
// Get agent from server
|
// Get agent from server
|
||||||
let override_agent_handle = override_agent_handle.clone();
|
let shortcode_date_split: Vec<&str> = persisted_shortcode_with_date.split('|').collect();
|
||||||
wasm_bindgen_futures::spawn_local(async move {
|
if let Some(creation_date_str) = shortcode_date_split.get(1) {
|
||||||
match get_agent_with_shortcode(&persisted_shortcode).await {
|
|
||||||
Ok(agent) => override_agent_handle.set(Some(agent)),
|
if let Ok(date) = DateTime::<Utc>::from_str(&creation_date_str) {
|
||||||
Err(error) => {
|
if Utc::now().timestamp_millis() - date.timestamp_millis() < 24 * 60 * 60 * 1000 {
|
||||||
error!("Error fetching agent with shortcode. Error: {:?}", error)
|
let override_agent_handle = override_agent_handle.clone();
|
||||||
}
|
let shortcode = shortcode_date_split.first().expect("Split had a first element but not a second?").to_string();
|
||||||
};
|
wasm_bindgen_futures::spawn_local(async move {
|
||||||
})
|
match get_agent_with_shortcode(&shortcode).await {
|
||||||
|
Ok(agent) => override_agent_handle.set(Some(agent)),
|
||||||
|
Err(error) => {
|
||||||
|
error!("Error fetching agent with shortcode. Error: {:?}", error)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
None => {}
|
None => {}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user