diff --git a/lib/main.dart b/lib/main.dart index 6173056..6fc951f 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -19,7 +19,6 @@ import 'package:didvan/services/notification/firebase_api.dart'; import 'package:didvan/services/notification/notification_service.dart'; import 'package:didvan/utils/my_custom_scroll_behavior.dart'; import 'package:didvan/views/ai/ai_state.dart'; -import 'package:didvan/views/ai/bot_assistants_state.dart'; import 'package:didvan/views/ai/create_bot_assistants_state.dart'; import 'package:didvan/views/ai/history_ai_chat_state.dart'; import 'package:didvan/views/ai/tools_state.dart'; @@ -183,9 +182,6 @@ class _DidvanState extends State with WidgetsBindingObserver { ChangeNotifierProvider( create: (context) => CreateBotAssistantsState(), ), - ChangeNotifierProvider( - create: (context) => BotAssistantsState(), - ), ], child: Consumer( builder: (context, themeProvider, child) => Container( diff --git a/lib/models/ai/bot_assistants_req_model.dart b/lib/models/ai/bot_assistants_req_model.dart new file mode 100644 index 0000000..fe5bd3e --- /dev/null +++ b/lib/models/ai/bot_assistants_req_model.dart @@ -0,0 +1,24 @@ +import 'package:image_picker/image_picker.dart'; + +class BotAssistantsReqModel { + final String type; + final XFile? image; + final String name; + final int botId; + final String prompt; + final List? files; + final String? youtubeLink; + final List? webLinks; + final bool isPrivate; + + BotAssistantsReqModel( + {required this.type, + required this.name, + required this.botId, + required this.prompt, + this.image, + this.files, + this.youtubeLink, + this.webLinks, + this.isPrivate = true}); +} diff --git a/lib/services/network/request_helper.dart b/lib/services/network/request_helper.dart index 74b3ead..33011bd 100644 --- a/lib/services/network/request_helper.dart +++ b/lib/services/network/request_helper.dart @@ -230,7 +230,12 @@ class RequestHelper { static String archivedChat(int id) => '$baseUrl/ai/chat/$id/archive'; static String placeholder(int id) => '$baseUrl/ai/chat/$id/placeholder'; static String tools() => '$baseUrl/ai/tool'; - static String usersAssistants() => '$baseUrl/ai/bot/user'; + static String usersAssistants({final bool personal = false}) => + '$baseUrl/ai/bot/user${_urlConcatGenerator([ + MapEntry('personal', personal), + ])}'; + static String createAssistants() => '$baseUrl/ai/bot'; + static String updateAssistants(int id) => '$baseUrl/ai/bot/$id'; static String _urlConcatGenerator(List> additions) { String result = ''; diff --git a/lib/views/ai/ai_chat_page.dart b/lib/views/ai/ai_chat_page.dart index fe10618..064f249 100644 --- a/lib/views/ai/ai_chat_page.dart +++ b/lib/views/ai/ai_chat_page.dart @@ -108,6 +108,7 @@ class _AiChatPageState extends State { onBack: () { Navigator.pop(context); }, + withActions: false, ), key: scaffKey, drawer: const HoshanDrawer(), diff --git a/lib/views/ai/bot_assistants_page.dart b/lib/views/ai/bot_assistants_page.dart index 56ea9df..8fed8ab 100644 --- a/lib/views/ai/bot_assistants_page.dart +++ b/lib/views/ai/bot_assistants_page.dart @@ -13,7 +13,6 @@ import 'package:didvan/views/widgets/skeleton_image.dart'; import 'package:didvan/views/widgets/state_handlers/empty_list.dart'; import 'package:flutter/material.dart'; import 'package:persian_number_utility/persian_number_utility.dart'; -import 'package:provider/provider.dart'; class BotAssistantsPage extends StatefulWidget { const BotAssistantsPage({Key? key}) : super(key: key); @@ -49,43 +48,39 @@ class _BotAssistantsPageState extends State { }, ) : null, - body: Consumer( - builder: - (BuildContext context, BotAssistantsState state, Widget? child) => - SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - const Center( - child: Padding( - padding: EdgeInsets.only(top: 32, bottom: 24), - child: DidvanText( - 'انتخاب بات‌ها', - fontSize: 20, - fontWeight: FontWeight.bold, - color: Color(0xff1B3C59), - ), + body: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const Center( + child: Padding( + padding: EdgeInsets.only(top: 32, bottom: 24), + child: DidvanText( + 'انتخاب بات‌ها', + fontSize: 20, + fontWeight: FontWeight.bold, + color: Color(0xff1B3C59), ), ), - switchAssistants(context), - FutureBuilder?>( - future: state.getGlobalAssissmant(), - builder: (context, snapshot) { - if (!snapshot.hasData) { - return listOfAssistantsPlaceHolder(); - } - if ((snapshot.hasData && snapshot.data == null) || - (snapshot.hasData && - snapshot.data != null && - snapshot.data!.isEmpty)) { - return const EmptyList(); - } - return listOfAssistants(list: snapshot.data!); - }), - if (isMyAssistants) const SizedBox(height: 72) - ], - ), + ), + switchAssistants(context), + FutureBuilder?>( + future: isMyAssistants + ? BotAssistantsState.getMyAssissmant() + : BotAssistantsState.getGlobalAssissmant(), + builder: (context, snapshot) { + if (snapshot.hasError) { + return const EmptyList(); + } + if (!snapshot.hasData) { + return listOfAssistantsPlaceHolder(); + } + + return listOfAssistants(list: snapshot.data!); + }), + if (isMyAssistants) const SizedBox(height: 72) + ], ), ), ); diff --git a/lib/views/ai/bot_assistants_state.dart b/lib/views/ai/bot_assistants_state.dart index 8f46cba..3542929 100644 --- a/lib/views/ai/bot_assistants_state.dart +++ b/lib/views/ai/bot_assistants_state.dart @@ -1,11 +1,10 @@ import 'package:didvan/models/ai/bot_assistants_model.dart'; -import 'package:didvan/models/enums.dart'; -import 'package:didvan/providers/core.dart'; + import 'package:didvan/services/network/request.dart'; import 'package:didvan/services/network/request_helper.dart'; -class BotAssistantsState extends CoreProvier { - Future?> getGlobalAssissmant() async { +class BotAssistantsState { + static Future?> getGlobalAssissmant() async { List? globalAssissmant; final service = RequestService( @@ -16,28 +15,24 @@ class BotAssistantsState extends CoreProvier { final BotAssistantsModel toolsModel = BotAssistantsModel.fromJson(service.result); globalAssissmant = toolsModel.botAssistants!; - appState = AppState.idle; return globalAssissmant; } - appState = AppState.failed; - return globalAssissmant; + throw 'err'; } - Future?> getMyAssissmant() async { + static Future?> getMyAssissmant() async { List? globalAssissmant; final service = RequestService( - RequestHelper.usersAssistants(), + RequestHelper.usersAssistants(personal: true), ); await service.httpGet(); if (service.isSuccess) { final BotAssistantsModel toolsModel = BotAssistantsModel.fromJson(service.result); globalAssissmant = toolsModel.botAssistants!; - appState = AppState.idle; return globalAssissmant; } - appState = AppState.failed; - return globalAssissmant; + throw 'err'; } } diff --git a/lib/views/ai/create_bot_assistants_state.dart b/lib/views/ai/create_bot_assistants_state.dart index c90f05e..8cb15c6 100644 --- a/lib/views/ai/create_bot_assistants_state.dart +++ b/lib/views/ai/create_bot_assistants_state.dart @@ -31,4 +31,6 @@ class CreateBotAssistantsState extends CoreProvier { loadingImageBots = false; update(); } + + void createAssistants() {} } diff --git a/lib/views/ai/widgets/ai_message_bar.dart b/lib/views/ai/widgets/ai_message_bar.dart index ae985cd..24fa330 100644 --- a/lib/views/ai/widgets/ai_message_bar.dart +++ b/lib/views/ai/widgets/ai_message_bar.dart @@ -413,8 +413,9 @@ class _AiMessageBarState extends State { ), onChanged: (value) { - state.message.text = value; - state.update(); + if (value.isEmpty || value.length == 1) { + state.update(); + } }, ), ),