"Removed BotAssistantsState provider, updated RequestHelper with new API endpoints, and refactored BotAssistantsPage and CreateBotAssistantsState."

This commit is contained in:
OkaykOrhmn 2024-11-14 11:56:30 +03:30
parent fe84d36b2d
commit 9d7b607844
8 changed files with 74 additions and 55 deletions

View File

@ -19,7 +19,6 @@ import 'package:didvan/services/notification/firebase_api.dart';
import 'package:didvan/services/notification/notification_service.dart'; import 'package:didvan/services/notification/notification_service.dart';
import 'package:didvan/utils/my_custom_scroll_behavior.dart'; import 'package:didvan/utils/my_custom_scroll_behavior.dart';
import 'package:didvan/views/ai/ai_state.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/create_bot_assistants_state.dart';
import 'package:didvan/views/ai/history_ai_chat_state.dart'; import 'package:didvan/views/ai/history_ai_chat_state.dart';
import 'package:didvan/views/ai/tools_state.dart'; import 'package:didvan/views/ai/tools_state.dart';
@ -183,9 +182,6 @@ class _DidvanState extends State<Didvan> with WidgetsBindingObserver {
ChangeNotifierProvider<CreateBotAssistantsState>( ChangeNotifierProvider<CreateBotAssistantsState>(
create: (context) => CreateBotAssistantsState(), create: (context) => CreateBotAssistantsState(),
), ),
ChangeNotifierProvider<BotAssistantsState>(
create: (context) => BotAssistantsState(),
),
], ],
child: Consumer<ThemeProvider>( child: Consumer<ThemeProvider>(
builder: (context, themeProvider, child) => Container( builder: (context, themeProvider, child) => Container(

View File

@ -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<XFile>? files;
final String? youtubeLink;
final List<String>? 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});
}

View File

@ -230,7 +230,12 @@ class RequestHelper {
static String archivedChat(int id) => '$baseUrl/ai/chat/$id/archive'; static String archivedChat(int id) => '$baseUrl/ai/chat/$id/archive';
static String placeholder(int id) => '$baseUrl/ai/chat/$id/placeholder'; static String placeholder(int id) => '$baseUrl/ai/chat/$id/placeholder';
static String tools() => '$baseUrl/ai/tool'; 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<MapEntry<String, dynamic>> additions) { static String _urlConcatGenerator(List<MapEntry<String, dynamic>> additions) {
String result = ''; String result = '';

View File

@ -108,6 +108,7 @@ class _AiChatPageState extends State<AiChatPage> {
onBack: () { onBack: () {
Navigator.pop(context); Navigator.pop(context);
}, },
withActions: false,
), ),
key: scaffKey, key: scaffKey,
drawer: const HoshanDrawer(), drawer: const HoshanDrawer(),

View File

@ -13,7 +13,6 @@ import 'package:didvan/views/widgets/skeleton_image.dart';
import 'package:didvan/views/widgets/state_handlers/empty_list.dart'; import 'package:didvan/views/widgets/state_handlers/empty_list.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:persian_number_utility/persian_number_utility.dart'; import 'package:persian_number_utility/persian_number_utility.dart';
import 'package:provider/provider.dart';
class BotAssistantsPage extends StatefulWidget { class BotAssistantsPage extends StatefulWidget {
const BotAssistantsPage({Key? key}) : super(key: key); const BotAssistantsPage({Key? key}) : super(key: key);
@ -49,43 +48,39 @@ class _BotAssistantsPageState extends State<BotAssistantsPage> {
}, },
) )
: null, : null,
body: Consumer<BotAssistantsState>( body: SingleChildScrollView(
builder: physics: const BouncingScrollPhysics(),
(BuildContext context, BotAssistantsState state, Widget? child) => child: Column(
SingleChildScrollView( crossAxisAlignment: CrossAxisAlignment.center,
physics: const BouncingScrollPhysics(), children: [
child: Column( const Center(
crossAxisAlignment: CrossAxisAlignment.center, child: Padding(
children: [ padding: EdgeInsets.only(top: 32, bottom: 24),
const Center( child: DidvanText(
child: Padding( 'انتخاب بات‌ها',
padding: EdgeInsets.only(top: 32, bottom: 24), fontSize: 20,
child: DidvanText( fontWeight: FontWeight.bold,
'انتخاب بات‌ها', color: Color(0xff1B3C59),
fontSize: 20,
fontWeight: FontWeight.bold,
color: Color(0xff1B3C59),
),
), ),
), ),
switchAssistants(context), ),
FutureBuilder<List<BotAssistants>?>( switchAssistants(context),
future: state.getGlobalAssissmant(), FutureBuilder<List<BotAssistants>?>(
builder: (context, snapshot) { future: isMyAssistants
if (!snapshot.hasData) { ? BotAssistantsState.getMyAssissmant()
return listOfAssistantsPlaceHolder(); : BotAssistantsState.getGlobalAssissmant(),
} builder: (context, snapshot) {
if ((snapshot.hasData && snapshot.data == null) || if (snapshot.hasError) {
(snapshot.hasData && return const EmptyList();
snapshot.data != null && }
snapshot.data!.isEmpty)) { if (!snapshot.hasData) {
return const EmptyList(); return listOfAssistantsPlaceHolder();
} }
return listOfAssistants(list: snapshot.data!);
}), return listOfAssistants(list: snapshot.data!);
if (isMyAssistants) const SizedBox(height: 72) }),
], if (isMyAssistants) const SizedBox(height: 72)
), ],
), ),
), ),
); );

