Skip to content

Commit aef3f62

Browse files
committed
refactor: Remove minijinja requirement and replace version with GET /version API call
1 parent 5631c5e commit aef3f62

3 files changed

Lines changed: 25 additions & 22 deletions

File tree

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,5 @@ url = "2.5"
4242
regex = "1.12"
4343
rusqlite = { version = "0.39", features = ["bundled"] }
4444
dirs = "6.0.0"
45-
minijinja = "2.20.0"
4645
base64 = "0.22.1"
4746
actix-cors = "0.7.1"

src/templates/index.html

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,7 @@
483483

484484
<div class="status-bar">
485485
<span class="accent">RuTorrent</span>
486-
<span>v{{ version }}</span>
486+
<span id="versionText">v—</span>
487487
<span id="lastUpdated"></span>
488488
</div>
489489
</div>
@@ -609,6 +609,7 @@
609609
}
610610

611611
function startDashboard() {
612+
fetchVersion();
612613
fetchTorrents();
613614
if (pollTimer) {
614615
clearInterval(pollTimer);
@@ -657,6 +658,23 @@
657658
toast('Logged out', 'success');
658659
});
659660

661+
// ── Fetch version ─────────────────────────────────────────
662+
async function fetchVersion() {
663+
try {
664+
const resp = await fetch('/version');
665+
if (!resp.ok) {
666+
throw new Error('Failed to fetch version');
667+
}
668+
const data = await resp.json();
669+
document.getElementById('versionText').textContent =
670+
`v${data.version}`;
671+
} catch (err) {
672+
console.error(err);
673+
document.getElementById('versionText').textContent =
674+
'v?';
675+
}
676+
}
677+
660678
// ── Fetch torrents ─────────────────────────────────────────
661679
async function fetchTorrents() {
662680
try {
@@ -765,6 +783,9 @@
765783
document.getElementById('deleteBtn').disabled =
766784
selectedNames.size === 0;
767785

786+
// TODO:
787+
// 1. lastUpdated is not rendered in the UI
788+
// 2. Use /GET torrent to produce timestamp
768789
document.getElementById('lastUpdated').textContent =
769790
'Updated ' + new Date().toLocaleTimeString();
770791

src/ui.rs

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,12 @@
11
use base64::{engine::general_purpose, Engine as _};
2-
use crate::{constant, settings};
2+
use crate::settings;
33
use actix_web::{web, HttpRequest, HttpResponse, Responder};
4-
use minijinja::{context, Environment};
54
use serde_json::json;
65

7-
fn build_env() -> Environment<'static> {
8-
let mut env = Environment::new();
9-
env.add_template("index.html", include_str!("templates/index.html"))
10-
.unwrap();
11-
env
12-
}
13-
14-
pub async fn index_page(
15-
metadata: web::Data<constant::MetaData>,
16-
) -> impl Responder {
17-
let env = build_env();
18-
let tmpl = env.get_template("index.html").unwrap();
19-
let rendered = tmpl
20-
.render(context! {
21-
version => metadata.pkg_version,
22-
})
23-
.unwrap();
6+
pub async fn index_page() -> impl Responder {
247
HttpResponse::Ok()
258
.content_type("text/html; charset=utf-8")
26-
.body(rendered)
9+
.body(include_str!("templates/index.html"))
2710
}
2811

2912
fn base64_decode(value: &str) -> Result<String, Box<dyn std::error::Error>> {

0 commit comments

Comments
 (0)