diff --git a/lib/providers/collection_providers.dart b/lib/providers/collection_providers.dart index 35bc4aa0..51dd0a38 100644 --- a/lib/providers/collection_providers.dart +++ b/lib/providers/collection_providers.dart @@ -223,6 +223,8 @@ class CollectionStateNotifier int? responseStatus, String? message, HttpResponseModel? httpResponseModel, + String? preRequestScript, + String? postRequestScript, }) { final rId = id ?? ref.read(selectedIdStateProvider); if (rId == null) { @@ -254,6 +256,8 @@ class CollectionStateNotifier responseStatus: responseStatus ?? currentModel.responseStatus, message: message ?? currentModel.message, httpResponseModel: httpResponseModel ?? currentModel.httpResponseModel, + preRequestScript: preRequestScript ?? currentModel.preRequestScript, + postRequestScript: postRequestScript ?? currentModel.postRequestScript, ); var map = {...state!}; diff --git a/lib/screens/home_page/editor_pane/details_card/request_pane/scripts_code_pane.dart b/lib/screens/home_page/editor_pane/details_card/request_pane/scripts_code_pane.dart index 9702fdb7..35a91691 100644 --- a/lib/screens/home_page/editor_pane/details_card/request_pane/scripts_code_pane.dart +++ b/lib/screens/home_page/editor_pane/details_card/request_pane/scripts_code_pane.dart @@ -1,28 +1,45 @@ import 'package:apidash/widgets/scripts_editor_pane.dart'; import 'package:flutter/material.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:apidash/providers/providers.dart'; -class ScriptsCodePane extends StatefulWidget { +class ScriptsCodePane extends ConsumerStatefulWidget { const ScriptsCodePane({super.key}); @override - State createState() => _ScriptsCodePaneState(); + ConsumerState createState() => _ScriptsCodePaneState(); } -class _ScriptsCodePaneState extends State { - int _selectedTabIndex = 0; - final preReqCodeController = CodeController( - text: '// Use javascript to modify this request dynamically', - language: javascript, - ); - final postResCodeController = CodeController( - text: '...', - language: javascript, - ); - +class _ScriptsCodePaneState extends ConsumerState { @override Widget build(BuildContext context) { + int _selectedTabIndex = 0; + final requestModel = ref.read(selectedRequestModelProvider); + + final preReqCodeController = CodeController( + text: requestModel?.preRequestScript, + language: javascript, + ); + + final postResCodeController = CodeController( + 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 content = [ ScriptsEditorPane(