Files
MaliangAINovalWriter/AINoval/lib/blocs/ai_config/ai_config_event.dart
2025-09-10 00:07:52 +08:00

189 lines
4.7 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

part of 'ai_config_bloc.dart';
abstract class AiConfigEvent extends Equatable {
const AiConfigEvent();
@override
List<Object?> get props => [];
}
/// 加载所有配置
class LoadAiConfigs extends AiConfigEvent {
// 实际应用中应从认证状态获取
final String userId;
const LoadAiConfigs({required this.userId});
@override
List<Object?> get props => [userId];
}
/// 加载可用提供商
class LoadAvailableProviders extends AiConfigEvent {
const LoadAvailableProviders();
}
/// 加载指定提供商的模型
class LoadModelsForProvider extends AiConfigEvent {
final String provider;
const LoadModelsForProvider({required this.provider});
@override
List<Object?> get props => [provider];
}
/// 添加配置
class AddAiConfig extends AiConfigEvent {
final String userId;
final String provider;
final String modelName;
final String apiKey;
final String? alias;
final String? apiEndpoint;
const AddAiConfig({
required this.userId,
required this.provider,
required this.modelName,
required this.apiKey,
this.alias,
this.apiEndpoint,
});
@override
List<Object?> get props => [userId, provider, modelName, apiKey, alias, apiEndpoint];
}
/// 更新配置
class UpdateAiConfig extends AiConfigEvent {
final String userId;
final String configId;
final String? alias;
final String? apiKey;
final String? apiEndpoint;
const UpdateAiConfig({
required this.userId,
required this.configId,
this.alias,
this.apiKey,
this.apiEndpoint,
});
@override
List<Object?> get props => [userId, configId, alias, apiKey, apiEndpoint];
}
/// 删除配置
class DeleteAiConfig extends AiConfigEvent {
final String userId;
final String configId;
const DeleteAiConfig({required this.userId, required this.configId});
@override
List<Object?> get props => [userId, configId];
}
/// 验证配置
class ValidateAiConfig extends AiConfigEvent {
final String userId;
final String configId;
const ValidateAiConfig({required this.userId, required this.configId});
@override
List<Object?> get props => [userId, configId];
}
/// 设置默认配置
class SetDefaultAiConfig extends AiConfigEvent {
final String userId;
final String configId;
const SetDefaultAiConfig({required this.userId, required this.configId});
@override
List<Object?> get props => [userId, configId];
}
/// 清除提供商/模型列表(例如,关闭对话框时)
class ClearProviderModels extends AiConfigEvent {
const ClearProviderModels();
}
/// 获取提供商默认配置
class GetProviderDefaultConfig extends AiConfigEvent {
final String provider;
const GetProviderDefaultConfig({required this.provider});
@override
List<Object?> get props => [provider];
}
/// 加载指定配置的API密钥
class LoadApiKeyForConfig extends AiConfigEvent {
final String configId;
final ValueGetter<void> onApiKeyLoaded; // Callback to return the key
const LoadApiKeyForConfig({required this.configId, required this.onApiKeyLoaded});
@override
List<Object?> get props => [configId];
}
// --- New Events for Dynamic Loading & Validation ---
// Event to fetch the capability of a specific provider
class LoadProviderCapability extends AiConfigEvent {
final String providerName;
const LoadProviderCapability({required this.providerName});
@override
List<Object?> get props => [providerName];
}
// Event to test the API key for a specific provider
class TestApiKey extends AiConfigEvent {
final String providerName;
final String apiKey;
final String? apiEndpoint;
const TestApiKey({
required this.providerName,
required this.apiKey,
this.apiEndpoint,
});
@override
List<Object?> get props => [providerName, apiKey, apiEndpoint];
}
/// 清除API密钥测试错误状态
class ClearApiKeyTestError extends AiConfigEvent {
const ClearApiKeyTestError();
}
/// 清除模型列表缓存
class ClearModelsCache extends AiConfigEvent {
final String? provider; // 如果为null则清除所有缓存
const ClearModelsCache({this.provider});
@override
List<Object?> get props => [provider];
}
/// 添加自定义模型并立即验证
class AddCustomModelAndValidate extends AiConfigEvent {
final String userId;
final String provider;
final String modelName;
final String apiKey;
final String? alias;
final String? apiEndpoint;
const AddCustomModelAndValidate({
required this.userId,
required this.provider,
required this.modelName,
required this.apiKey,
this.alias,
this.apiEndpoint,
});
@override
List<Object?> get props => [userId, provider, modelName, apiKey, alias, apiEndpoint];
}
/// 重置AI配置状态与缓存用于登出/切换账号)
class ResetAiConfigs extends AiConfigEvent {
const ResetAiConfigs();
}