1use std::time::Duration;
2
3const CURRENT: &str = env!("CARGO_PKG_VERSION");
4const API_URL: &str = "https://api.github.com/repos/jbingen/tnnl/releases/latest";
5
6pub fn check_in_background() {
7 tokio::spawn(async {
8 if let Some(latest) = fetch_latest().await {
9 let latest = latest.trim_start_matches('v');
10 if latest != CURRENT {
11 crate::log::update_available(latest);
12 }
13 }
14 });
15}
16
17async fn fetch_latest() -> Option<String> {
18 let client = reqwest::Client::builder()
19 .timeout(Duration::from_secs(4))
20 .user_agent(format!("tnnl/{CURRENT}"))
21 .build()
22 .ok()?;
23
24 let resp: serde_json::Value = client.get(API_URL).send().await.ok()?.json().await.ok()?;
25
26 resp["tag_name"].as_str().map(|s| s.to_owned())
27}