From e1ca8d9eb57f81aff87ae876579c7b8faef972fa Mon Sep 17 00:00:00 2001 From: Marc-Antoine Manningham <marc-antoine.m@outlook.com> Date: Thu, 12 Dec 2024 17:39:47 -0500 Subject: [PATCH] fix: make the ics work each time --- aep-schedule-website/Cargo.lock | 5 +++-- .../src/frontend/components/schedule.rs | 18 +++++------------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/aep-schedule-website/Cargo.lock b/aep-schedule-website/Cargo.lock index 3cc6892..1441b96 100644 --- a/aep-schedule-website/Cargo.lock +++ b/aep-schedule-website/Cargo.lock @@ -1394,8 +1394,9 @@ dependencies = [ [[package]] name = "icalendar" -version = "0.16.3" -source = "git+https://github.com/marcantoinem/icalendar-rs?branch=fix/wrapping-behaviour#e640f6ca5f519eb536dbedd787b5843be463622a" +version = "0.16.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78aa665b8aa17f012f7e6f89e7124e48a83716b9c5600fe318fa22e2a3d7063d" dependencies = [ "chrono", "iso8601", diff --git a/aep-schedule-website/src/frontend/components/schedule.rs b/aep-schedule-website/src/frontend/components/schedule.rs index 3a5d569..6d505e6 100644 --- a/aep-schedule-website/src/frontend/components/schedule.rs +++ b/aep-schedule-website/src/frontend/components/schedule.rs @@ -137,12 +137,12 @@ pub fn ScheduleComponent(schedule: Schedule, calendar: Arc<Calendar>) -> impl In let courses = schedule.taken_courses.clone(); let courses2 = schedule.taken_courses.clone(); let schedule2 = schedule.clone(); - let (download, set_download) = signal("".to_string()); - let link = NodeRef::new(); + let ics = calendar.generate_ics(&schedule2); + let url = url_escape::encode_fragment(&ics); + let url = "data:text/plain;charset=utf-8,".to_string() + &url; view! { <div class="flex flex-col w-full items-center card p-2"> - <a class="hidden" download="cours.ics" href=move || download.get() node_ref=link></a> <table class="cours"> {courses .into_iter() @@ -158,18 +158,10 @@ pub fn ScheduleComponent(schedule: Schedule, calendar: Arc<Calendar>) -> impl In .map(|(i, c)| view! { <CoursePeriods i course=c /> }) .collect_view()} </Schedule> - <button - class="button-download flex" - on:pointerdown=move |_| { - let ics = calendar.generate_ics(&schedule2); - let url = url_escape::encode_fragment(&ics); - set_download("data:text/plain;charset=utf-8,".to_string() + &url); - link.get().unwrap().click(); - } - > + <a class="button-download flex" download="cours.ics" href={url}> <Download weight=IconWeight::Regular size="3vh" /> <span>"Télécharger le calendrier de cet horaire"</span> - </button> + </a> </div> } } -- GitLab