remove global and change all to user arc

pull/1919/head
Night_Hunter 8 months ago
parent a0cb1318fb
commit 9d22173f12

@ -91,9 +91,7 @@ impl<R: Runtime, T: Manager<R>> UpdaterExt<R> for T {
builder = builder.current_exe_args(args); builder = builder.current_exe_args(args);
} }
if let Some(version_comparator) = version_comparator { builder.version_comparator = version_comparator.clone();
builder = builder.global_version_comparator(version_comparator.clone());
}
#[cfg(any( #[cfg(any(
target_os = "linux", target_os = "linux",
@ -125,7 +123,7 @@ impl<R: Runtime, T: Manager<R>> UpdaterExt<R> for T {
struct UpdaterState { struct UpdaterState {
target: Option<String>, target: Option<String>,
config: Config, config: Config,
version_comparator: Option<GlobalVersionComparator>, version_comparator: Option<VersionComparator>,
} }
#[derive(Default)] #[derive(Default)]
@ -133,7 +131,7 @@ pub struct Builder {
target: Option<String>, target: Option<String>,
pubkey: Option<String>, pubkey: Option<String>,
installer_args: Vec<OsString>, installer_args: Vec<OsString>,
version_comparator: Option<GlobalVersionComparator>, version_comparator: Option<VersionComparator>,
} }
impl Builder { impl Builder {

@ -93,14 +93,13 @@ impl RemoteRelease {
} }
pub type OnBeforeExit = Arc<dyn Fn() + Send + Sync + 'static>; pub type OnBeforeExit = Arc<dyn Fn() + Send + Sync + 'static>;
pub(crate) type GlobalVersionComparator = Arc<dyn Fn(Version, RemoteRelease) -> bool + Send + Sync>; pub type VersionComparator = Arc<dyn Fn(Version, RemoteRelease) -> bool + Send + Sync>;
pub struct UpdaterBuilder { pub struct UpdaterBuilder {
app_name: String, app_name: String,
current_version: Version, current_version: Version,
config: Config, config: Config,
version_comparator: Option<Box<dyn Fn(Version, RemoteRelease) -> bool + Send + Sync>>, pub(crate) version_comparator: Option<VersionComparator>,
global_version_comparator: Option<GlobalVersionComparator>,
executable_path: Option<PathBuf>, executable_path: Option<PathBuf>,
target: Option<String>, target: Option<String>,
endpoints: Option<Vec<Url>>, endpoints: Option<Vec<Url>>,
@ -127,7 +126,6 @@ impl UpdaterBuilder {
current_version, current_version,
config, config,
version_comparator: None, version_comparator: None,
global_version_comparator: None,
executable_path: None, executable_path: None,
target: None, target: None,
endpoints: None, endpoints: None,
@ -142,7 +140,7 @@ impl UpdaterBuilder {
mut self, mut self,
f: F, f: F,
) -> Self { ) -> Self {
self.version_comparator = Some(Box::new(f)); self.version_comparator = Some(Arc::new(f));
self self
} }
@ -224,11 +222,6 @@ impl UpdaterBuilder {
self self
} }
pub(crate) fn global_version_comparator(mut self, f: GlobalVersionComparator) -> Self {
self.global_version_comparator.replace(f);
self
}
pub fn build(self) -> Result<Updater> { pub fn build(self) -> Result<Updater> {
let endpoints = self let endpoints = self
.endpoints .endpoints
@ -260,7 +253,6 @@ impl UpdaterBuilder {
app_name: self.app_name, app_name: self.app_name,
current_version: self.current_version, current_version: self.current_version,
version_comparator: self.version_comparator, version_comparator: self.version_comparator,
global_version_comparator: self.global_version_comparator,
timeout: self.timeout, timeout: self.timeout,
proxy: self.proxy, proxy: self.proxy,
endpoints, endpoints,
@ -292,8 +284,7 @@ pub struct Updater {
config: Config, config: Config,
app_name: String, app_name: String,
current_version: Version, current_version: Version,
version_comparator: Option<Box<dyn Fn(Version, RemoteRelease) -> bool + Send + Sync>>, version_comparator: Option<VersionComparator>,
global_version_comparator: Option<GlobalVersionComparator>,
timeout: Option<Duration>, timeout: Option<Duration>,
proxy: Option<Url>, proxy: Option<Url>,
endpoints: Vec<Url>, endpoints: Vec<Url>,
@ -405,13 +396,8 @@ impl Updater {
let should_update = match self.version_comparator.as_ref() { let should_update = match self.version_comparator.as_ref() {
Some(comparator) => comparator(self.current_version.clone(), release.clone()), Some(comparator) => comparator(self.current_version.clone(), release.clone()),
None => { None => {
match self.global_version_comparator.as_ref() { // default comparator
Some(comparator) => comparator(self.current_version.clone(), release.clone()), release.version > self.current_version
None => {
// default comparator
release.version > self.current_version
}
}
} }
}; };

Loading…
Cancel
Save