diff --git a/lib/services/agentic_services/agents/stacmodifier.dart b/lib/services/agentic_services/agents/stacmodifier.dart index b2058869..b7a1675d 100644 --- a/lib/services/agentic_services/agents/stacmodifier.dart +++ b/lib/services/agentic_services/agents/stacmodifier.dart @@ -15,7 +15,7 @@ DO NOT CHANGE ANYTHING UNLESS SPECIFICALLY ASKED TO ONLY FLutter-SDUI Representation NOTHING ELSE. DO NOT START OR END WITH TEXT, ONLY FLutter-SDUI Representatiin. """; -class SlacModifierBot extends APIDashAIAgent { +class StacModifierBot extends APIDashAIAgent { @override String get agentName => 'STAC_MODIFIER'; diff --git a/lib/widgets/ai_ui_desginer_widgets.dart b/lib/widgets/ai_ui_desginer_widgets.dart index 886e113f..08ccbf76 100644 --- a/lib/widgets/ai_ui_desginer_widgets.dart +++ b/lib/widgets/ai_ui_desginer_widgets.dart @@ -84,6 +84,27 @@ class _DialogContentsState extends ConsumerState { return sduiCode?['STAC']?.toString() ?? ""; } + Future modifySDUICode(String modificationRequest) async { + setState(() { + index = 1; //Induce Loading + }); + + final res = await APIDashAgentCaller.instance.call( + StacModifierBot(), + ref: ref, + input: AgentInputs(variables: { + 'VAR_CODE': generatedSDUI, + 'VAR_CLIENT_REQUEST': modificationRequest, + }), + ); + + final SDUI = res['STAC']; + setState(() { + generatedSDUI = SDUI; + index = 2; + }); + } + @override Widget build(BuildContext context) { return IndexedStack( @@ -105,24 +126,19 @@ class _DialogContentsState extends ConsumerState { child: Center( child: Padding( padding: const EdgeInsets.only(top: 40.0), - child: GestureDetector( - onTap: () { - // setState(() { - // index = 2; - // }); - }, - child: Container( - height: 500, - child: SendingWidget( - startSendingTime: DateTime.now(), - ), + child: Container( + height: 500, + child: SendingWidget( + startSendingTime: DateTime.now(), + showTimeElapsed: false, ), ), ), ), ), SDUIPreviewPage( - onNext: () {}, + key: ValueKey(generatedSDUI.hashCode), + onModificationRequestMade: modifySDUICode, sduiCode: generatedSDUI, ) ], @@ -248,9 +264,12 @@ class _FrameWorkSelectorPageState extends State { class SDUIPreviewPage extends ConsumerStatefulWidget { final String sduiCode; - final Function() onNext; - const SDUIPreviewPage( - {super.key, required this.onNext, required this.sduiCode}); + final Function(String) onModificationRequestMade; + const SDUIPreviewPage({ + super.key, + required this.onModificationRequestMade, + required this.sduiCode, + }); @override ConsumerState createState() => _SDUIPreviewPageState(); @@ -258,6 +277,7 @@ class SDUIPreviewPage extends ConsumerStatefulWidget { class _SDUIPreviewPageState extends ConsumerState { bool exportingCode = false; + String modificationRequest = ""; @override Widget build(BuildContext context) { @@ -303,6 +323,11 @@ class _SDUIPreviewPageState extends ConsumerState { ), ), child: TextField( + onChanged: (z) { + setState(() { + modificationRequest = z; + }); + }, maxLines: 3, // Makes the text box taller style: TextStyle(color: Colors.white), // White text decoration: InputDecoration( @@ -370,7 +395,9 @@ class _SDUIPreviewPageState extends ConsumerState { minimumSize: const Size(44, 44), ), onPressed: () { - widget.onNext(); + if (modificationRequest.isNotEmpty) { + widget.onModificationRequestMade(modificationRequest); + } }, icon: Icon( Icons.generating_tokens, diff --git a/lib/widgets/widget_sending.dart b/lib/widgets/widget_sending.dart index 8c949061..d50b7318 100644 --- a/lib/widgets/widget_sending.dart +++ b/lib/widgets/widget_sending.dart @@ -7,9 +7,11 @@ import 'package:apidash/consts.dart'; class SendingWidget extends StatefulWidget { final DateTime? startSendingTime; + final bool showTimeElapsed; const SendingWidget({ super.key, required this.startSendingTime, + this.showTimeElapsed = true, }); @override @@ -51,33 +53,34 @@ class _SendingWidgetState extends State { Center( child: Lottie.asset(kAssetSendingLottie), ), - Padding( - padding: kPh20t40, - child: Visibility( - visible: _millisecondsElapsed >= 0, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon( - Icons.alarm, - color: Theme.of(context).colorScheme.onSurfaceVariant, - ), - const SizedBox( - width: 10, - ), - Text( - 'Time elapsed: ${humanizeDuration(Duration(milliseconds: _millisecondsElapsed))}', - textAlign: TextAlign.center, - overflow: TextOverflow.fade, - softWrap: false, - style: kTextStyleButton.copyWith( + if (widget.showTimeElapsed) + Padding( + padding: kPh20t40, + child: Visibility( + visible: _millisecondsElapsed >= 0, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + Icons.alarm, color: Theme.of(context).colorScheme.onSurfaceVariant, ), - ), - ], + const SizedBox( + width: 10, + ), + Text( + 'Time elapsed: ${humanizeDuration(Duration(milliseconds: _millisecondsElapsed))}', + textAlign: TextAlign.center, + overflow: TextOverflow.fade, + softWrap: false, + style: kTextStyleButton.copyWith( + color: Theme.of(context).colorScheme.onSurfaceVariant, + ), + ), + ], + ), ), ), - ), ], ); }