View File

@ -1,11 +1,10 @@
import 'package:didvan/models/ai/bot_assistants_model.dart'; 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.dart';
import 'package:didvan/services/network/request_helper.dart'; import 'package:didvan/services/network/request_helper.dart';
class BotAssistantsState extends CoreProvier { class BotAssistantsState {
Future<List<BotAssistants>?> getGlobalAssissmant() async { static Future<List<BotAssistants>?> getGlobalAssissmant() async {
List<BotAssistants>? globalAssissmant; List<BotAssistants>? globalAssissmant;
final service = RequestService( final service = RequestService(
@ -16,28 +15,24 @@ class BotAssistantsState extends CoreProvier {
final BotAssistantsModel toolsModel = final BotAssistantsModel toolsModel =
BotAssistantsModel.fromJson(service.result); BotAssistantsModel.fromJson(service.result);
globalAssissmant = toolsModel.botAssistants!; globalAssissmant = toolsModel.botAssistants!;
appState = AppState.idle;
return globalAssissmant; return globalAssissmant;
} }
appState = AppState.failed; throw 'err';
return globalAssissmant;
} }
Future<List<BotAssistants>?> getMyAssissmant() async { static Future<List<BotAssistants>?> getMyAssissmant() async {
List<BotAssistants>? globalAssissmant; List<BotAssistants>? globalAssissmant;
final service = RequestService( final service = RequestService(
RequestHelper.usersAssistants(), RequestHelper.usersAssistants(personal: true),
); );
await service.httpGet(); await service.httpGet();
if (service.isSuccess) { if (service.isSuccess) {
final BotAssistantsModel toolsModel = final BotAssistantsModel toolsModel =
BotAssistantsModel.fromJson(service.result); BotAssistantsModel.fromJson(service.result);
globalAssissmant = toolsModel.botAssistants!; globalAssissmant = toolsModel.botAssistants!;
appState = AppState.idle;
return globalAssissmant; return globalAssissmant;
} }
appState = AppState.failed; throw 'err';
return globalAssissmant;
} }
} }

View File

@ -31,4 +31,6 @@ class CreateBotAssistantsState extends CoreProvier {
loadingImageBots = false; loadingImageBots = false;
update(); update();
} }
void createAssistants() {}
} }

View File

@ -413,8 +413,9 @@ class _AiMessageBarState extends State<AiMessageBar> {
), ),
onChanged: (value) { onChanged: (value) {
state.message.text = value; if (value.isEmpty || value.length == 1) {
state.update(); state.update();
}
}, },
), ),
), ),