From c5e0221a0b1a052d0a5c5d93fdfbb10e51e23165 Mon Sep 17 00:00:00 2001 From: Lightczx <1686188646@qq.com> Date: Wed, 20 Dec 2023 15:26:08 +0800 Subject: [PATCH] fix jsbridge --- .../Snap.Hutao/Web/Bridge/MiHoYoJSBridge.cs | 14 +++----------- .../Snap.Hutao/Web/Bridge/Model/IJsBridgeResult.cs | 8 +------- .../Web/Bridge/Model/JsBridgeResultExtension.cs | 13 +++++++++++++ 3 files changed, 17 insertions(+), 18 deletions(-) create mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Bridge/Model/JsBridgeResultExtension.cs diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Bridge/MiHoYoJSBridge.cs b/src/Snap.Hutao/Snap.Hutao/Web/Bridge/MiHoYoJSBridge.cs index 6ebf6013..8236e75e 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Bridge/MiHoYoJSBridge.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Bridge/MiHoYoJSBridge.cs @@ -404,20 +404,12 @@ internal class MiHoYoJSBridge logger?.LogInformation("[{Id}][ExecuteScript: {callback}]\n{payload}", interfaceId, callback, payload); await taskContext.SwitchToMainThreadAsync(); - try + if (coreWebView2 is null || coreWebView2.IsDisposed()) { - if (coreWebView2 is not null) - { - return await coreWebView2.ExecuteScriptAsync(js); - } - } - catch (COMException) - { - // COMException (0x8007139F): 组或资源的状态不是执行请求操作的正确状态。 (0x8007139F) - // webview is disposing or disposed + return string.Empty; } - return string.Empty; + return await coreWebView2.ExecuteScriptAsync(js); } private async void OnWebMessageReceived(CoreWebView2 webView2, CoreWebView2WebMessageReceivedEventArgs args) diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Bridge/Model/IJsBridgeResult.cs b/src/Snap.Hutao/Snap.Hutao/Web/Bridge/Model/IJsBridgeResult.cs index 4d1be414..769fc80e 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Bridge/Model/IJsBridgeResult.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Bridge/Model/IJsBridgeResult.cs @@ -7,10 +7,4 @@ namespace Snap.Hutao.Web.Bridge.Model; /// 指示此为Js结果 /// [HighQuality] -internal interface IJsBridgeResult -{ - string ToJson() - { - return JsonSerializer.Serialize(this); - } -} \ No newline at end of file +internal interface IJsBridgeResult; \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Bridge/Model/JsBridgeResultExtension.cs b/src/Snap.Hutao/Snap.Hutao/Web/Bridge/Model/JsBridgeResultExtension.cs new file mode 100644 index 00000000..330266cf --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Bridge/Model/JsBridgeResultExtension.cs @@ -0,0 +1,13 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Web.Bridge.Model; + +internal static class JsBridgeResultExtension +{ + public static string ToJson(this T result) + where T : IJsBridgeResult + { + return JsonSerializer.Serialize(result, result.GetType()); + } +} \ No newline at end of file