mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-15 14:18:04 +08:00
WIP
This commit is contained in:
12
Cargo.lock
generated
12
Cargo.lock
generated
@@ -2414,6 +2414,10 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "graphite-desktop-update"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"reqwest",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "graphite-desktop-wrapper"
|
||||
@@ -5423,9 +5427,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "security-framework-sys"
|
||||
version = "2.14.0"
|
||||
version = "2.15.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32"
|
||||
checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
@@ -6330,9 +6334,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tower-http"
|
||||
version = "0.6.6"
|
||||
version = "0.6.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
|
||||
checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
|
||||
dependencies = [
|
||||
"bitflags 2.9.3",
|
||||
"bytes",
|
||||
|
||||
@@ -9,3 +9,5 @@ edition = "2024"
|
||||
rust-version = "1.87"
|
||||
|
||||
[dependencies]
|
||||
serde = { workspace = true }
|
||||
reqwest = { workspace = true }
|
||||
|
||||
@@ -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