Skip to content

Commit f7cc774

Browse files
committed
Refactor argument handling in Tauri setup
- Updated argument parsing to convert command-line arguments into URL parameters. - Enhanced URL construction for the window configuration by appending parameters correctly. - Improved logging for better visibility of application startup arguments and generated URLs.
1 parent aaf13a4 commit f7cc774

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

src-tauri/src/utils/init.rs

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,41 @@ use tauri_plugin_store::StoreExt;
66
pub async fn resolve_setup(app: &mut App) -> Result<(), Error> {
77
let args: Vec<String> = std::env::args().collect();
88
println!("Application started with arguments: {:?}", args);
9-
// 将参数转成查询参数格式
10-
let query_params = args
9+
// 判断args每一项是不是包含=,是的话,将=前面的作为key,=后面的作为value,否则作废
10+
let url_params = args
1111
.iter()
12-
.map(|arg| arg.split('=').collect::<Vec<&str>>())
13-
.collect::<Vec<Vec<&str>>>();
14-
println!("query_params: {:?}", query_params);
12+
.map(|arg| {
13+
if arg.contains("=") {
14+
let parts = arg.split('=').collect::<Vec<&str>>();
15+
(parts[0], parts[1])
16+
} else {
17+
("exec", arg.as_str())
18+
}
19+
})
20+
.collect::<Vec<(&str, &str)>>();
21+
println!("url_params: {:?}", url_params);
1522
let app_handle = app.handle();
1623
// 示例 JSON 字符串
1724
let window_json = r#"
1825
{
1926
"title": "PakePlus",
2027
"visible": false,
21-
"url": "index.html?-name=Tom&--age=18",
28+
"url": "index.html",
2229
"label": "main"
2330
}
2431
"#;
32+
// 将参数转成url参数并拼接成字符串,然后判断window_json里面的url是否已经包含url参数,是的话,将url参数拼接在url后面,否则加上?号再拼接到url上
33+
let url_params_str = url_params
34+
.iter()
35+
.map(|param| format!("{}={}", param.0, param.1))
36+
.collect::<Vec<String>>()
37+
.join("&");
38+
let url = format!("index.html?{}", url_params_str);
39+
println!("url: {:?}", url);
40+
let window_json = window_json.replace("index.html", &url);
41+
println!("window_json: {:?}", window_json);
2542
// 解析 JSON 字符串为 WindowConfig 类型
26-
let config: WindowConfig = serde_json::from_str(window_json).unwrap();
43+
let config: WindowConfig = serde_json::from_str(&window_json).unwrap();
2744
let window = tauri::WebviewWindowBuilder::from_config(app_handle, &config)
2845
.unwrap()
2946
.initialization_script(include_str!("../../data/analytics.js"))

0 commit comments

Comments
 (0)