mirror of
https://github.com/foss42/apidash.git
synced 2025-12-03 19:39:25 +08:00
feat: adds pre/post-request script editing
Updates request model state management to include pre-request and post-request script fields. Connects the script editor UI to the state notifier, allowing script changes to be persisted.
This commit is contained in:
@@ -223,6 +223,8 @@ class CollectionStateNotifier
|
|||||||
int? responseStatus,
|
int? responseStatus,
|
||||||
String? message,
|
String? message,
|
||||||
HttpResponseModel? httpResponseModel,
|
HttpResponseModel? httpResponseModel,
|
||||||
|
String? preRequestScript,
|
||||||
|
String? postRequestScript,
|
||||||
}) {
|
}) {
|
||||||
final rId = id ?? ref.read(selectedIdStateProvider);
|
final rId = id ?? ref.read(selectedIdStateProvider);
|
||||||
if (rId == null) {
|
if (rId == null) {
|
||||||
@@ -254,6 +256,8 @@ class CollectionStateNotifier
|
|||||||
responseStatus: responseStatus ?? currentModel.responseStatus,
|
responseStatus: responseStatus ?? currentModel.responseStatus,
|
||||||
message: message ?? currentModel.message,
|
message: message ?? currentModel.message,
|
||||||
httpResponseModel: httpResponseModel ?? currentModel.httpResponseModel,
|
httpResponseModel: httpResponseModel ?? currentModel.httpResponseModel,
|
||||||
|
preRequestScript: preRequestScript ?? currentModel.preRequestScript,
|
||||||
|
postRequestScript: postRequestScript ?? currentModel.postRequestScript,
|
||||||
);
|
);
|
||||||
|
|
||||||
var map = {...state!};
|
var map = {...state!};
|
||||||
|
|||||||
@@ -1,28 +1,45 @@
|
|||||||
import 'package:apidash/widgets/scripts_editor_pane.dart';
|
import 'package:apidash/widgets/scripts_editor_pane.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_code_editor/flutter_code_editor.dart';
|
import 'package:flutter_code_editor/flutter_code_editor.dart';
|
||||||
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:highlight/languages/javascript.dart';
|
import 'package:highlight/languages/javascript.dart';
|
||||||
|
import 'package:apidash/providers/providers.dart';
|
||||||
|
|
||||||
class ScriptsCodePane extends StatefulWidget {
|
class ScriptsCodePane extends ConsumerStatefulWidget {
|
||||||
const ScriptsCodePane({super.key});
|
const ScriptsCodePane({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<ScriptsCodePane> createState() => _ScriptsCodePaneState();
|
ConsumerState<ScriptsCodePane> createState() => _ScriptsCodePaneState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _ScriptsCodePaneState extends State<ScriptsCodePane> {
|
class _ScriptsCodePaneState extends ConsumerState<ScriptsCodePane> {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
int _selectedTabIndex = 0;
|
int _selectedTabIndex = 0;
|
||||||
|
final requestModel = ref.read(selectedRequestModelProvider);
|
||||||
|
|
||||||
final preReqCodeController = CodeController(
|
final preReqCodeController = CodeController(
|
||||||
text: '// Use javascript to modify this request dynamically',
|
text: requestModel?.preRequestScript,
|
||||||
language: javascript,
|
|
||||||
);
|
|
||||||
final postResCodeController = CodeController(
|
|
||||||
text: '...',
|
|
||||||
language: javascript,
|
language: javascript,
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
final postResCodeController = CodeController(
|
||||||
Widget build(BuildContext context) {
|
text: requestModel?.postRequestScript,
|
||||||
|
language: javascript,
|
||||||
|
);
|
||||||
|
|
||||||
|
preReqCodeController.addListener(() {
|
||||||
|
ref.read(collectionStateNotifierProvider.notifier).update(
|
||||||
|
preRequestScript: preReqCodeController.text,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
postResCodeController.addListener(() {
|
||||||
|
ref.read(collectionStateNotifierProvider.notifier).update(
|
||||||
|
postRequestScript: postResCodeController.text,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
final tabs = ["Pre-Req", "Post-Res"];
|
final tabs = ["Pre-Req", "Post-Res"];
|
||||||
final content = [
|
final content = [
|
||||||
ScriptsEditorPane(
|
ScriptsEditorPane(
|
||||||
|
|||||||
Reference in New Issue
Block a user