Migrate to Tauri v2 and fix configuration issues

This commit is contained in:
Rbanh 2025-04-01 00:08:58 -04:00
parent 7b772bb1bb
commit 340ce3d834
6 changed files with 115 additions and 83 deletions

View File

@ -7,17 +7,19 @@
"dev": "vite",
"build": "tsc && vite build",
"preview": "vite preview",
"tauri": "tauri"
"tauri": "tauri",
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@tauri-apps/api": "^2.4.0",
"@tauri-apps/plugin-dialog": "^2.2.0",
"@tauri-apps/plugin-opener": "^2",
"@tauri-apps/api": "^2.0.0",
"@tauri-apps/plugin-dialog": "^2.0.0",
"@tauri-apps/plugin-fs": "^2.0.0",
"@tauri-apps/plugin-shell": "^2.0.0",
"react": "^18.3.1",
"react-dom": "^18.3.1"
},
"devDependencies": {
"@tauri-apps/cli": "^2",
"@tauri-apps/cli": "^2.0.0",
"@types/react": "^18.3.1",
"@types/react-dom": "^18.3.1",
"@vitejs/plugin-react": "^4.3.4",

View File

@ -1,48 +1,48 @@
[package]
name = "plugsnatcher"
name = "app"
version = "0.1.0"
description = "A Tauri App"
authors = ["you"]
license = ""
repository = ""
edition = "2021"
rust-version = "1.77.2"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
# The `_lib` suffix may seem redundant but it is necessary
# to make the lib name unique and wouldn't conflict with the bin name.
# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519
name = "plugsnatcher_lib"
name = "app_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[build-dependencies]
tauri-build = { version = "2", features = [] }
tauri-build = { version = "2.1.0", features = [] }
[dependencies]
tauri = { version = "2", features = [] }
tauri-plugin-opener = "2"
tauri-plugin-dialog = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
zip = "0.6"
yaml-rust = "0.4"
# walkdir = "2.4" # Not currently used, commented out
regex = "1.10" # Still needed elsewhere in the codebase
sha2 = "0.10"
reqwest = { version = "0.12", features = ["json", "rustls-tls"], default-features = false } # Updated version, enabled rustls
# scraper = "0.19.0" # No longer used for SpigotMCCrawler
urlencoding = "2.1.3" # Reverted version
semver = "1.0"
url = "2.5"
futures = "0.3"
async-trait = "0.1"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "time"] } # Changed features from "full"
# --- Add Caching Dependencies ---
cached = { version = "0.52", features = ["proc_macro", "async", "tokio"] }
async-mutex = "1.4" # For locking cache access within HttpClient
# --- End Caching Dependencies ---
base64 = "0.21" # For decoding SpigotMC changelog data
walkdir = "2.5.0"
# Tauri dependencies
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
log = "0.4"
tauri = { version = "2.4.0", features = [] }
tauri-plugin-log = "2.0.0-rc"
tauri-plugin-shell = "~2.0"
tauri-plugin-dialog = "~2.0"
tauri-plugin-fs = "~2.0"
[features]
# default = ["custom-protocol"]
# Plugin scanner dependencies
walkdir = "2.3.3"
regex = "1.9.1"
yaml-rust = "0.4.5"
zip = "0.6.6"
sha2 = "0.10.7"
# Network and async dependencies
reqwest = { version = "0.11.18", features = ["json"] }
tokio = { version = "1.29.1", features = ["full"] }
futures = "0.3.28"
async-trait = "0.1.71"
cached = "0.44.0"
urlencoding = "2.1.2"
base64 = "0.21.2"
# Version management
semver = "1.0.18"

View File

@ -1,12 +1,24 @@
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "default",
"description": "Capability for the main window",
"windows": ["main"],
"description": "Default capability set for the main window",
"windows": [
"main"
],
"permissions": [
"core:default",
"opener:default",
"dialog:default",
"dialog:allow-open"
{ "identifier": "core:default" },
{ "identifier": "dialog:default" },
{ "identifier": "dialog:allow-open" },
{ "identifier": "shell:default" },
{ "identifier": "shell:allow-open" },
{ "identifier": "fs:default" },
{
"identifier": "fs:allow-read-dir",
"allow": ["**", "//**"]
},
{
"identifier": "fs:allow-read-file",
"allow": ["**", "//**"]
}
]
}

View File

@ -289,39 +289,51 @@ pub async fn lib_download_plugin_from_repository(
}
}
/// Configure and run the Tauri application
// Tauri v2 plugin initialization
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
// Build the Tauri application
tauri::Builder::default()
.plugin(tauri_plugin_dialog::init())
.invoke_handler(tauri::generate_handler![
// Plugin discovery commands
scan_server_dir,
scan_server_dir_sync,
tauri::Builder::default()
.plugin(tauri_plugin_shell::init())
.plugin(tauri_plugin_dialog::init())
.plugin(tauri_plugin_fs::init())
.setup(|app| {
if cfg!(debug_assertions) {
app.handle().plugin(
tauri_plugin_log::Builder::default()
.level(log::LevelFilter::Info)
.build(),
)?;
}
Ok(())
})
.invoke_handler(tauri::generate_handler![
// Plugin discovery commands
scan_server_dir,
scan_server_dir_sync,
// Plugin repository commands
search_plugins,
get_plugin_details,
// Plugin repository commands
search_plugins,
get_plugin_details,
// Update commands
update_plugin,
check_plugin_updates,
check_single_plugin_update_command,
backup_plugin_command,
// Update commands
update_plugin,
check_plugin_updates,
check_single_plugin_update_command,
backup_plugin_command,
// Plugin management commands
download_plugin,
set_plugin_repository,
get_plugin_versions,
load_plugin_data,
save_plugin_data,
// Plugin management commands
download_plugin,
set_plugin_repository,
get_plugin_versions,
load_plugin_data,
save_plugin_data,
// Utility commands
get_potential_plugin_matches,
compare_versions,
is_plugin_compatible,
greet
])
.run(tauri::generate_context!())
.expect("error while running tauri application");
// Utility commands
get_potential_plugin_matches,
compare_versions,
is_plugin_compatible,
greet
])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}

View File

@ -2,5 +2,5 @@
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
fn main() {
plugsnatcher_lib::run();
app_lib::run();
}

View File

@ -1,28 +1,31 @@
{
"$schema": "https://schema.tauri.app/config/2",
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
"identifier": "com.plugsnatcher.app",
"productName": "PlugSnatcher",
"version": "0.1.0",
"identifier": "com.plugsnatcher.app",
"build": {
"beforeDevCommand": "npm run dev",
"devUrl": "http://localhost:1420",
"beforeBuildCommand": "npm run build",
"frontendDist": "../dist"
"frontendDist": "../dist",
"devUrl": "http://localhost:1420"
},
"app": {
"security": {
"csp": null
},
"windows": [
{
"label": "main",
"title": "PlugSnatcher",
"width": 1024,
"height": 768,
"minWidth": 800,
"minHeight": 600,
"resizable": true,
"fullscreen": false,
"center": true
}
],
"security": {
"csp": null
}
]
},
"bundle": {
"active": true,
@ -36,7 +39,10 @@
]
},
"plugins": {
"shell": {
"open": true
},
"dialog": null,
"opener": null
"fs": null
}
}