二次开发源码提交

This commit is contained in:
2026-05-15 08:52:48 +08:00
parent 4131f7321a
commit eb35a1d067
191 changed files with 34566 additions and 0 deletions
+170
View File
@@ -0,0 +1,170 @@
import '../config/api_config.dart';
import '../data/models/server_model.dart';
import '../data/models/user_model.dart';
import 'storage_service.dart';
import '../core/utils/app_logger.dart';
/// 服务器服务 - 固定使用内置服务器
class ServerService {
static ServerService? _instance;
ServerService._();
static ServerService get instance {
_instance ??= ServerService._();
return _instance!;
}
static const String _defaultLabel = '共云网盘';
static const String _defaultBaseUrl = ApiConfig.defaultBaseUrl;
List<ServerModel> _servers = [];
ServerModel? _currentServer;
/// 获取服务器列表
List<ServerModel> get servers => List.unmodifiable(_servers);
/// 获取当前服务器
ServerModel? get currentServer => _currentServer;
/// 初始化服务器
Future<void> init() async {
await _loadServers();
}
/// 从存储加载服务器列表
Future<void> _loadServers() async {
try {
// 从 StorageService 加载服务器列表
final loadedServers = await StorageService.instance.servers;
_setFixedDefaultServer(loadedServers);
await _saveServers();
await _saveLastSelected();
AppLogger.d('加载了 ${_servers.length} 个服务器配置');
AppLogger.d('当前服务器: ${_currentServer?.label}');
} catch (e) {
AppLogger.d('加载服务器列表失败: $e');
// 加载失败时使用默认服务器
_servers = [
ServerModel(
label: _defaultLabel,
baseUrl: _defaultBaseUrl,
),
];
_currentServer = _servers.first;
}
}
/// 固定使用内置服务器,并保留同地址服务器上的登录信息
void _setFixedDefaultServer(List<ServerModel> loadedServers) {
ServerModel? savedDefaultServer;
for (final server in loadedServers) {
if (server.baseUrl == _defaultBaseUrl) {
savedDefaultServer = server;
break;
}
}
_currentServer = (savedDefaultServer ??
ServerModel(
label: _defaultLabel,
baseUrl: _defaultBaseUrl,
))
.copyWith(
label: _defaultLabel,
baseUrl: _defaultBaseUrl,
);
_servers = [_currentServer!];
}
/// 保存服务器列表到存储
Future<void> _saveServers() async {
try {
await StorageService.instance.setServers(_servers);
AppLogger.d('已保存 ${_servers.length} 个服务器配置');
} catch (e) {
AppLogger.d('保存服务器列表失败: $e');
}
}
/// 保存上次选中的服务器
Future<void> _saveLastSelected() async {
if (_currentServer != null) {
await StorageService.instance.setLastSelectedServerLabel(_currentServer!.label);
}
}
/// 固定服务器模式下不支持添加服务器
Future<void> addServer(ServerModel server) async {
throw UnsupportedError('当前版本不支持自定义服务器');
}
/// 固定服务器模式下不支持更新服务器
Future<void> updateServer(String oldLabel, ServerModel newServer) async {
throw UnsupportedError('当前版本不支持自定义服务器');
}
/// 固定服务器模式下不支持删除服务器
Future<void> deleteServer(String label) async {
throw UnsupportedError('当前版本不支持自定义服务器');
}
/// 固定服务器模式下始终使用内置服务器
Future<void> selectServer(String label) async {
if (_currentServer == null || _currentServer!.baseUrl != _defaultBaseUrl) {
_setFixedDefaultServer(_servers);
}
await _saveLastSelected();
AppLogger.d('当前服务器: ${_currentServer?.label}');
}
/// 更新当前服务器的服务登录信息
Future<void> updateCurrentServerLogin({
String? email,
String? password,
UserModel? user,
bool? rememberMe,
}) async {
if (_currentServer == null) {
throw Exception('没有选中的服务器');
}
_currentServer = _currentServer!.copyWith(
email: email,
password: password,
user: user,
rememberMe: rememberMe ?? _currentServer!.rememberMe,
);
// 更新列表中的引用
final index = _servers.indexWhere((s) => s.label == _currentServer!.label);
if (index != -1) {
_servers[index] = _currentServer!;
}
await _saveServers();
}
/// 清除当前服务器的服务登录信息
Future<void> clearCurrentServerLogin() async {
await updateCurrentServerLogin(
email: null,
password: null,
user: null,
);
}
/// 重置为默认服务器列表
Future<void> resetToDefault() async {
_servers = [
ServerModel(
label: _defaultLabel,
baseUrl: _defaultBaseUrl,
),
];
_currentServer = _servers.first;
await _saveServers();
await _saveLastSelected();
}
}