loadApiConfig method
Implementation
Future<ApiConfig?> loadApiConfig() async {
final prefs = await SharedPreferences.getInstance();
final typeStr = prefs.getString(_providerTypeKey);
SintSentinel.logger.d('Loading API config for provider: $typeStr');
if (typeStr == null) {
final apiKey = await getGeminiApiKey();
if (apiKey == null) {
SintSentinel.logger.w('No API key found for gemini (default)');
return null;
}
return ApiConfig.gemini(apiKey: apiKey);
}
final type = ApiProviderType.values.firstWhere(
(t) => t.name == typeStr,
orElse: () => ApiProviderType.gemini,
);
final model = prefs.getString(_modelKey) ?? defaultModel(type);
final baseUrl = prefs.getString(_baseUrlKey);
switch (type) {
case ApiProviderType.gemini:
final apiKey = await getGeminiApiKey();
if (apiKey == null) return null;
return ApiConfig.gemini(apiKey: apiKey, model: model);
case ApiProviderType.qwen:
final apiKey = await getQwenApiKey();
if (apiKey == null) return null;
return ApiConfig.qwen(apiKey: apiKey, model: model);
case ApiProviderType.anthropic:
final apiKey = await getAnthropicApiKey();
if (apiKey == null) return null;
return ApiConfig.anthropic(apiKey: apiKey, model: model);
case ApiProviderType.openai:
final apiKey = await getOpenAiApiKey();
return ApiConfig.openai(
apiKey: apiKey,
model: model,
baseUrl: baseUrl ?? 'https://api.openai.com/v1',
);
case ApiProviderType.deepseek:
final apiKey = await getDeepSeekApiKey();
if (apiKey == null) return null;
return ApiConfig.deepseek(apiKey: apiKey, model: model);
case ApiProviderType.ollama:
return ApiConfig.ollama(
model: model,
baseUrl: baseUrl ?? 'http://localhost:11434/v1',
);
case ApiProviderType.custom:
case ApiProviderType.bedrock:
case ApiProviderType.vertex:
final apiKey = await getApiKeyForProvider(type);
return ApiConfig(
type: type,
baseUrl: baseUrl ?? 'https://api.openai.com/v1',
apiKey: apiKey,
model: model,
);
}
}