"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/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(
|
||||||
|
|
|
||||||
|
|
@ -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 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 = '';
|
||||||
|
|
|
||||||
|
|
@ -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(),
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
),
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,4 +31,6 @@ class CreateBotAssistantsState extends CoreProvier {
|
||||||
loadingImageBots = false;
|
loadingImageBots = false;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void createAssistants() {}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue