Compare commits

...

10 Commits

Author SHA1 Message Date
github-actions[bot] 51919fb26c publish new versions (#2209)
Co-authored-by: amrbashir <amrbashir@users.noreply.github.com>
2024-12-15 08:44:54 +01:00
universalappfactory ee0f65de5c fix(opener): use the correct packagename in OpenerPlugin.kt (#2207) 2024-12-14 18:58:48 +02:00
renovate[bot] 319ef556cd chore(deps): update eslint monorepo to v9.17.0 (#2205)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-14 12:09:17 +08:00
Amr Bashir 802399a969 docs(opener): add examples for None::<&str> (#2202)
closes #2200
2024-12-13 04:22:35 +02:00
github-actions[bot] c9acff99c6 publish new versions (#2188)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2024-12-10 14:24:04 -03:00
Lucas Fernandes Nogueira 18dffc9dfe fix(opener): iOS build (#2189)
* fix(opener): iOS build

* fix covector
2024-12-10 14:21:11 -03:00
Night_Hunter 829b632650 feat(updater): add Builder::default_version_comparator (#1919) 2024-12-10 15:11:43 +02:00
renovate[bot] 501eae173b chore(deps): update dependency typescript-eslint to v8.18.0 (v2) (#2175)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-10 11:25:28 +01:00
FabianLars 3ff5ccd8fb chore(deps): Update examples 2024-12-10 11:13:15 +01:00
FabianLars eb94dda28a docs(clipboard): Remove readHtml mention 2024-12-09 23:10:17 +01:00
23 changed files with 479 additions and 393 deletions
Generated
+3 -3
View File
@@ -206,7 +206,7 @@ checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775"
[[package]]
name = "api"
version = "2.0.9"
version = "2.0.11"
dependencies = [
"log",
"serde",
@@ -6707,7 +6707,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-opener"
version = "2.2.0"
version = "2.2.2"
dependencies = [
"dunce",
"glob",
@@ -6864,7 +6864,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-updater"
version = "2.2.0"
version = "2.3.0"
dependencies = [
"base64 0.22.1",
"dirs 5.0.1",
+13
View File
@@ -1,5 +1,18 @@
# Changelog
## \[2.0.8]
### Dependencies
- Upgraded to `opener-js@2.2.2`
## \[2.0.7]
### Dependencies
- Upgraded to `updater-js@2.3.0`
- Upgraded to `opener-js@2.2.1`
## \[2.0.6]
### Dependencies
+25 -25
View File
@@ -1,7 +1,7 @@
{
"name": "api",
"private": true,
"version": "2.0.6",
"version": "2.0.8",
"type": "module",
"scripts": {
"dev": "vite --clearScreen false",
@@ -11,34 +11,34 @@
},
"dependencies": {
"@tauri-apps/api": "2.1.1",
"@tauri-apps/plugin-barcode-scanner": "2.1.0",
"@tauri-apps/plugin-biometric": "2.1.0",
"@tauri-apps/plugin-cli": "2.1.0",
"@tauri-apps/plugin-clipboard-manager": "2.1.0",
"@tauri-apps/plugin-dialog": "2.1.0",
"@tauri-apps/plugin-fs": "2.1.0",
"@tauri-apps/plugin-geolocation": "2.0.0",
"@tauri-apps/plugin-global-shortcut": "2.1.0",
"@tauri-apps/plugin-opener": "2.1.0",
"@tauri-apps/plugin-haptics": "2.0.0",
"@tauri-apps/plugin-http": "2.1.0",
"@tauri-apps/plugin-nfc": "2.1.0",
"@tauri-apps/plugin-notification": "2.1.0",
"@tauri-apps/plugin-os": "2.1.0",
"@tauri-apps/plugin-process": "2.1.0",
"@tauri-apps/plugin-shell": "2.1.0",
"@tauri-apps/plugin-barcode-scanner": "2.2.0",
"@tauri-apps/plugin-biometric": "2.2.0",
"@tauri-apps/plugin-cli": "2.2.0",
"@tauri-apps/plugin-clipboard-manager": "2.2.0",
"@tauri-apps/plugin-dialog": "2.2.0",
"@tauri-apps/plugin-fs": "2.2.0",
"@tauri-apps/plugin-geolocation": "2.2.0",
"@tauri-apps/plugin-global-shortcut": "2.2.0",
"@tauri-apps/plugin-opener": "2.2.2",
"@tauri-apps/plugin-haptics": "2.2.0",
"@tauri-apps/plugin-http": "2.2.0",
"@tauri-apps/plugin-nfc": "2.2.0",
"@tauri-apps/plugin-notification": "2.2.0",
"@tauri-apps/plugin-os": "2.2.0",
"@tauri-apps/plugin-process": "2.2.0",
"@tauri-apps/plugin-shell": "2.2.0",
"@tauri-apps/plugin-store": "2.2.0",
"@tauri-apps/plugin-updater": "2.1.0",
"@tauri-apps/plugin-updater": "2.3.0",
"@zerodevx/svelte-json-view": "1.0.11"
},
"devDependencies": {
"@iconify-json/codicon": "^1.1.37",
"@iconify-json/ph": "^1.1.8",
"@sveltejs/vite-plugin-svelte": "^5.0.0",
"@iconify-json/codicon": "^1.2.6",
"@iconify-json/ph": "^1.2.1",
"@sveltejs/vite-plugin-svelte": "^5.0.1",
"@tauri-apps/cli": "2.1.0",
"@unocss/extractor-svelte": "^0.65.0",
"svelte": "^5.0.0",
"unocss": "^0.65.0",
"vite": "^6.0.0"
"@unocss/extractor-svelte": "^0.65.1",
"svelte": "^5.10.0",
"unocss": "^0.65.1",
"vite": "^6.0.3"
}
}
+13
View File
@@ -1,5 +1,18 @@
# Changelog
## \[2.0.11]
### Dependencies
- Upgraded to `opener@2.2.2`
## \[2.0.10]
### Dependencies
- Upgraded to `updater@2.3.0`
- Upgraded to `opener@2.2.1`
## \[2.0.9]
### Dependencies
+18 -18
View File
@@ -1,7 +1,7 @@
[package]
name = "api"
publish = false
version = "2.0.9"
version = "2.0.11"
description = "An example Tauri Application showcasing the api"
edition = "2021"
rust-version = { workspace = true }
@@ -19,22 +19,22 @@ serde_json = { workspace = true }
serde = { workspace = true }
tiny_http = "0.12"
log = { workspace = true }
tauri-plugin-log = { path = "../../../plugins/log", version = "2.1.0" }
tauri-plugin-log = { path = "../../../plugins/log", version = "2.2.0" }
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.2.0", features = [
"watch",
] }
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.1.0" }
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.1.0" }
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.2.0" }
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.2.0" }
tauri-plugin-http = { path = "../../../plugins/http", features = [
"multipart",
], version = "2.1.0" }
tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.1.0", features = [
], version = "2.2.0" }
tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.2.0", features = [
"windows7-compat",
] }
tauri-plugin-os = { path = "../../../plugins/os", version = "2.1.0" }
tauri-plugin-process = { path = "../../../plugins/process", version = "2.1.0" }
tauri-plugin-opener = { path = "../../../plugins/opener", version = "2.1.0" }
tauri-plugin-shell = { path = "../../../plugins/shell", version = "2.1.0" }
tauri-plugin-os = { path = "../../../plugins/os", version = "2.2.0" }
tauri-plugin-process = { path = "../../../plugins/process", version = "2.2.0" }
tauri-plugin-opener = { path = "../../../plugins/opener", version = "2.2.2" }
tauri-plugin-shell = { path = "../../../plugins/shell", version = "2.2.0" }
tauri-plugin-store = { path = "../../../plugins/store", version = "2.2.0" }
[dependencies.tauri]
@@ -51,17 +51,17 @@ features = [
]
[target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\"))".dependencies]
tauri-plugin-cli = { path = "../../../plugins/cli", version = "2.1.0" }
tauri-plugin-global-shortcut = { path = "../../../plugins/global-shortcut", version = "2.1.0" }
tauri-plugin-updater = { path = "../../../plugins/updater", version = "2.2.0" }
tauri-plugin-cli = { path = "../../../plugins/cli", version = "2.2.0" }
tauri-plugin-global-shortcut = { path = "../../../plugins/global-shortcut", version = "2.2.0" }
tauri-plugin-updater = { path = "../../../plugins/updater", version = "2.3.0" }
tauri-plugin-window-state = { path = "../../../plugins/window-state", version = "2.0.0" }
[target."cfg(any(target_os = \"android\", target_os = \"ios\"))".dependencies]
tauri-plugin-barcode-scanner = { path = "../../../plugins/barcode-scanner/", version = "2.1.0" }
tauri-plugin-nfc = { path = "../../../plugins/nfc", version = "2.1.0" }
tauri-plugin-biometric = { path = "../../../plugins/biometric/", version = "2.1.0" }
tauri-plugin-geolocation = { path = "../../../plugins/geolocation/", version = "2.1.0" }
tauri-plugin-haptics = { path = "../../../plugins/haptics/", version = "2.1.0" }
tauri-plugin-barcode-scanner = { path = "../../../plugins/barcode-scanner/", version = "2.2.0" }
tauri-plugin-nfc = { path = "../../../plugins/nfc", version = "2.2.0" }
tauri-plugin-biometric = { path = "../../../plugins/biometric/", version = "2.2.0" }
tauri-plugin-geolocation = { path = "../../../plugins/geolocation/", version = "2.2.0" }
tauri-plugin-haptics = { path = "../../../plugins/haptics/", version = "2.2.0" }
[features]
prod = ["tauri/custom-protocol"]
+3 -3
View File
@@ -11,20 +11,20 @@
"example:api:dev": "pnpm run --filter \"api\" tauri dev"
},
"devDependencies": {
"@eslint/js": "9.16.0",
"@eslint/js": "9.17.0",
"@rollup/plugin-node-resolve": "15.3.0",
"@rollup/plugin-terser": "0.4.4",
"@rollup/plugin-typescript": "11.1.6",
"@types/eslint__js": "8.42.3",
"covector": "^0.12.3",
"eslint": "9.16.0",
"eslint": "9.17.0",
"eslint-config-prettier": "9.1.0",
"eslint-plugin-security": "3.0.1",
"prettier": "3.4.2",
"rollup": "4.28.1",
"tslib": "2.8.1",
"typescript": "5.7.2",
"typescript-eslint": "8.17.0"
"typescript-eslint": "8.18.0"
},
"resolutions": {
"semver": ">=7.5.2",
-1
View File
@@ -72,7 +72,6 @@ import {
writeText,
readText,
writeHtml,
readHtml,
clear
} from '@tauri-apps/plugin-clipboard-manager'
await writeText('Tauri is awesome!')
+4 -2
View File
@@ -111,9 +111,11 @@ async function readImage(): Promise<Image> {
*
* @example
* ```typescript
* import { writeHtml, readHtml } from '@tauri-apps/plugin-clipboard-manager';
* import { writeHtml } from '@tauri-apps/plugin-clipboard-manager';
* await writeHtml('<h1>Tauri is awesome!</h1>', 'plaintext');
* await writeHtml('<h1>Tauri is awesome!</h1>', '<h1>Tauri is awesome</h1>'); // Will write "<h1>Tauri is awesome</h1>" as plain text
* // The following will write "<h1>Tauri is awesome</h1>" as plain text
* await writeHtml('<h1>Tauri is awesome!</h1>', '<h1>Tauri is awesome</h1>');
* // we can read html data only as a string so there's just readText(), no readHtml()
* assert(await readText(), '<h1>Tauri is awesome!</h1>');
* ```
*
+1 -1
View File
@@ -11,7 +11,7 @@
},
"dependencies": {
"@tauri-apps/api": "2.1.1",
"@tauri-apps/plugin-deep-link": "2.1.0"
"@tauri-apps/plugin-deep-link": "2.2.0"
},
"devDependencies": {
"@tauri-apps/cli": "2.1.0",
+8
View File
@@ -1,5 +1,13 @@
# Changelog
## \[2.2.2]
- [`ee0f65de`](https://github.com/tauri-apps/plugins-workspace/commit/ee0f65de5c645c244c5f0b638e0e0aab687cb9bf) ([#2207](https://github.com/tauri-apps/plugins-workspace/pull/2207) by [@universalappfactory](https://github.com/tauri-apps/plugins-workspace/../../universalappfactory)) Fixed OpenerPlugin packagename for android
## \[2.2.1]
- [`18dffc9d`](https://github.com/tauri-apps/plugins-workspace/commit/18dffc9dfecaf0c900e233e041d9ca36c92834b5) ([#2189](https://github.com/tauri-apps/plugins-workspace/pull/2189) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Fix usage on iOS.
## \[2.2.0]
- [`3a79266b`](https://github.com/tauri-apps/plugins-workspace/commit/3a79266b8cf96a55b1ae6339d725567d45a44b1d) ([#2173](https://github.com/tauri-apps/plugins-workspace/pull/2173) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Bumped all plugins to `v2.2.0`. From now, the versions for the Rust and JavaScript packages of each plugin will be in sync with each other.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-opener"
version = "2.2.0"
version = "2.2.2"
description = "Open files and URLs using their default application."
edition = { workspace = true }
authors = { workspace = true }
+10
View File
@@ -98,8 +98,18 @@ fn main() {
.plugin(tauri_plugin_opener::init())
.setup(|app| {
let opener = app.opener();
// Opens the URL in the default browser
opener.open_url("https://example.com", None::<&str>)?;
// Or with a specific browser/app
opener.open_url("https://example.com", Some("firefox"))?;
// Opens the path with the system's default app
opener.open_path("/path/to/file", None::<&str>)?;
// Or with a specific app
opener.open_path("/path/to/file", Some("firefox"))?;
// Reveal a path with the system's default explorer
opener.reveal_item_in_dir("/path/to/file")?;
Ok(())
})
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
package app.tauri.shell
package app.tauri.opener
import android.app.Activity
import android.content.Intent
@@ -27,4 +27,4 @@ class OpenerPlugin(private val activity: Activity) : Plugin(activity) {
invoke.reject(ex.message)
}
}
}
}
+14 -16
View File
@@ -3,32 +3,30 @@
// SPDX-License-Identifier: MIT
import Foundation
import SwiftRs
import Tauri
import UIKit
import WebKit
class OpenerPlugin: Plugin {
@objc public func open(_ invoke: Invoke) throws {
do {
let urlString = try invoke.parseArgs(String.self)
if let url = URL(string: urlString) {
if #available(iOS 10, *) {
UIApplication.shared.open(url, options: [:])
} else {
UIApplication.shared.openURL(url)
}
}
invoke.resolve()
} catch {
invoke.reject(error.localizedDescription)
@objc public func open(_ invoke: Invoke) throws {
do {
let urlString = try invoke.parseArgs(String.self)
if let url = URL(string: urlString) {
if #available(iOS 10, *) {
UIApplication.shared.open(url, options: [:])
} else {
UIApplication.shared.openURL(url)
}
}
invoke.resolve()
} catch {
invoke.reject(error.localizedDescription)
}
}
}
@_cdecl("init_plugin_shell")
@_cdecl("init_plugin_opener")
func initPlugin() -> Plugin {
return OpenerPlugin()
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@tauri-apps/plugin-opener",
"version": "2.2.0",
"version": "2.2.2",
"description": "Open files and URLs using their default application.",
"license": "MIT OR Apache-2.0",
"authors": [
+53 -1
View File
@@ -38,6 +38,19 @@ pub struct Opener<R: Runtime> {
impl<R: Runtime> Opener<R> {
/// Open a url with a default or specific program.
///
/// # Examples
///
/// ```rust,no_run
/// use tauri_plugin_opener::OpenerExt;
///
/// tauri::Builder::default()
/// .setup(|app| {
/// // open the given URL on the system default browser
/// app.opener().open_url("https://github.com/tauri-apps/tauri", None::<&str>)?;
/// Ok(())
/// });
/// ```
///
/// ## Platform-specific:
///
/// - **Android / iOS**: Always opens using default program.
@@ -48,6 +61,19 @@ impl<R: Runtime> Opener<R> {
/// Open a url with a default or specific program.
///
/// # Examples
///
/// ```rust,no_run
/// use tauri_plugin_opener::OpenerExt;
///
/// tauri::Builder::default()
/// .setup(|app| {
/// // open the given URL on the system default browser
/// app.opener().open_url("https://github.com/tauri-apps/tauri", None::<&str>)?;
/// Ok(())
/// });
/// ```
///
/// ## Platform-specific:
///
/// - **Android / iOS**: Always opens using default program.
@@ -60,6 +86,19 @@ impl<R: Runtime> Opener<R> {
/// Open a path with a default or specific program.
///
/// # Examples
///
/// ```rust,no_run
/// use tauri_plugin_opener::OpenerExt;
///
/// tauri::Builder::default()
/// .setup(|app| {
/// // open the given path on the system default explorer
/// app.opener().open_path("/path/to/file", None::<&str>)?;
/// Ok(())
/// });
/// ```
///
/// ## Platform-specific:
///
/// - **Android / iOS**: Always opens using default program.
@@ -74,6 +113,19 @@ impl<R: Runtime> Opener<R> {
/// Open a path with a default or specific program.
///
/// # Examples
///
/// ```rust,no_run
/// use tauri_plugin_opener::OpenerExt;
///
/// tauri::Builder::default()
/// .setup(|app| {
/// // open the given path on the system default explorer
/// app.opener().open_path("/path/to/file", None::<&str>)?;
/// Ok(())
/// });
/// ```
///
/// ## Platform-specific:
///
/// - **Android / iOS**: Always opens using default program.
@@ -98,7 +150,7 @@ pub trait OpenerExt<R: Runtime> {
fn opener(&self) -> &Opener<R>;
}
impl<R: Runtime, T: Manager<R>> crate::OpenerExt<R> for T {
impl<R: Runtime, T: Manager<R>> OpenerExt<R> for T {
fn opener(&self) -> &Opener<R> {
self.state::<Opener<R>>().inner()
}
+3 -3
View File
@@ -26,7 +26,7 @@ pub(crate) fn open<P: AsRef<OsStr>, S: AsRef<str>>(path: P, with: Option<S>) ->
/// tauri::Builder::default()
/// .setup(|app| {
/// // open the given URL on the system default browser
/// tauri_plugin_opener::open_url("https://github.com/tauri-apps/tauri", None)?;
/// tauri_plugin_opener::open_url("https://github.com/tauri-apps/tauri", None::<&str>)?;
/// Ok(())
/// });
/// ```
@@ -46,8 +46,8 @@ pub fn open_url<P: AsRef<str>, S: AsRef<str>>(url: P, with: Option<S>) -> crate:
/// ```rust,no_run
/// tauri::Builder::default()
/// .setup(|app| {
/// // open the given URL on the system default browser
/// tauri_plugin_opener::open_path("/path/to/file", None)?;
/// // open the given URL on the system default explorer
/// tauri_plugin_opener::open_path("/path/to/file", None::<&str>)?;
/// Ok(())
/// });
/// ```
+4
View File
@@ -1,5 +1,9 @@
# Changelog
## \[2.3.0]
- [`829b6326`](https://github.com/tauri-apps/plugins-workspace/commit/829b63265030bc9c61d1738c4eaca0ffb3178677) ([#1919](https://github.com/tauri-apps/plugins-workspace/pull/1919) by [@n1ght-hunter](https://github.com/tauri-apps/plugins-workspace/../../n1ght-hunter)) Add `tauri_plugin_updater::Builder::default_version_comparator` method to set the default version comparator for the updater.
## \[2.2.0]
- [`3a79266b`](https://github.com/tauri-apps/plugins-workspace/commit/3a79266b8cf96a55b1ae6339d725567d45a44b1d) ([#2173](https://github.com/tauri-apps/plugins-workspace/pull/2173) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Bumped all plugins to `v2.2.0`. From now, the versions for the Rust and JavaScript packages of each plugin will be in sync with each other.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-updater"
version = "2.2.0"
version = "2.3.0"
description = "In-app updates for Tauri applications."
edition = { workspace = true }
authors = { workspace = true }
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@tauri-apps/plugin-updater",
"version": "2.2.0",
"version": "2.3.0",
"license": "MIT OR Apache-2.0",
"authors": [
"Tauri Programme within The Commons Conservancy"
+27 -3
View File
@@ -11,8 +11,9 @@
html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png"
)]
use std::ffi::OsString;
use std::{ffi::OsString, sync::Arc};
use semver::Version;
use tauri::{
plugin::{Builder as PluginBuilder, TauriPlugin},
Manager, Runtime,
@@ -69,7 +70,11 @@ impl<R: Runtime, T: Manager<R>> UpdaterExt<R> for T {
fn updater_builder(&self) -> UpdaterBuilder {
let app = self.app_handle();
let package_info = app.package_info();
let UpdaterState { config, target } = self.state::<UpdaterState>().inner();
let UpdaterState {
config,
target,
version_comparator,
} = self.state::<UpdaterState>().inner();
let mut builder = UpdaterBuilder::new(
package_info.name.clone(),
@@ -86,6 +91,8 @@ impl<R: Runtime, T: Manager<R>> UpdaterExt<R> for T {
builder = builder.current_exe_args(args);
}
builder.version_comparator = version_comparator.clone();
#[cfg(any(
target_os = "linux",
target_os = "dragonfly",
@@ -116,6 +123,7 @@ impl<R: Runtime, T: Manager<R>> UpdaterExt<R> for T {
struct UpdaterState {
target: Option<String>,
config: Config,
version_comparator: Option<VersionComparator>,
}
#[derive(Default)]
@@ -123,6 +131,7 @@ pub struct Builder {
target: Option<String>,
pubkey: Option<String>,
installer_args: Vec<OsString>,
default_version_comparator: Option<VersionComparator>,
}
impl Builder {
@@ -163,9 +172,20 @@ impl Builder {
self
}
pub fn default_version_comparator<
F: Fn(Version, RemoteRelease) -> bool + Send + Sync + 'static,
>(
mut self,
f: F,
) -> Self {
self.default_version_comparator.replace(Arc::new(f));
self
}
pub fn build<R: Runtime>(self) -> TauriPlugin<R, Config> {
let pubkey = self.pubkey;
let target = self.target;
let version_comparator = self.default_version_comparator;
let installer_args = self.installer_args;
PluginBuilder::<R, Config>::new("updater")
.setup(move |app, api| {
@@ -176,7 +196,11 @@ impl Builder {
if let Some(windows) = &mut config.windows {
windows.installer_args.extend_from_slice(&installer_args);
}
app.manage(UpdaterState { target, config });
app.manage(UpdaterState {
target,
config,
version_comparator,
});
Ok(())
})
.invoke_handler(tauri::generate_handler![
+4 -3
View File
@@ -93,12 +93,13 @@ impl RemoteRelease {
}
pub type OnBeforeExit = Arc<dyn Fn() + Send + Sync + 'static>;
pub type VersionComparator = Arc<dyn Fn(Version, RemoteRelease) -> bool + Send + Sync>;
pub struct UpdaterBuilder {
app_name: String,
current_version: Version,
config: Config,
version_comparator: Option<Box<dyn Fn(Version, RemoteRelease) -> bool + Send + Sync>>,
pub(crate) version_comparator: Option<VersionComparator>,
executable_path: Option<PathBuf>,
target: Option<String>,
endpoints: Option<Vec<Url>>,
@@ -139,7 +140,7 @@ impl UpdaterBuilder {
mut self,
f: F,
) -> Self {
self.version_comparator = Some(Box::new(f));
self.version_comparator = Some(Arc::new(f));
self
}
@@ -283,7 +284,7 @@ pub struct Updater {
config: Config,
app_name: String,
current_version: Version,
version_comparator: Option<Box<dyn Fn(Version, RemoteRelease) -> bool + Send + Sync>>,
version_comparator: Option<VersionComparator>,
timeout: Option<Duration>,
proxy: Option<Url>,
endpoints: Vec<Url>,
+270 -308
View File
File diff suppressed because it is too large Load Diff