This commit is contained in:
Timon
2026-02-13 19:50:13 +00:00
parent 5bb5b16552
commit 40b40f9239
3 changed files with 98 additions and 27 deletions
Generated
+8 -4
View File
@@ -2414,6 +2414,10 @@ dependencies = [
[[package]] [[package]]
name = "graphite-desktop-update" name = "graphite-desktop-update"
version = "0.0.0" version = "0.0.0"
dependencies = [
"reqwest",
"serde",
]
[[package]] [[package]]
name = "graphite-desktop-wrapper" name = "graphite-desktop-wrapper"
@@ -5423,9 +5427,9 @@ dependencies = [
[[package]] [[package]]
name = "security-framework-sys" name = "security-framework-sys"
version = "2.14.0" version = "2.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
dependencies = [ dependencies = [
"core-foundation-sys", "core-foundation-sys",
"libc", "libc",
@@ -6330,9 +6334,9 @@ dependencies = [
[[package]] [[package]]
name = "tower-http" name = "tower-http"
version = "0.6.6" version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
dependencies = [ dependencies = [
"bitflags 2.9.3", "bitflags 2.9.3",
"bytes", "bytes",
+2
View File
@@ -9,3 +9,5 @@ edition = "2024"
rust-version = "1.87" rust-version = "1.87"
[dependencies] [dependencies]
serde = { workspace = true }
reqwest = { workspace = true }
+88 -23
View File
@@ -1,37 +1,102 @@
pub struct Info { const UPDATE_CHECK_URL: &str = "https://localhost:8080/v1/update";
pub commit: Commit,
pub system: System, async fn check_for_update(info: Info) -> Status {
pub package: Package, let client = reqwest::Client::new();
pub version: Version, let response = client.post(UPDATE_CHECK_URL).json(&info).send().await;
match response {
Ok(response) => {
if response.status().is_success() {
match response.json::<Status>().await {
Ok(result) => result,
Err(_) => Status::Unknown,
}
} else {
Status::Unknown
}
}
Err(_) => Status::Unknown,
}
} }
#[derive(Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct Info {
pub commit: Commit,
pub version: Version,
pub system: System,
pub source: Option<Source>,
}
#[derive(Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct Commit { pub struct Commit {
pub hash: String, pub hash: String,
pub time: u64, pub time: u64,
} }
pub struct System { #[derive(Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub os: Os,
pub arch: Arch,
}
pub enum Os {
Linux,
Mac,
Windows,
}
pub enum Arch {
X86_64,
Aarch64,
}
pub struct Version { pub struct Version {
pub major: u64, pub major: u64,
pub minor: u64, pub minor: u64,
pub patch: u64, pub patch: u64,
} }
pub struct Package { #[derive(Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub url: String, pub struct System {
pub os: Os,
pub arch: Arch,
}
#[derive(Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum Os {
Linux,
Mac,
Windows,
}
#[derive(Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum Arch {
X86_64,
Aarch64,
}
#[derive(Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum Source {
Flathub,
Nixpkgs,
Steam,
AppleAppStore,
WindowsStore,
Other(String),
}
struct UpdateCheckRsponse {
status: Status,
messages: Vec<Message>,
}
struct Message {
title: String,
body: String,
action: Action,
}
pub enum Action {
OpenUrl(String),
PerformAutoUpdate,
None,
}
#[derive(Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum Status {
Available(Method),
Outdated,
Unknown,
Latest,
}
#[derive(Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum Method {
Manual,
Auto { url: String },
PackageManager,
} }