use std::sync::Arc; use std::sync::RwLock; use crate::templates::HtmlTemplate; use crate::templates::ListTemplate; use crate::utils; use axum::extract::State; use axum::response::IntoResponse; pub async fn list_files( State(state): State>>>, ) -> impl IntoResponse { let files = state.read().unwrap(); // Adquire lock let template = ListTemplate { files: files.to_vec(), }; HtmlTemplate(template) } pub async fn rescan_files( base_path: String, State(state): State>>>, ) -> impl IntoResponse { let new_files = utils::find_files(&base_path).expect("Error trying to refresh list"); let mut files = state.write().unwrap(); // Adquire lock files.clear(); files.extend(new_files); "Files rescanned successfuly" }