mirror of
https://github.com/wanghongenpin/proxypin.git
synced 2026-03-19 05:19:47 +08:00
78 lines
2.0 KiB
Dart
78 lines
2.0 KiB
Dart
import 'package:desktop_multi_window/desktop_multi_window.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:proxypin/network/http/http.dart';
|
|
import 'package:proxypin/ui/desktop/request/request_editor.dart';
|
|
|
|
class BreakpointExecutor extends StatefulWidget {
|
|
final int? windowId;
|
|
final HttpRequest request;
|
|
final HttpResponse? response;
|
|
final String requestId;
|
|
|
|
// false: intercept request, true: intercept response
|
|
final bool isResponse;
|
|
|
|
const BreakpointExecutor({
|
|
super.key,
|
|
required this.request,
|
|
this.response,
|
|
required this.requestId,
|
|
required this.isResponse,
|
|
this.windowId,
|
|
});
|
|
|
|
@override
|
|
State<BreakpointExecutor> createState() => _BreakpointExecutorState();
|
|
}
|
|
|
|
class _BreakpointExecutorState extends State<BreakpointExecutor> {
|
|
late HttpRequest request;
|
|
late HttpResponse? response;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
request = widget.request;
|
|
response = widget.response;
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
if (widget.isResponse) {
|
|
return _buildResponseBody();
|
|
}
|
|
|
|
return RequestEditor(
|
|
request: request,
|
|
source: RequestEditorSource.breakpointRequest,
|
|
onExecuteRequest: (newRequest) async {
|
|
await DesktopMultiWindow.invokeMethod(0, 'resumeRequest', {
|
|
'requestId': widget.requestId,
|
|
'request': newRequest?.toJson(),
|
|
});
|
|
if (widget.windowId != null) {
|
|
WindowController.fromWindowId(widget.windowId!).close();
|
|
}
|
|
},
|
|
);
|
|
}
|
|
|
|
Widget _buildResponseBody() {
|
|
return RequestEditor(
|
|
request: request,
|
|
response: response,
|
|
source: RequestEditorSource.breakpointResponse,
|
|
onExecuteResponse: (newResponse) async {
|
|
await DesktopMultiWindow.invokeMethod(0, 'resumeResponse', {
|
|
'requestId': widget.requestId,
|
|
'response': newResponse?.toJson(),
|
|
});
|
|
if (widget.windowId != null) {
|
|
WindowController.fromWindowId(widget.windowId!).close();
|
|
}
|
|
},
|
|
);
|
|
}
|
|
|
|
}
|