♻️ 重构米社窗口创建,现在默认只创建一个窗口了

This commit is contained in:
目棃
2024-07-06 00:26:37 +08:00
parent f4de7552e1
commit 012efb03ea
4 changed files with 20 additions and 31 deletions

View File

@@ -8,7 +8,9 @@ use tauri_utils::config::WebviewUrl;
#[tauri::command] #[tauri::command]
pub async fn create_mhy_client(handle: AppHandle, func: String, url: String) { pub async fn create_mhy_client(handle: AppHandle, func: String, url: String) {
let mut option = handle.config().app.windows.get(1).unwrap().clone(); let mut win_width = 400.0;
let mut win_height = 800.0;
let win_ua = "Mozilla/5.0 (Linux; Android 12) Mobile miHoYoBBS/2.72.2";
let url_parse; let url_parse;
if url != "" { if url != "" {
url_parse = WebviewUrl::External(url.parse().unwrap()); url_parse = WebviewUrl::External(url.parse().unwrap());
@@ -19,8 +21,8 @@ pub async fn create_mhy_client(handle: AppHandle, func: String, url: String) {
|| func == "web_act" || func == "web_act"
|| url.starts_with("https://webstatic.mihoyo.com/ys/event/e20220303-birthday/index.html") || url.starts_with("https://webstatic.mihoyo.com/ys/event/e20220303-birthday/index.html")
{ {
option.width = 1280.0; win_width = 1280.0;
option.height = 720.0; win_height = 720.0;
} }
let window_find = handle.get_webview_window("mhy_client"); let window_find = handle.get_webview_window("mhy_client");
if window_find.is_some() { if window_find.is_some() {
@@ -28,10 +30,10 @@ pub async fn create_mhy_client(handle: AppHandle, func: String, url: String) {
return; return;
} }
WebviewWindowBuilder::new(&handle, "mhy_client", url_parse) WebviewWindowBuilder::new(&handle, "mhy_client", url_parse)
.inner_size(option.width, option.height) .inner_size(win_width, win_height)
.title(option.title) .title("米游社")
.center() .center()
.user_agent(option.user_agent.unwrap().as_str()) .user_agent(win_ua)
.menu(menu::create_mhy_menu(handle.clone())) .menu(menu::create_mhy_menu(handle.clone()))
.on_menu_event(move |app, event| menu::handle_menu_event(app, event)) .on_menu_event(move |app, event| menu::handle_menu_event(app, event))
.build() .build()

View File

@@ -16,12 +16,6 @@ pub async fn init_app(app_handle: AppHandle) {
return; return;
} }
} }
dbg!("init_app");
let _mhy = app_handle.get_webview_window("mhy_client");
if _mhy.is_some() {
// todo 这里应该延时,否则可能造成 macOS 平台的崩溃
_mhy.unwrap().destroy().unwrap();
}
app_handle.emit("initApp", ()).unwrap(); app_handle.emit("initApp", ()).unwrap();
unsafe { unsafe {
APP_INITIALIZED = true; APP_INITIALIZED = true;

View File

@@ -1,7 +1,7 @@
{ {
"productName": "TeyvatGuide", "productName": "TeyvatGuide",
"identifier": "TeyvatGuide", "identifier": "TeyvatGuide",
"version": "0.4.9", "version": "0.5.0",
"build": { "build": {
"beforeDevCommand": "pnpm vite:dev", "beforeDevCommand": "pnpm vite:dev",
"beforeBuildCommand": "pnpm vite:build", "beforeBuildCommand": "pnpm vite:build",
@@ -46,20 +46,6 @@
"width": 1600, "width": 1600,
"height": 900, "height": 900,
"center": true "center": true
},
{
"fullscreen": false,
"resizable": false,
"title": "米游社",
"label": "mhy_client",
"url": "",
"userAgent": "Mozilla/5.0 (Linux; Android 12) Mobile miHoYoBBS/2.70.1",
"visible": false,
"width": 400,
"height": 800,
"center": true,
"decorations": true,
"closable": true
} }
], ],
"security": { "security": {
@@ -69,7 +55,7 @@
"plugins": { "plugins": {
"deep-link": { "deep-link": {
"desktop": { "desktop": {
"schemes": ["teyvatguide"] "schemes": ["teyvatguide", "teyvat"]
}, },
"mobile": [] "mobile": []
} }

View File

@@ -131,7 +131,7 @@ class TGClient {
/** /**
* @func getUrl * @func getUrl
* @since Beta v0.3.8 * @since Beta v0.5.0
* @desc 获取 url * @desc 获取 url
* @param {string} func - 方法名 * @param {string} func - 方法名
* @returns {string} - url * @returns {string} - url
@@ -141,7 +141,7 @@ class TGClient {
case "sign_in": case "sign_in":
return "https://act.mihoyo.com/bbs/event/signin/hk4e/index.html?act_id=e202311201442471&bbs_auth_required=true&bbs_presentation_style=fullscreen&mhy_presentation_style=fullscreen&utm_source=bbs&utm_medium=ys&utm_campaign=icon"; return "https://act.mihoyo.com/bbs/event/signin/hk4e/index.html?act_id=e202311201442471&bbs_auth_required=true&bbs_presentation_style=fullscreen&mhy_presentation_style=fullscreen&utm_source=bbs&utm_medium=ys&utm_campaign=icon";
case "game_record": case "game_record":
return "https://webstatic.mihoyo.com/app/community-game-records/index.html?bbs_presentation_style=fullscreen"; return "https://webstatic.mihoyo.com/app/community-game-records/index.html?bbs_presentation_style=fullscreen&game_id=2";
case "daily_note": case "daily_note":
return "https://webstatic.mihoyo.com/app/community-game-records/index.html?bbs_presentation_style=fullscreen#/ys/daily/"; return "https://webstatic.mihoyo.com/app/community-game-records/index.html?bbs_presentation_style=fullscreen#/ys/daily/";
case "tavern": case "tavern":
@@ -452,7 +452,14 @@ class TGClient {
await TGLogger.Info(`[TGClient][open][${func}] ${url}`); await TGLogger.Info(`[TGClient][open][${func}] ${url}`);
const windowFind = webviewWindow.WebviewWindow.getByLabel("mhy_client"); const windowFind = webviewWindow.WebviewWindow.getByLabel("mhy_client");
if (windowFind !== null) { if (windowFind !== null) {
await windowFind.destroy(); try {
await windowFind.destroy();
} catch (e) {
showSnackbar({
text: `[TGClient][open] ${e}`,
color: "error",
});
}
} }
await core.invoke<InvokeArg>("create_mhy_client", { func, url }); await core.invoke<InvokeArg>("create_mhy_client", { func, url });
await this.loadJSBridge(); await this.loadJSBridge();