"Removed BotAssistantsState provider, updated RequestHelper with new API endpoints, and refactored BotAssistantsPage and CreateBotAssistantsState."
This commit is contained in:
parent
fe84d36b2d
commit
9d7b607844
|
|
@ -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<Didvan> with WidgetsBindingObserver {
|
|||
ChangeNotifierProvider<CreateBotAssistantsState>(
|
||||
create: (context) => CreateBotAssistantsState(),
|
||||
),
|
||||
ChangeNotifierProvider<BotAssistantsState>(
|
||||
create: (context) => BotAssistantsState(),
|
||||
),
|
||||
],
|
||||
child: Consumer<ThemeProvider>(
|
||||
builder: (context, themeProvider, child) => Container(
|
||||
|
|
|
|||
|
|
@ -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});
|
||||
}
|
||||
|
|
@ -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<MapEntry<String, dynamic>> additions) {
|
||||
String result = '';
|
||||
|
|
|
|||
|
|
@ -108,6 +108,7 @@ class _AiChatPageState extends State<AiChatPage> {
|
|||
onBack: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
withActions: false,
|
||||
),
|
||||
key: scaffKey,
|
||||
drawer: const HoshanDrawer(),
|
||||
|
|
|
|||
|
|
@ -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<BotAssistantsPage> {
|
|||
},
|
||||
)
|
||||
: null,
|
||||
body: Consumer<BotAssistantsState>(
|
||||
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<List<BotAssistants>?>(
|
||||
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<List<BotAssistants>?>(
|
||||
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)
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -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<List<BotAssistants>?> getGlobalAssissmant() async {
|
||||
class BotAssistantsState {
|
||||
static Future<List<BotAssistants>?> getGlobalAssissmant() async {
|
||||
List<BotAssistants>? 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<List<BotAssistants>?> getMyAssissmant() async {
|
||||
static Future<List<BotAssistants>?> getMyAssissmant() async {
|
||||
List<BotAssistants>? 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';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,4 +31,6 @@ class CreateBotAssistantsState extends CoreProvier {
|
|||
loadingImageBots = false;
|
||||
update();
|
||||
}
|
||||
|
||||
void createAssistants() {}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -413,8 +413,9 @@ class _AiMessageBarState extends State<AiMessageBar> {
|
|||
),
|
||||
|
||||
onChanged: (value) {
|
||||
state.message.text = value;
|
||||
state.update();
|
||||
if (value.isEmpty || value.length == 1) {
|
||||
state.update();
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
|
|
|
|||
Loading…
Reference in New Issue