AI intergration WIP

This commit is contained in:
Simon Ding
2025-01-07 10:25:52 +08:00
parent 03105a1989
commit 0954632b65
12 changed files with 725 additions and 148 deletions

View File

@@ -46,6 +46,7 @@ class APIs {
static final deleteImportlistUrl = "$_baseUrl/api/v1/importlist/delete";
static final getAllImportlists = "$_baseUrl/api/v1/importlist/";
static final prowlarrUrl = "$_baseUrl/api/v1/setting/prowlarr";
static final aiConfigUrl = "$_baseUrl/api/v1/setting/ai";
static final notifierAllUrl = "$_baseUrl/api/v1/notifier/all";
static final notifierDeleteUrl = "$_baseUrl/api/v1/notifier/id/";

View File

@@ -29,6 +29,9 @@ var prowlarrSettingDataProvider =
AsyncNotifierProvider.autoDispose<ProwlarrSettingData, ProwlarrSetting>(
ProwlarrSettingData.new);
var aiConfigDataProvider =
AsyncNotifierProvider.autoDispose<AIConfigData, AIConfig>(AIConfigData.new);
class EditSettingData extends AutoDisposeAsyncNotifier<GeneralSetting> {
@override
FutureOr<GeneralSetting> build() async {
@@ -548,3 +551,50 @@ class ProwlarrSettingData extends AutoDisposeAsyncNotifier<ProwlarrSetting> {
ref.invalidateSelf();
}
}
class AIConfigData extends AutoDisposeAsyncNotifier<AIConfig> {
@override
FutureOr<AIConfig> build() async {
final dio = APIs.getDio();
var resp = await dio.get(APIs.aiConfigUrl);
var sp = ServerResponse.fromJson(resp.data);
if (sp.code != 0) {
throw sp.message;
}
return AIConfig.fromJson(sp.data);
}
Future<void> save(AIConfig ai) async {
final dio = APIs.getDio();
var resp = await dio.post(APIs.aiConfigUrl, data: ai.toJson());
var sp = ServerResponse.fromJson(resp.data);
if (sp.code != 0) {
throw sp.message;
}
ref.invalidateSelf();
}
}
class AIConfig {
final bool enabled;
final String geminiApiKey;
final String geminiModelName;
AIConfig(
{required this.enabled,
required this.geminiApiKey,
required this.geminiModelName});
factory AIConfig.fromJson(Map<String, dynamic> json) {
return AIConfig(
enabled: json["enabled"],
geminiApiKey: json["gemini_api_key"],
geminiModelName: json["gemini_model_name"]);
}
Map<String, dynamic> toJson() => {
"enabled": enabled,
"gemini_api_key": geminiApiKey,
"gemini_model_name": geminiModelName
};
}