Multiple enhancements and bugfixes

!Breaking change! - The updated version will not be able to read your old database file

Major improvements:
- Added editable pastas
- Added private pastas
- Added line numbers
- Added support for wide mode (1080p instead of 720p)
- Added syntax highlighting support
- Added read-only mode
- Added built-in help page
- Added option to remove logo, change title and footer text

Minor improvements:
- Improved looks in pure html mode
- Removed link to GitHub repo from navbar
- Broke up 7km long main.rs file into smaller modules
- Moved water.css into a template instead of serving it as an external resource
- Made Save button a bit bigger
- Updated README.MD

Bugfixes:
- Fixed a bug where an incorrect animal ID in a request would cause a crash
- Fixed a bug where an empty or corrupt JSON database would cause a crash
This commit is contained in:
Daniel Szabo 2022-06-03 17:24:34 +01:00
parent 1c873d23b5
commit 4cc737731a
27 changed files with 1343 additions and 494 deletions

View file

@ -0,0 +1,38 @@
use actix_web::{get, web, HttpResponse};
use askama::Template;
use crate::args::{Args, ARGS};
use crate::pasta::Pasta;
use crate::util::misc::remove_expired;
use crate::AppState;
#[derive(Template)]
#[template(path = "pastalist.html")]
struct PastaListTemplate<'a> {
pastas: &'a Vec<Pasta>,
args: &'a Args,
}
#[get("/pastalist")]
pub async fn list(data: web::Data<AppState>) -> HttpResponse {
if ARGS.no_listing {
return HttpResponse::Found()
.append_header(("Location", "/"))
.finish();
}
let mut pastas = data.pastas.lock().unwrap();
pastas.retain(|p| !p.private);
remove_expired(&mut pastas);
HttpResponse::Found().content_type("text/html").body(
PastaListTemplate {
pastas: &pastas,
args: &ARGS,
}
.render()
.unwrap(),
)
}