mirror of
https://github.com/GyulyVGC/sniffnet.git
synced 2025-12-23 22:29:01 -05:00
Merge pull request #891 from aguacero7/improve-versionning
Improve update check with semver
This commit is contained in:
@@ -3,6 +3,7 @@ # Changelog
|
||||
All Sniffnet releases with the relative changes are documented in this file.
|
||||
|
||||
## [UNRELEASED]
|
||||
- Improve update checks using `semver` ([#891](https://github.com/GyulyVGC/sniffnet/pull/891))
|
||||
- Fix AppImage error with `libpcap` dependency ([#971](https://github.com/GyulyVGC/sniffnet/pull/971))
|
||||
|
||||
## [1.4.1] - 2025-09-13
|
||||
|
||||
5
Cargo.lock
generated
5
Cargo.lock
generated
@@ -4488,9 +4488,9 @@ checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749"
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "1.0.26"
|
||||
version = "1.0.27"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
|
||||
checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
@@ -4745,6 +4745,7 @@ dependencies = [
|
||||
"rodio",
|
||||
"rstest",
|
||||
"rustrict",
|
||||
"semver",
|
||||
"serde",
|
||||
"serde_test",
|
||||
"serial_test",
|
||||
|
||||
@@ -57,6 +57,7 @@ splines = "5.0.0"
|
||||
clap = { version = "4.5.47", features = ["derive"] }
|
||||
tokio = { version = "1.47.1", features = ["macros"] }
|
||||
async-channel = "2.5.0"
|
||||
semver = "1.0.27"
|
||||
|
||||
[target.'cfg(windows)'.dependencies]
|
||||
gag = "1.0.0"
|
||||
|
||||
@@ -27,16 +27,21 @@ pub fn footer<'a>(
|
||||
font: Font,
|
||||
font_footer: Font,
|
||||
newer_release_available: Option<bool>,
|
||||
pulse: u8,
|
||||
dots_pulse: &(String, u8),
|
||||
) -> Container<'a, Message, StyleType> {
|
||||
if thumbnail {
|
||||
return thumbnail_footer();
|
||||
}
|
||||
|
||||
let release_details_row =
|
||||
get_release_details(language, font, font_footer, newer_release_available);
|
||||
let release_details_row = get_release_details(
|
||||
language,
|
||||
font,
|
||||
font_footer,
|
||||
newer_release_available,
|
||||
&dots_pulse.0,
|
||||
);
|
||||
|
||||
let heart_size = match pulse {
|
||||
let heart_size = match dots_pulse.1 {
|
||||
1 => 17.0,
|
||||
2 => 20.0,
|
||||
_ => 14.0,
|
||||
@@ -203,6 +208,7 @@ fn get_release_details<'a>(
|
||||
font: Font,
|
||||
font_footer: Font,
|
||||
newer_release_available: Option<bool>,
|
||||
dots: &str,
|
||||
) -> Row<'a, Message, StyleType> {
|
||||
let mut ret_val = Row::new()
|
||||
.align_y(Alignment::Center)
|
||||
@@ -216,11 +222,15 @@ fn get_release_details<'a>(
|
||||
if let Some(boolean_response) = newer_release_available {
|
||||
if boolean_response {
|
||||
// a newer release is available on GitHub
|
||||
let icon_size = match dots.len() {
|
||||
2 => 16.0,
|
||||
3 => 18.0,
|
||||
_ => 14.0,
|
||||
};
|
||||
let button = button(
|
||||
Icon::Update
|
||||
.to_text()
|
||||
.class(TextType::Danger)
|
||||
.size(18)
|
||||
.size(icon_size)
|
||||
.align_x(Alignment::Center)
|
||||
.align_y(Alignment::Center)
|
||||
.line_height(LineHeight::Relative(0.8)),
|
||||
|
||||
@@ -583,7 +583,7 @@ pub fn view(&self) -> Element<'_, Message, StyleType> {
|
||||
font,
|
||||
font_headers,
|
||||
self.newer_release_available,
|
||||
self.dots_pulse.1,
|
||||
&self.dots_pulse,
|
||||
);
|
||||
|
||||
let content: Element<Message, StyleType> =
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
use crate::SNIFFNET_LOWERCASE;
|
||||
use crate::utils::formatted_strings::APP_VERSION;
|
||||
use semver::Version;
|
||||
use serde::Deserialize;
|
||||
use std::time::Duration;
|
||||
|
||||
@@ -48,23 +49,13 @@ async fn is_newer_release_available(max_retries: u8, seconds_between_retries: u8
|
||||
.name;
|
||||
latest_version = latest_version.trim().to_string();
|
||||
|
||||
// release name sample: v1.1.2
|
||||
// TODO: support versions with numbers of more than 1 digit
|
||||
let latest_version_as_bytes = latest_version.as_bytes();
|
||||
if latest_version.len() == 6
|
||||
&& latest_version.starts_with('v')
|
||||
&& char::from(latest_version_as_bytes[1]).is_numeric()
|
||||
&& char::from(latest_version_as_bytes[2]).eq(&'.')
|
||||
&& char::from(latest_version_as_bytes[3]).is_numeric()
|
||||
&& char::from(latest_version_as_bytes[4]).eq(&'.')
|
||||
&& char::from(latest_version_as_bytes[5]).is_numeric()
|
||||
// release name sample: v1.2.3
|
||||
let stripped = latest_version.trim_start_matches('v');
|
||||
|
||||
if let (Ok(latest_semver), Ok(current_semver)) =
|
||||
(Version::parse(stripped), Version::parse(APP_VERSION))
|
||||
{
|
||||
latest_version.remove(0);
|
||||
return if latest_version.gt(&APP_VERSION.to_string()) {
|
||||
Some(true)
|
||||
} else {
|
||||
Some(false)
|
||||
};
|
||||
return Some(latest_semver > current_semver);
|
||||
}
|
||||
}
|
||||
let retries_left = max_retries - 1;
|
||||
|
||||
Reference in New Issue
Block a user