mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-19 10:58:04 +08:00
WIP
This commit is contained in:
@@ -1,37 +1,102 @@
|
||||
pub struct Info {
|
||||
pub commit: Commit,
|
||||
pub system: System,
|
||||
pub package: Package,
|
||||
pub version: Version,
|
||||
const UPDATE_CHECK_URL: &str = "https://localhost:8080/v1/update";
|
||||
|
||||
async fn check_for_update(info: Info) -> Status {
|
||||
let client = reqwest::Client::new();
|
||||
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 hash: String,
|
||||
pub time: u64,
|
||||
}
|
||||
|
||||
pub struct System {
|
||||
pub os: Os,
|
||||
pub arch: Arch,
|
||||
}
|
||||
|
||||
pub enum Os {
|
||||
Linux,
|
||||
Mac,
|
||||
Windows,
|
||||
}
|
||||
|
||||
pub enum Arch {
|
||||
X86_64,
|
||||
Aarch64,
|
||||
}
|
||||
|
||||
#[derive(Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
|
||||
pub struct Version {
|
||||
pub major: u64,
|
||||
pub minor: u64,
|
||||
pub patch: u64,
|
||||
}
|
||||
|
||||
pub struct Package {
|
||||
pub url: String,
|
||||
#[derive(Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
|
||||
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,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user