From 79593f17716520ea6ce46113a011e92f110e1548 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=81=E6=89=AC?= Date: Wed, 26 Nov 2025 19:41:53 +0800 Subject: [PATCH] =?UTF-8?q?perf(RedirectRequest):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=87=8D=E5=AE=9A=E5=90=91=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/CustomLoadingStrategyModel.ets | 5 +---- .../model/RedirectRequestModel.ets | 13 +++++++++++++ .../view/RedirectRequestView.ets | 1 + .../viewmodel/RedirectRequestViewModel.ets | 7 +++++++ 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/entry/src/main/ets/Interceptors/CustomLoadingStrategyInterceptor/model/CustomLoadingStrategyModel.ets b/entry/src/main/ets/Interceptors/CustomLoadingStrategyInterceptor/model/CustomLoadingStrategyModel.ets index ca6e9c9..ddee2df 100644 --- a/entry/src/main/ets/Interceptors/CustomLoadingStrategyInterceptor/model/CustomLoadingStrategyModel.ets +++ b/entry/src/main/ets/Interceptors/CustomLoadingStrategyInterceptor/model/CustomLoadingStrategyModel.ets @@ -40,10 +40,7 @@ export class CustomLoadingStrategyModel { try { const netHandle = connection.getDefaultNetSync(); const netData = connection.getNetCapabilitiesSync(netHandle); - if (netData.bearerTypes.includes(connection.NetBearType.BEARER_WIFI)) { - return true; - } - return false; + return netData.bearerTypes.includes(connection.NetBearType.BEARER_WIFI); } catch (error) { let err = error as BusinessError; Logger.error(TAG, `Get the network info failed, errCode: ${err.code}, errMessage: ${err.message}.`); diff --git a/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/model/RedirectRequestModel.ets b/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/model/RedirectRequestModel.ets index 7ccaf20..4c94d8a 100644 --- a/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/model/RedirectRequestModel.ets +++ b/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/model/RedirectRequestModel.ets @@ -25,11 +25,19 @@ const TAG = '[RedirectRequestModel]'; export class RedirectRequestModel { private controller: webview.WebviewController; private redirectUrl: string = ''; + private allowAllForCurrentLoad: boolean = false; constructor(controller: webview.WebviewController) { this.controller = controller; } + /** + * Reset session-level allow flags when starting a new load + */ + resetSession(): void { + this.allowAllForCurrentLoad = false; + } + /** * Updates the redirect target URL */ @@ -66,6 +74,7 @@ export class RedirectRequestModel { performRedirect(): boolean { try { this.controller.loadUrl(this.redirectUrl); + this.allowAllForCurrentLoad = true; Logger.info(TAG, `Redirected to ${this.redirectUrl}`); return true; } catch (error) { @@ -82,6 +91,10 @@ export class RedirectRequestModel { processLoadIntercept(event: OnLoadInterceptEvent): boolean { const requestUrl = event.data.getRequestUrl(); + if (this.allowAllForCurrentLoad) { + return false; + } + if (this.shouldInterceptUrl(requestUrl)) { // Perform redirect const redirected = this.performRedirect(); diff --git a/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/view/RedirectRequestView.ets b/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/view/RedirectRequestView.ets index b88c35b..80b16d5 100644 --- a/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/view/RedirectRequestView.ets +++ b/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/view/RedirectRequestView.ets @@ -83,6 +83,7 @@ struct RedirectRequest { Logger.error(TAG, `Failed to show toast, errCode: ${err.code}, errMessage: ${err.message}.`); } } + this.viewModel?.resetSession(); this.isLoading = true; }) } diff --git a/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/viewmodel/RedirectRequestViewModel.ets b/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/viewmodel/RedirectRequestViewModel.ets index c1b5de7..81cbbb0 100644 --- a/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/viewmodel/RedirectRequestViewModel.ets +++ b/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/viewmodel/RedirectRequestViewModel.ets @@ -33,6 +33,13 @@ export class RedirectRequestViewModel { this.model.setRedirectUrl(redirectUrl); } + /** + * Reset redirect request session state for a fresh load + */ + resetSession(): void { + this.model.resetSession(); + } + /** * Handles load intercept logic */ -- Gitee