From f5f504dda43ff0f8b3f6dc4cd53a2ebafc54e0a7 Mon Sep 17 00:00:00 2001 From: wanghongenpin <178070584@qq.com> Date: Thu, 7 Dec 2023 17:14:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AF=B7=E6=B1=82=E9=87=8D?= =?UTF-8?q?=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/network/proxy_helper.dart | 2 ++ lib/ui/component/multi_window.dart | 20 ++++++++++--------- lib/ui/content/body.dart | 3 +-- lib/ui/desktop/left/domain.dart | 6 +++++- .../toolbar/setting/request_rewrite.dart | 8 ++++++-- 5 files changed, 25 insertions(+), 14 deletions(-) diff --git a/lib/network/proxy_helper.dart b/lib/network/proxy_helper.dart index 125d4c8..65d7ddc 100644 --- a/lib/network/proxy_helper.dart +++ b/lib/network/proxy_helper.dart @@ -90,6 +90,8 @@ class ProxyHelper { ..headers.contentLength = message.codeUnits.length ..body = message.codeUnits; + channel.putAttribute(AttributeKeys.host, hostAndPort); + listener?.onRequest(channel, request); listener?.onResponse(channel, request.response!); } diff --git a/lib/ui/component/multi_window.dart b/lib/ui/component/multi_window.dart index 96b4df8..25c6feb 100644 --- a/lib/ui/component/multi_window.dart +++ b/lib/ui/component/multi_window.dart @@ -90,14 +90,16 @@ class MultiWindow { switch (operation) { case Operation.add: - List list = arguments['items'] as List; - List items =list.map((e) => RewriteItem.fromJson(e)).toList(); - await requestRewrites.addRule(RequestRewriteRule.formJson(arguments['rule']), items); - break; case Operation.update: - List? list = arguments['items'] as List?; - List? items = list?.map((e) => RewriteItem.fromJson(e)).toList(); - await requestRewrites.updateRule(arguments['index'], RequestRewriteRule.formJson(arguments['rule']), items); + var rule = RequestRewriteRule.formJson(arguments['rule']); + List list = arguments['items'] as List; + List items = list.map((e) => RewriteItem.fromJson(e)).toList(); + + if (operation == Operation.add) { + await requestRewrites.addRule(rule, items); + } else { + await requestRewrites.updateRule(arguments['index'], rule, items); + } break; case Operation.delete: await requestRewrites.removeIndex([arguments['index']]); @@ -113,7 +115,7 @@ class MultiWindow { _refreshRewrite = true; Future.delayed(const Duration(milliseconds: 1000), () async { _refreshRewrite = false; - (await RequestRewrites.instance).flushRequestRewriteConfig(); + requestRewrites.flushRequestRewriteConfig(); }); } } @@ -136,7 +138,7 @@ void registerMethodHandler() { return 'done'; } - if (call.method == 'refreshRequestRewrite' && fromWindowId != 0) { + if (call.method == 'refreshRequestRewrite') { MultiWindow._handleRefreshRewrite(Operation.of(call.arguments['operation']), call.arguments); return 'done'; } diff --git a/lib/ui/content/body.dart b/lib/ui/content/body.dart index 4885927..a79bcf5 100644 --- a/lib/ui/content/body.dart +++ b/lib/ui/content/body.dart @@ -188,10 +188,9 @@ class HttpBodyState extends State { showDialog( context: context, barrierDismissible: false, - builder: (BuildContext context) => RuleAddDialog(rule: rule, items: rewriteItems)).then((value) { + builder: (BuildContext context) => RuleAddDialog(rule: rule, items: rewriteItems, newWindow: false)).then((value) { if (value is RequestRewriteRule) { DesktopMultiWindow.getAllSubWindowIds().then((windowIds) async { - await requestRewrites.flushRequestRewriteConfig(); var items = await requestRewrites.getRewriteItems(value); await requestRewrites.updateRule(requestRewrites.rules.indexOf(value), value, items); for (var windowId in windowIds) { diff --git a/lib/ui/desktop/left/domain.dart b/lib/ui/desktop/left/domain.dart index 796d098..1bfe3bc 100644 --- a/lib/ui/desktop/left/domain.dart +++ b/lib/ui/desktop/left/domain.dart @@ -115,7 +115,11 @@ class DomainWidgetState extends State with AutomaticKeepAliveClien ///添加请求 add(Channel channel, HttpRequest request) { container.add(request); - HostAndPort hostAndPort = channel.getAttribute(AttributeKeys.host); + HostAndPort? hostAndPort = request.hostAndPort; + if (hostAndPort == null) { + return; + } + //按照域名分类 HeaderBody? headerBody = containerMap[hostAndPort]; if (headerBody != null) { diff --git a/lib/ui/desktop/toolbar/setting/request_rewrite.dart b/lib/ui/desktop/toolbar/setting/request_rewrite.dart index 3db0d40..bcfc88b 100644 --- a/lib/ui/desktop/toolbar/setting/request_rewrite.dart +++ b/lib/ui/desktop/toolbar/setting/request_rewrite.dart @@ -279,8 +279,9 @@ class _RequestRuleListState extends State { class RuleAddDialog extends StatefulWidget { final RequestRewriteRule? rule; final List? items; + final bool newWindow; - const RuleAddDialog({super.key, this.rule, this.items}); + const RuleAddDialog({super.key, this.rule, this.items, this.newWindow = true}); @override State createState() { @@ -397,7 +398,10 @@ class _RuleAddDialogState extends State { if (index >= 0) { MultiWindow.invokeRefreshRewrite(Operation.update, index: index, rule: rule, items: items); } else { - requestRewrites.rules.add(rule); + if (widget.newWindow) { + requestRewrites.rules.add(rule); + } + MultiWindow.invokeRefreshRewrite(Operation.add, rule: rule, items: items); } if (mounted) {